[发明专利]一种程序加固方法及装置有效
| 申请号: | 201810350873.3 | 申请日: | 2018-04-18 |
| 公开(公告)号: | CN108846265B | 公开(公告)日: | 2021-07-30 |
| 发明(设计)人: | 黄绍莽;潘剑锋 | 申请(专利权)人: | 北京奇虎科技有限公司 |
| 主分类号: | G06F21/14 | 分类号: | G06F21/14;G06F8/53 |
| 代理公司: | 北京律诚同业知识产权代理有限公司 11006 | 代理人: | 王玉双 |
| 地址: | 100088 北京市西城区新*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 程序 加固 方法 装置 | ||
1.一种程序加固方法,其特征在于,包括:
从用户编辑的源程序文件中确定N个目标函数,所述源程序文件至少由N个函数组成,N为大于1的整数;
在所述N个目标函数的每个目标函数内创建不可达分支;
在每个所述目标函数的不可达分支中添加该目标函数对其他函数的调用,得到新的程序,所述其他函数属于所述源程序文件;
生成与所述新的程序对应的可执行程序文件;
所述在所述N个目标函数的每个目标函数内创建不可达分支,包括:
在每个所述目标函数内创建条件调用语句,每个所述目标函数内的条件调用语句均包括可达分支和所述不可达分支;
在每个所述目标函数的条件调用语句的可达分支中,写入该目标函数的真实函数调用;
所述在每个所述目标函数的不可达分支中添加所述目标函数对其他函数的调用,包括:
对每个所述目标函数执行如下步骤:
扫描所述源程序文件,确定所述源程序文件中函数个数;
判断所述源程序文件中函数个数是否大于预设数值;
如果是,在所述目标函数的条件调用语句的不可达分支中,添加所述目标函数对其他函数的随机调用;
否则,在所述目标函数的条件调用语句的不可达分支中,添加所述目标函数对其他函数的一对一调用;或者
所述在每个所述目标函数的不可达分支中添加所述目标函数对其他函数的调用,包括:
对每个所述目标函数执行如下步骤:
在所述目标函数的条件调用语句的不可达分支中,添加所述目标函数对其他函数的随机调用。
2.如权利要求1所述的程序加固方法,其特征在于,在所述目标函数的条件调用语句的不可达分支中,添加所述目标函数对其他函数的随机调用,包括:
从所述源程序文件的全部函数中确定一个以上候选被调函数,所述候选被调函数与所述目标函数的条件调用语句的可达分支中所调用的函数不同;
在所述目标函数的条件调用语句的不可达分支中,添加所述目标函数对所述一个以上候选被调函数的一对一调用。
3.如权利要求2所述的程序加固方法,其特征在于,所述从所述源程序文件的全部函数中确定一个以上候选被调函数,包括:
随机从所述源程序文件的全部函数中,选择与该目标函数的条件调用语句的可达分支中所调用函数不同的函数,确定为所述候选被调函数;或者
从所述源程序文件的全部函数中,筛选出满足预设函数条件的函数,确定为所述候选被调函数。
4.如权利要求1所述的程序加固方法,其特征在于,所述条件调用语句基于具有唯一结果的数学表达式设置,在得到所述数学表达式的唯一结果时,执行在所述目标函数的条件调用语句的可达分支中的指令。
5.如权利要求2所述的程序加固方法,其特征在于,所述方法还包括:
通过扫描用户编辑的源程序文件,获取所述源程序文件中全部函数的函数名;
记录所述源程序文件中全部函数的函数名。
6.如权利要求5所述的程序加固方法,其特征在于,所述在所述目标函数的条件调用语句的不可达分支中,添加所述目标函数对所述一个以上候选被调函数的一对一调用,包括:
对每个所述候选被调函数执行如下步骤:
在所述目标函数的条件调用语句的不可达分支中添加函数调用指令;
从所述源程序文件中全部函数的函数名中,获取所述候选被调函数的函数名;
在所述函数调用指令中写入所述候选被调函数的函数名。
7.如权利要求6所述的程序加固方法,其特征在于,在所述函数调用指令中写入所述候选被调函数的函数名之后,还包括:
针对所述候选被调函数生成随机的传递参数;
将所述随机的传递参数写入在所述函数调用指令中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司,未经北京奇虎科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810350873.3/1.html,转载请声明来源钻瓜专利网。





