[发明专利]一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法有效
申请号: | 201611009334.0 | 申请日: | 2016-11-16 |
公开(公告)号: | CN106650340B | 公开(公告)日: | 2019-12-06 |
发明(设计)人: | 张怡;吴蒙;糜娴雅;徐彬彬;唐勇;杨强;解炜;周旭 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F21/12 |
代理公司: | 43008 湖南兆弘专利事务所(普通合伙) | 代理人: | 周长清<国际申请>=<国际公布>=<进入 |
地址: | 410073 湖南省长沙市砚瓦池正街4*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法,其步骤为:S1:选择隐藏目标;以基本块为单位,在目标程序中选择待隐藏的代码块;S2:隐藏选择的基本块;针对每个待隐藏基本块,将原来的一段代码替换为一个分配器函数调用,并在剩余的位置填充其它混淆指令;S3:重新打包代码;新建一个代码段用来保存所有的附加逻辑及数据。本发明具有具有适用范围广、轻量级、可扩展、安全性高等优点。 | ||
搜索关键词: | 一种 采用 动态 细粒度 代码 隐藏 混淆 技术 二进制 软件 保护 方法 | ||
【主权项】:
1.一种采用动态细粒度代码隐藏与混淆技术的二进制软件保护方法,其特征在于,步骤为:/nS1:选择隐藏目标;以基本块为单位,在目标程序中选择待隐藏的代码块;/nS2:隐藏选择的基本块;针对每个待隐藏基本块,将原来的一段代码替换为一个分配器函数调用,并在剩余的位置填充其它混淆指令;/nS3:重新打包代码;新建一个代码段用来保存所有的附加逻辑及数据;/n所述步骤S2中,所述分配器函数的处理流程为:/nS201:保存状态;对代码进行语义等价变换,使生成的代码执行前和原代码的执行前的状态完全相同,也就是使所有寄存器及堆栈的状态不发生改变,将寄存器状态保存在堆栈中;/nS202:加锁;在生成代码前对将要生成代码在代码缓存中的位置进行加锁,将这块代码缓存冻结,加锁信息保存在一个全局列表中;/nS203:生成代码;根据栈中保存的返回地址在隐藏代码信息表中得到待生成的基本块的内存位置,然后将其解密到代码缓存;/nS204:恢复状态;恢 复代码执行前的状态;/nS205:执行代码;跳转到生成的代码处执行,执行完毕后返回到分配器继续执行,确保解锁信息和下一条指令的地址已存放在栈中;/nS206:保存状态;保存代码执行后的状态;/nS207:解锁;根据执行代码时入栈的解锁信息,回收当前已分配的代码缓存空间;/nS208:恢复状态;恢复代码执行后的状态;/nS209:返回;根据堆栈中的返回地址返回到下一条指令。/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201611009334.0/,转载请声明来源钻瓜专利网。