在对已有的花指令加密策略及其存在的问题进行分析的基础上,我们提出了随机花指令加密算法。
一、花指令加密方法及研究现状
1、花指令加密的工作原理
动态跟踪是软件破解的基本过程,如果程序代码具有反动态跟踪的能力,那软件被破解的可能性就变小了。花指令加密可以应用在反跟踪和反静态分析中。
花指令加密方法需要在原始指令的适当位置插入一些无用的字节。这些被插入的字节不能被执行,否则原始指令的逻辑会遭到破坏,这是花指令变换的基本条件。根据反汇编的工作原理,只有当花指令的最后一个或两个字节同正常指令的开始几个字节放反汇编器识别成一条指令时,才能有效破坏反汇编的结果。插入的花指令应当是一些不完整的指令,被插入的不完整指令可以是随机选择的。
2、研究状况及存在的问题
目前采用比较多的一种花指令形式是无条件跳转指令JMP加花指令。这种策略通过简单变换后的各种扩展形式,在一定程度上增强了花指令的生存能力,但是这些扩展形式还是存在特征码,用工具仍可以自动去除。
另外一种形式是直接在原代码中的JMP指令后添加花指令,缺点是受代码中JMP指令个数的限制,如果JMP指令过少,则代码变换效果不明显。
综合而盲,要想提高模糊度(反汇编器产生错误结果的程度),就必须应用多个方法,并保证方法使用的随机性和方法本身的随机性,使产生的花指令没有固定的特征码。由此,我们提出随机袍指令加密算法的目的就是保证花指令无特征码并且具有较高的模糊度。
二、随机花指令加密算法
1、加密算法思想
根据的文的分析,目前采用花指令进行加密的问题主要在于存在特征码,容易用工具自动去除,其次是模糊度不够,效果不明显。对于这两个问题,本文提出两种策略来加以解决。第一种策略是JMP加花指令的扩展形式,简称为“JMP扩展”。这种变换保证其具有足够的随机度,即使存在特征值,但特征值的数量巨大,完全列举所有情况也需要很多工作量。第二种策略是将代码中的条件跳转指令变换为反条件跳转指令加JMP指令的形式,简称为"JMC变换”口这个策略进一步增加JMP指令的数量以便可以添加更多花指令。
加密算法的具体思想是:首先将原始指令分成若干个候选块并确定一个候选块随机序列,然后对每一个候选块进行如下处理:应用“JMP扩展”策略对候选块内指令进行变换,然后应用“JMC变换”策略对候选块内条件跳转指令进行变换,最后在变换后的代码的JMP指令后随机添加花指令。
2、"JMP扩展¨加密算法描述
JMP扩展是用三条JMP指令对一段正常的指令进行变换,具体方法如下:
跳过的正常指令个数是随机选取的,但是个数不能超过候选块的指令数目。图1给出了“JMP扩展”的工作流程。
加密算法描述:
1)取到一指令候选块B,指令指针P指示候选块的第一条指令;
2)产生一随机数m,m的大小在B的指令数目内;
3)从指针P开始处向后扫描m条指令,确定这m条指令的长度Z;
4)在P前插入第一条JMP指令JMP+(l+2),其中2是第二条JMP指令长度2字节;
5)在P+m后插入第二条JMP指令JMP+2,其中2是第三条JMP指令长度2字节;
6)在P+m+1后插入第三条JMP指令JMP - (l+2)。跳转到正常指令处。
3、"JMC变换”加密算法描述
JMC变换是将一条条件跳转指令变换为反条件跳转指令加JMP指令,具体方法如下:
所有的条件跳转指令都可以做这种变换。Intel x86指令集中条件跳转指令编码方式有其特点,一条条件跳转指令的操作码和0x01异或就可以得到其反条件跳转指令。根据这个特点,“JMC变换”就变得容易多了。图2给出了“JMC变换”的工作流程。
加密算法描述:
1)取到一指令候选块B,指令指针P指示候选块的第一条指令;
2)如果指令P为条件跳转指令则进行如下操作,否则跳转到8);
3)区分指令的操作码opcode和操作数opmnd;
4)将opcode与0x01异或得到反条件跳转操作码opcode;
5)根据oprand判断跳转类型足短跳转还是长跳转,得到oprand;
6)将指令JFI变换为opcode’+oprand’,其中oprand’是下条JMP指令的长度;
7)在P后插入JMP +oprand指令;
8)指令指针尸指向下一条指令;
9)如果8中指令全部处理完则结束,否则跳转到2)。
4、加密算法描述
加密算法首先对原始指令进行分块操作,每个分块被称为候选块,分块操作的目的一是为了使“JMP扩展”操作不会重叠影响,二是可以根据空闲空间的多少灵活调整分块大小。分块的大小可根据空闲空间多少灵活确定。确定一个分块的随机序列的目的是假如空闲空问不够,那么随机变换的候选块都不会一样。随机花指令加密算法会调用
前面的两种策略对代码变换后,在JMP指令后添加花指令。图3给出了随机花指令加密算法的工作流程。
随机花指令加密算法描述:
首先对所有指令进行分块,对候选块产生一个随机序列P,例如P(4,1,3,.7,2,5,6…),下面按照随机序列的顺序对所有分块如下处理:
1)如果空间不够则退出,否则进行下面操作;
2)对一个候选块进行一次“JMP扩展”操作;
3)对一个候选块中的条件跳转指令进行“JMC变换”操作;
4)在候选块中的JMP指令后随机添加花指令;
5)平衡代码段剩余可用空间;
6)如果所有候选块处理完毕则向下执行,否则取下一个候选块并眺转到1);
7)平衡所有跳转指令跳转位置;
8)指令地址偏移重定位;
9)其他数据、函数地址重定位。
三、随机花指令加密算法实践
1、随机花指令算法的实验步骤与结果
1)实验环境
硬件环境:celcronl. 7GHz/256M Memoy/20G HardDisk软件环境;操作系统Windows XP+SP2/JCEE变换器/W32Dasm8. 93/实验用可执行程序test.exe。其中JCEE变换器是为实现变换而编制的测试程序。W32Dasm是应用广泛的反汇编器调试器,程序test.cxe是用来进行变换的程序。
2)实验步骤
a)对实验用原程序进行反汇编,得到汇编伪码P;
b)用JCEE变换器对原程序进行变换,得到变换后的程序;
c)用反汇编器对变换后的程序进行反汇编,得到汇编伪码P;
d)比较P和P’得到结论R。
3)实验结果
候选块的大小选为10条指令,每条JMP指令后最大添加8个字节花指令。 teat. exe程序经变换后得到的数据如表1所示。
经验证,采用本随机花指令加密方法对test. exe文件进行花指令变换,采用花指令去除工具对变换后的结果进行花指令搜索,均未能发现相关的花指令特征。
2、实验分析
经过‘‘JMP扩展”变换后的代码要跳过一定数量的正常指令,然后在三条JMP指令后添加花指令,总共存在的特征值是8*8*8*10 =5120种,如果基数扩大,特征值数量更多。因此想要定义所有的特征不太实际。在JMP后添加了花指令后不能自动去除还有一个原因是JMP指令作为原始代码的组成部分是不能被去除的,否则程序逻辑遭到破坏。
小知识之花指令
花指令是程序中有一些指令,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。经典的是一些跳转指令,目标位置是另一条指令的中间,这样在反汇编的时候便会出现混乱。花指令有可能利用各种指令:jmp, call, ret的一些堆栈技巧,位置运算,等等。
u盘管理软件哪个好?
如今,随着数字办公的普及,USB闪存驱动器作为一种方便的数据存储和传输工具,其安全性越来越受到公司的重视。为了保证数据安全,避免数据泄漏,挑选出色的USB闪存驱动器管理软件至关重要。今天,让我们来看看一些备受推崇的USB闪存驱动器管理软件,帮助你找到最适合你的。一、BitLocker(内置Windows)作为Windo...
监控电脑上网记录的软件有哪些?
如今,随着数字办公的日益普及,如何有效管理员工的上网行为,保证企业信息安全已经成为很多企业面临的共同挑战。因此,选择一个合适的电脑上网记录监控软件至关重要。本文将为您介绍几款备受推崇的监控软件,帮助你更好地了解这一领域,实现高效的管理和安全防护。一、安企神软件1、网络行为记录:详细记录员工访问的网站,包含访问时间、停留...
监控记录电脑操作的软件有哪些?
如今,随着数字办公的日益普及,企业对员工电脑操作的监控要求也越来越高。这类管控不仅有利于提高效率,并且有效预防数据泄漏和内部威胁。本文将为您介绍一些流行的电脑操作监控软件,以帮助您更好的了解该领域。一、安企神软件安企神软件以其强大的实时监控能力及友善的操作面板获得了广泛好评。它可以记录员工的键盘、屏幕截屏、应用软件使用...
公司电脑监控软件能看到视频内容吗?
如今,随着数字办公的日益普及,公司的电脑监控软件已经成为企业管理的有效途径。但是,这类软件是否能看到员工电脑的视频内容一直是一个备受瞩目的话题。今日,使我们深入讨论一下这种情况。首先,必须明确的是,公司电脑监控软件的主要作用是记录员工在电脑上的操作行为,包括但不限于网页浏览、系统软件运用、文件操作等。这些软件通常可以实...
u盘设备管控软件有哪些?U盘设备控制软件大盘点
随着数字办公的普及,U盘作为一种方便的数据存储和传输工具,被广泛应用于单位和个人用户中。然而,U盘的应用也带来了数据安全的风险。为了高效管理U盘设备,保证数据安全,市场上出现了很多U盘设备控制软件。本文将盘点几类主流的U盘设备控制软件,帮助你更好地保护数据安全。一、安企神软件安企神软件是一种强大的公司级电脑管理和数据安...