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