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