[发明专利]一种基于二次汇编的代码混淆方法在审
申请号: | 201910462869.0 | 申请日: | 2019-05-30 |
公开(公告)号: | CN110210190A | 公开(公告)日: | 2019-09-06 |
发明(设计)人: | 贾晓启;王畅;陈阳;杜海超;解亚敏;唐静 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙) 11200 | 代理人: | 陈艳 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 二进制文件 混淆 汇编 代码混淆 格式规范 加密 预处理 指令 传统二进制 合法性检验 地址信息 汇编文件 汇编指令 逆向工程 软件保护 跳转指令 指令序列 可执行 控制流 细粒度 重定位 垃圾 编译 替换 盗用 多样性 攻击 引入 检查 | ||
1.一种基于二次汇编的代码混淆方法,包括以下步骤:
对二进制文件进行合法性检验,检查其是否为格式规范的二进制文件;
对格式规范的二进制文件进行预处理,找出有关跳转指令和适合插入垃圾指令块的地址信息;
对二进制文件进行二次汇编,将文件中的汇编指令替换成等效的指令序列,并在文件中插入垃圾指令进行控制流混淆,生成混淆的汇编文件,再编译成混淆的二进制文件;
对混淆的二进制文件进行加密,生成可执行加密二进制文件。
2.如权利要求1所述的方法,其特征在于,替换指令时,根据指令操作码对指令进行分类,若有立即数出现,则进行立即数加密,若有特殊寄存器出现,则直接添加花指令;调用相应的处理函数,随机选择混淆模板,生成混淆后的替换指令;将该替换指令返回,替代原指令。
3.如权利要求1所述的方法,其特征在于,控制流混淆时,通过基于原跳转指令的插入算法插入垃圾指令,该基于原跳转指令的插入算法是通过插入中间跳的方式进行控制流混淆,具体为:先记录原跳转目标地址,再利用垃圾指令生成器生成一段新的垃圾指令,再将原跳转指令的目标改为插入的垃圾指令块,垃圾指令块执行完毕后继续跳转到原目标执行,实现控制流混淆。
4.如权利要求1所述的方法,其特征在于,控制流混淆时,通过基于垃圾指令块间跳转的混淆算法插入垃圾指令,该基于垃圾指令块间跳转的混淆算法为通过插入随机数个垃圾指令块,并通过跳转指令连接各个垃圾指令块,实现控制流混淆。
5.如权利要求1所述的方法,其特征在于,加密方法为加密.text段的内容,为二进制文件添加一个新节,并向新节中添加解密代码,修改文件入口点为新节的程序入口,该程序解密.text段完成后,再跳转到程序的原始入口点。
6.一种基于二次汇编的代码混淆系统,包括:
合法性检验模块,用于对二进制文件进行合法性检验,检查其是否为格式规范的二进制文件;
预处理模块,用于对格式规范的二进制文件进行预处理,找出有关跳转指令和适合插入垃圾指令块的地址信息;
二次汇编模块,包括指令替换子模块和控制流混淆子模块,该指令替换子模块用于将文件中的汇编指令替换成等效的指令序列,该控制流混淆子模块在文件中插入垃圾指令进行控制流混淆;
加密模块,用于对混淆的二进制文件进行加密,生成可执行加密二进制文件。
7.如权利要求6所述的系统,其特征在于,还包括垃圾指令生成器,用于生成控制流混淆子模块在文件中插入的垃圾指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910462869.0/1.html,转载请声明来源钻瓜专利网。