[发明专利]一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法有效

专利信息
申请号: 201611009334.0 申请日: 2016-11-16
公开(公告)号: CN106650340B 公开(公告)日: 2019-12-06
发明(设计)人: 张怡;吴蒙;糜娴雅;徐彬彬;唐勇;杨强;解炜;周旭 申请(专利权)人: 中国人民解放军国防科学技术大学
主分类号: G06F21/14 分类号: G06F21/14;G06F21/12
代理公司: 43008 湖南兆弘专利事务所(普通合伙) 代理人: 周长清<国际申请>=<国际公布>=<进入
地址: 410073 湖南省长沙市砚瓦池正街4*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 采用 动态 细粒度 代码 隐藏 混淆 技术 二进制 软件 保护 方法
【权利要求书】:

1.一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法,其特征在于,步骤为:

S1:选择隐藏目标;以基本块为单位,在目标程序中选择待隐藏的代码块;

S2:隐藏选择的基本块;针对每个待隐藏基本块,将原来的一段代码替换为一个分配器函数调用,并在剩余的位置填充其它混淆指令;

S3:重新打包代码;新建一个代码段用来保存所有的附加逻辑及数据;

所述步骤S2中,所述分配器函数的处理流程为:

S201:保存状态;对代码进行语义等价变换,使生成的代码执行前和原代码的执行前的状态完全相同,也就是使所有寄存器及堆栈的状态不发生改变,将寄存器状态保存在堆栈中;

S202:加锁;在生成代码前对将要生成代码在代码缓存中的位置进行加锁,将这块代码缓存冻结,加锁信息保存在一个全局列表中;

S203:生成代码;根据栈中保存的返回地址在隐藏代码信息表中得到待生成的基本块的内存位置,然后将其解密到代码缓存;

S204:恢复状态;恢 复代码执行前的状态;

S205:执行代码;跳转到生成的代码处执行,执行完毕后返回到分配器继续执行,确保解锁信息和下一条指令的地址已存放在栈中;

S206:保存状态;保存代码执行后的状态;

S207:解锁;根据执行代码时入栈的解锁信息,回收当前已分配的代码缓存空间;

S208:恢复状态;恢复代码执行后的状态;

S209:返回;根据堆栈中的返回地址返回到下一条指令。

2.根据权利要求1所述采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法,其特征在于,所述步骤S3的流程为:首先,在代码段的开头插入所有附加处理逻辑代码,包括代码缓存;然后接着往后添加一个隐藏代码信息表,用来根据隐藏代码的地址索引到隐藏代码在加密保存的位置;最后将隐藏的原始代码加密并插入到代码段的最后。

3.根据权利要求2所述采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法,其特征在于,所述步骤S3中的加密采取简单的异 或加密方式,密钥保存在一个全局变量中。

4.根据权利要求2所述采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法,其特征在于,所述步骤S3中,将程序入口地址指向附加逻辑的初始化函数,初始化代码执行完毕后将会跳转到程序的原入口地址。

5.根据权利要求1所述采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法,其特征在于,在所述步骤S203的过程中,进行代码缓冲分配,即用一个全局信息表记录和管理代码缓存的分配,并加入互斥量,让代码的分配变成一个原子操作;每次生成代码前首先分配代码缓存空间,该空间在指令执行完毕后回收释放。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201611009334.0/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top