[发明专利]基于操作码替换与合并的Python脚本程序防逆转方法有效
申请号: | 201611122610.4 | 申请日: | 2016-12-08 |
公开(公告)号: | CN106503496B | 公开(公告)日: | 2019-03-19 |
发明(设计)人: | 顾乃杰;王小强;陈悟;王岩 | 申请(专利权)人: | 合肥康捷信息科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F8/41 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 陆丽莉;何梅生 |
地址: | 230000 安徽省合肥市望江西路和创新大*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于操作码替换与合并的Python脚本程序防逆转方法,包括:1分析Python解释器、虚拟机中操作码的生成和执行逻辑;2更改操作码映射(opcode.h)单元;3分析编译生成的字节码文件中操作码序列中的基本块信息;4定义新的操作码;5更改窥孔优化(peephole.h)单元,对处于同一个基本块中的两个(或者两个以上的)操作码进行合并为一个新的操作码;6更改虚拟机(ceval.h)单元,以支持对新操作码的解释执行;7Python虚拟机判定操作码值,从操作码值得知是替换与合并之后的操作码,采用对应的解释过程对其进行解释执行;8Python脚本程序正常执行。 | ||
搜索关键词: | 基于 操作 替换 合并 python 脚本 程序 逆转 方法 | ||
【主权项】:
1.一种基于操作码替换与合并的Python脚本程序防逆转方法,是应用于Python源码文件中,所述Python源码文件中包含opcode.h文件、peephole.c文件和ceval.c文件:所述操作码为所述opcode.h文件中的n个自然数;所述n个自然数分别对应于n个虚拟机操作;定义所述n个虚拟机操作的集合为:OP={op1,op2,…,opi,…,opn},opi表示第i个虚拟机操作;定义所述n个操作码的集合为CODE={code1,code2,…,codei,…,coden},codei表示第i个操作码,且第i个虚拟机操作opi对应于第i个操作码codei;所述n个操作码分为带参数的操作码和不带参数的操作码,假设所有不带参数的操作码为前a个操作码,即{code1,code2,…,codea};所有带参数的操作码为剩余n‑a个操作码,即{codea+1,codea+2,…,coden},1≤i≤n;定义操作码序列S是一串由m个操作码和k个参数组成的序列;定义基本块为所述操作码序列S中若干个顺序执行的操作码所构成的子序列;定义所述操作码序列S的基本块信息BS是一个长度为m的序列;所述基本块信息BS中的每个元素与所述操作码序列S中的m个操作码一一对应,所述基本块信息BS中的每个元素值为其对应的操作码在所述操作码序列S中的基本块序号;其特征是,所述Python脚本程序防逆转方法是按如下步骤进行:步骤1、替换操作;步骤1.1、在所述前a个操作码{code1,code2,…,codea}中去除和“SLICE”相关的操作码后,将剩余的操作码的顺序进行随机交换,得到所有不带参数的操作码的新子集sub1;所述和“SLICE”相关的操作码有SLICE、STORE_SLICE、DELETE_SLICE对应的操作码值;步骤1.2、在所述剩余n‑a个带参数的操作码{codea+1,codea+2,…,coden}中去除和“FUNCTION”相关的操作码后,将剩余的操作码的顺序进行随机交换,得到所有带参数的操作码的新子集sub2;所述和“FUNCTION”相关的操作码有CALL_FUNCTION、MAKE_FUNCTION、CALL_FUNCTION_VAR、CALL_FUNCTION_KW、CALL_FUNCTION_VAR_KW对应的操作码值;步骤1.3、由所有不带参数的操作码的新子集sub1和所有带参数的操作码的新子集sub2构成操作码替换的集合,记为CODE′={code′1,code′2,…,code′i,…,code′n},code′i表示第i个操作的替换码,所述操作码替换的集合CODE′中至少存在一个元素不属于所述n个操作码的集合CODE;步骤1.4、在所述opcode.h文件中利用所述操作码替换的集合CODE′替换所述n个操作码的集合CODE;步骤2、合并操作步骤2.1、从字节码文件中提取所述操作码序列S和基本块信息BS并进行分析,得到操作码对在所述字节码文件中出现频率的降序排序;步骤2.2、选取排序为前W个的操作码对,将前W个的操作码对中每一个操作码对(codei,codej)进行合并,形成一个新的操作码codei+j;1≤i≠j≤n;步骤2.2.1、在所述opcode.h文件添加所述前W个的操作码对的定义和语义信息;步骤2.2.2、在所述peephole.c文件中添加对所述前W个的操作码的合并过程;步骤2.2.3、在所述ceval.c文件中添加对所述前W个的操作码的解释过程;步骤3、利用gcc重新编译经上述步骤1‑步骤2形成的新的Python源码文件,生成新的Python脚本运行环境new_python,作为Python脚本程序的防逆转环境。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥康捷信息科技有限公司,未经合肥康捷信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201611122610.4/,转载请声明来源钻瓜专利网。
- 上一篇:包含成角度的刷子的牙齿的清洁工具
- 下一篇:滤器装置