[发明专利]一种防止二进制文件被反编译的方法和装置有效
申请号: | 201310450080.6 | 申请日: | 2013-09-27 |
公开(公告)号: | CN104517044B | 公开(公告)日: | 2019-02-26 |
发明(设计)人: | 韩景维 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 董文倩;褚敏 |
地址: | 518044 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 防止 二进制文件 反编译 方法 装置 | ||
本发明公开了一种防止二进制文件被反编译的方法和装置,以较为简单的方式增强二进制程序的安全性。所述方法包括:查找二进制文件中待修改函数的执行入口;从所述待修改函数的执行入口开始,确定在所述待修改函数中的执行顺序需要更改的若干指令;更改所述确定的若干指令在所述待修改函数中的执行顺序,将所述待修改函数变成指令的执行顺序打乱的函数。由于二进制文件对应的指令的执行顺序被扰乱后,大大提高了对该二进制文件反编译的难度,因此,本发明实施例提供的方法能够采用比较简单的方式有效防止二进制文件被反编译,从而提高了软件产品的安全性。
技术领域
本发明涉及计算机安全领域,具体涉及一种防止二进文件序被反编译的方法和装置。
背景技术
反编译属于计算机反向工程(Reverse Engineering)即计算机软件还原工程的范畴,是指通过对他人软件的目标程序(可执行文件)进行逆向分析、研究工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程和运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。高级编程语言源程序经过编译变成可执行文件(executable file)的过程就是编译的过程,反编译就是编译的逆过程,即由机器码(通常由汇编语言编写)→高级编程语言的过程。所谓机器码,是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合,它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器码具有灵活、直接执行和速度快等特点。一条指令就是机器码的一个语句,它是一组有意义的二进制代码,指令的基本格式为:操作码字段+地址码字段,其中,操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。
通常情况下,反编译不是直接将可执行文件变成高级语言源代码,而是将其先转换成汇编程序。由于机器码是较为底层的计算机语言,通过修改机器码一般可以实现对可执行文件(executable file),例如,.exe文件、.sys文件和.elf文件等的修改。因此,无论是从直接修改机器码的角度,还是从通过反编译可获得软件产品的设计要素这一角度,软件产品生产商希望其软件产品即所对应的机器码具有一定的保密性。只有机器码具有一定的保密性,才能增加修改机器码的难度,也可以增加反编译的难度。
目前,在计算机安全领域,还没有出现一种简单易行且能够防止二进制程序被反编译的技术方案。
发明内容
本发明实施例提供一种防止二进制文件被反编译的方法和装置,以较为简单的方式增强二进制程序的安全性。
本发明实施例提供一种防止二进制文件被反编译的方法,所述包括:
查找二进制文件中待修改函数的执行入口;
从所述待修改函数的执行入口开始,确定在所述待修改函数中的执行顺序需要更改的若干指令;
更改所述确定的若干指令在所述待修改函数中的执行顺序,将所述待修改函数变成指令的执行顺序打乱的函数。
本发明另一实施例提供一种防止二进制文件被反编译的装置,所述装置包括:
入口查找模块,用于查找二进制文件中待修改函数的执行入口;
确定模块,用于从所述待修改函数的执行入口开始,确定在所述待修改函数中的执行顺序需要更改的若干指令;
顺序变更模块,用于更改所述确定的若干指令在所述待修改函数中的执行顺序,将所述待修改函数变成指令的执行顺序打乱的函数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310450080.6/2.html,转载请声明来源钻瓜专利网。