[发明专利]一种程序编译方法、装置及系统有效
申请号: | 201910456368.1 | 申请日: | 2019-05-29 |
公开(公告)号: | CN110147238B | 公开(公告)日: | 2022-11-11 |
发明(设计)人: | 张铮;趙玉风;邬江兴;王晓梅;王立群;李卫超;马博林;刘镇武;刘浩;张高斐;潘传幸;李方云 | 申请(专利权)人: | 中国人民解放军战略支援部队信息工程大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41;G06F21/12 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 牛亭亭;王宝筠 |
地址: | 450001 *** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 编译 方法 装置 系统 | ||
本申请公开了一种程序编译方法、装置及系统,方法包括:获得待编译的程序代码,所述程序代码中包括至少一个存根函数的调用地址;获得所述程序代码的编辑脚本,所述编辑脚本与所述存根函数的调用地址相关;利用所述编辑脚本和所述存根函数的调用地址,重构出所述程序代码中被所述存根函数的调用地址替换的目标函数的调用地址;基于所述目标函数的调用地址,对所述程序代码进行编译,得到所述程序代码的可执行文件。可见,本申请中,即使可执行文件被反汇编,也会由于其反汇编出的程序代码中存在存根函数而不会被外界解读出程序代码的内容,从而达到保护程序代码的目的,由此提高程序代码的安全性。
技术领域
本申请涉及软件安全技术领域,特别涉及一种程序编译方法、装置及系统。
背景技术
目前,攻击者能够采用逆向工程技术通过对程序代码编译完成的执行文件进行反汇编,以恢复程序代码中的高级语义信息,从而帮助攻击者发现软件漏洞进行未经许可的修改,如绕过密码保护、识别和删除软件程序中的版权通知或水印、窃取知识产权等,导致各种软件的安全性较低。
为此,亟需一种能够对软件的程序代码进行保护的方案。
发明内容
有鉴于此,本申请的目的在于提供一种程序编译方法、装置及系统,用以解决现有技术中软件的程序代码安全性较低的技术问题。
本申请提供了一种程序编译方法,包括:
获得待编译的程序代码,所述程序代码中包括至少一个存根函数的调用地址;
获得所述程序代码的编辑脚本,所述编辑脚本与所述存根函数的调用地址相关;
利用所述编辑脚本和所述存根函数的调用地址,重构出所述程序代码中被所述存根函数的调用地址替换的目标函数的调用地址;
基于所述目标函数的调用地址,对所述程序代码进行编译,得到所述程序代码的可执行文件。
上述方法,优选的,所述待编译的程序代码预先通过以下处理生成:
获得原始的程序代码,所述程序代码中包括至少一个目标函数的调用地址;
对所述原始的程序代码进行代码优化处理;
对所述目标函数的调用地址使用相应的存根函数的调用地址进行替换,以得到待编译的程序代码。
上述方法,优选的,对所述目标函数的调用地址使用相应的存根函数的调用地址进行替换,包括:
分别对所述程序代码中的每个所述目标函数的调用地址替换为其各自对应的存根函数的调用地址;
其中,每个所述存根函数的调用地址不同。
上述方法,优选的,对所述目标函数的调用地址使用相应的存根函数的调用地址进行替换,包括:
对所述程序代码中的所述目标函数的调用地址进行分组;
将属于同一分组的所述目标函数的调用地址替换为该分组对应的存根函数的调用地址;
其中,属于不同分组的所述目标函数的调用地址所对应的存根函数的调用地址不同。
上述方法,优选的,利用所述编辑脚本和所述存根函数的调用地址,重构出所述程序代码中被所述存根函数的调用地址替换的目标函数的调用地址,包括:
解析所述编辑脚本中所述存根函数的调用地址在所述程序代码中的位置信息和所述存根函数的调用地址替换目标函数的调用地址时的修改信息;
基于所述位置信息和所述修改信息,重构所述程序代码中所述目标函数的调用地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军战略支援部队信息工程大学,未经中国人民解放军战略支援部队信息工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910456368.1/2.html,转载请声明来源钻瓜专利网。