[发明专利]一种代码编译方法及装置有效
申请号: | 202010289966.7 | 申请日: | 2020-04-14 |
公开(公告)号: | CN111475168B | 公开(公告)日: | 2023-05-05 |
发明(设计)人: | 张铮;邵昱文;王晓梅;姚远;邰铭;刘浩;趙玉风;聂广来;潘传幸;邢福康 | 申请(专利权)人: | 中国人民解放军战略支援部队信息工程大学;网络通信与安全紫金山实验室 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 李金 |
地址: | 450001 *** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 代码 编译 方法 装置 | ||
本发明提供一种代码编译方法及装置,通过将获取的第一源代码进行信息替换得到第二源代码;对第二源代码进行词法分析、语法分析和语义分析,生成汇编代码;通过修改汇编代码中的数据段、修改汇编代码中数据运算的运算过程和修改汇编代码中函数的函数结构三种修改方式中的至少一种修改方式对汇编代码进行修改;将修改后的汇编代码转化为机器码程序,将机器码程序与库函数进行链接,得到可执行文件。本发明通过第一源代码的信息替换和对汇编代码的修改的方式,改变了现有的代码编译机制,使得反编译后的代码变得难以理解,攻击者难以根据反编译后的代码找到可执行文件的漏洞进行攻击,提高了对可执行文件的逆向防御能力和安全系数。
技术领域
本发明涉及软件安全技术领域,具体涉及一种代码编译方法及装置。
背景技术
现有的信息处理终端(例如电脑和手机登)的使用都离不开软件,所以软件安全是一个备受关注的问题。攻击者能够采用逆向工程技术通过对程序代码编译完成的执行文件进行反汇编,以恢复程序代码中的高级语义信息,从而帮助攻击者发现软件漏洞进行攻击,导致各种软件的安全性较低。现有的代码编译方法得到的软件存在防逆向分析能力弱,安全系数低的问题。
发明内容
有鉴于此,本发明实施例提供一种代码编译方法及装置,解决了现有的编译方法得到的软件存在防逆向分析能力弱,安全系数低的问题。
为实现上述目的,本发明实施例提供如下技术方案:一种代码编译方法,包括:
将获取的第一源代码进行信息替换得到第二源代码;
对所述第二源代码进行词法分析、语法分析和语义分析,生成汇编代码;
通过修改所述汇编代码中的数据段、修改所述汇编代码中数据运算的运算过程和修改所述汇编代码中函数的函数结构三种修改方式中的至少一种修改方式对所述汇编代码进行修改;
将修改后的汇编代码转化为机器码程序,将所述机器码程序与库函数进行链接,得到可执行文件。
进一步的,所述修改所述汇编代码中函数的函数结构,包括:
将获取到的所述汇编代码中的函数拆分成至少两个函数体;其中,所述函数体为所述汇编代码的函数中的部分函数;
从所述至少两个函数体中确定至少一个函数体作为样本函数体,扩展得到与所述样本函数体的函数结构相同但功能不同的扩展函数体;其中,所述扩展函数体之间可相互跳转,且所述扩展函数体可跳转至所述样本函数体;
在所述扩展函数体内插入改变所述扩展函数体的运算过程的指令,实现函数混淆。
进一步的,所述修改所述汇编代码中的数据段,包括:
读取所述汇编代码中的数据段;
随机转移所述数据段的数据地址,并记录所述数据地址的偏移量;
根据所述偏移量修改所述汇编代码的数据段的数据指针,使得所述数据段的数据指针指向转移后的数据地址。
进一步的,所述修改所述汇编代码中的数据段,还包括:
若所述数据段为读写数据段,在获取所述读写数据段的数据后,插入用于设置文件锁的汇编指令;其中所述文件锁用于锁定所述读写数据段的数据不被读取。
进一步的,所述修改所述汇编代码中数据运算的运算过程,包括:
获取所述汇编代码中的运算指令和递归语句;
生成一个随机数,根据预先设定的随机数与运算指令的对应关系,确定与所述随机数对应的运算指令;
将所述汇编代码中的运算指令替换为所述随机数对应的运算指令,其中所述随机数对应的运算指令和所述汇编代码中的运算指令对相同数值的运算结果相同;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军战略支援部队信息工程大学;网络通信与安全紫金山实验室,未经中国人民解放军战略支援部队信息工程大学;网络通信与安全紫金山实验室许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010289966.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:空调器与新风机联动控制方法、装置及空调系统
- 下一篇:安全带预紧装置和车辆