[发明专利]一种基于对抗逆向的程序加固方法及装置在审
申请号: | 201810450815.8 | 申请日: | 2018-05-11 |
公开(公告)号: | CN108647500A | 公开(公告)日: | 2018-10-12 |
发明(设计)人: | 黄绍莽;潘剑 | 申请(专利权)人: | 北京奇虎科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F21/12 |
代理公司: | 北京华沛德权律师事务所 11302 | 代理人: | 房德权 |
地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 程序加固 软件产品 对抗 软件开发技术 可执行程序 源程序文件 用户编辑 工程师 指令 创建 应用 | ||
本发明公开了一种基于对抗逆向的程序加固方法及装置,应用于软件开发技术领域,该方法包括:在用户编辑的源程序文件中创建一个以上不可达分支;在所述一个以上不可达分支的每个不可达分支中添加对抗逆向指令,得到新的程序;生成与所述新的程序对应的可执行程序文件。通过本发明提高了软件产品被逆向工程师逆向的难度,从而解决了软件产品的安全性不高的技术问题。
技术领域
本发明涉及软件开发技术领域,尤其涉及一种基于对抗逆向的程序加固方法及装置。
背景技术
高级语言编写的源程序文件经过编译变成可执行程序文件,用于机器执行,而反编译是其逆过程,可以将可执行程序文件通过反编译得到可读的源程序文件。计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,就是指通过对他人软件的目标程序(可执行程序文件)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,从而作为自己开发软件时的参考,或者直接用于自己的软件产品中。
因此,用户所自主开发的软件产品很容易被竞争对手通过计算机软件反向工程,反编译而知晓该软件产品所使用的思路、原理、结构、算法、处理过程、运行方法,导致软件产品被模仿,甚至盗取。因此,目前的软件产品的安全性不高。
发明内容
本发明实施例提供一种基于对抗逆向的程序加固方法及装置,解决了软件产品的安全性不高的技术问题。
第一方面,本发明实施例提供一种基于对抗逆向的程序加固方法,包括:
在用户编辑的源程序文件中创建一个以上不可达分支;
在所述一个以上不可达分支的每个不可达分支中添加对抗逆向指令,得到新的程序;
生成与所述新的程序对应的可执行程序文件。
可选的,所述在用户编辑的源程序文件中创建一个以上不可达分支,包括:
从所述源程序文件确定一个以上的分支插入位置;
在每个所述分支插入位置添加所述不可达分支。
可选的,所述从所述源程序文件确定一个以上的分支插入位置,包括:
从所述源程序文件随机确定一个分支插入位置或者多个分散的分支插入位置。
可选的,所述在用户编辑的源程序文件中创建一个以上不可达分支,包括:
从所述源程序文件确定一个以上的目标代码段;
变换每个所述目标代码段,获得包括可达分支和所述不可达分支的新指令段,其中,对应的目标代码段携带在所述新指令段的可达分支中。
可选的,所述从所述源程序文件确定一个以上的目标代码段,包括:
从所述源程序文件随机确定一个目标代码段或者多个分散的目标代码段。
可选的,所述在所述一个以上不可达分支的每个不可达分支中添加对抗逆向指令,包括:
在每个所述不可达分支中添加非指令数据。
可选的,所述在所述一个以上不可达分支的每个不可达分支中添加对抗逆向指令,包括:
识别每个所述不可达分支所在的位置;
在每个所述可不达分支中添加与该不可达分支所在的位置相匹配的对抗逆向指令。
可选的,所述在每个所述可不达分支中添加与该不可达分支所在的位置相匹配的对抗逆向指令,包括:对每个所述不可达分支执行如下步骤:
判断所述不可达分支是否处于所述源程序文件的堆栈代码块中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810450815.8/2.html,转载请声明来源钻瓜专利网。