安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能对比
下载中心
购买咨询
客户列表
关于安企神

随机花指令加密算法

更新时间:2022-10-28 15:45:32


本文简介:在对已有的花指令加密策略及其存在的问题进行分析的基础上,我们提出了随机花指令加密算法。一、花指令加密方法及研究现状1、花指令加密的工作原理动态跟踪是软件破解的基本过程,如果程序代码具有反动态跟踪的能力,那软件被破解的可能性就变小了。花指令加密可以应用在反跟踪和反静态分析中。花指令加密方法需要在原始指令的适当位置插入一些无用的字节。这些被插入的字节不能被执行,否则原始指令的逻辑会遭到破坏,这是花指令

随机花指令加密算法

在对已有的花指令加密策略及其存在的问题进行分析的基础上,我们提出了随机花指令加密算法。

一、花指令加密方法及研究现状

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的一些堆栈技巧,位置运算,等等。

立即下载试用

零信任安全 随机数

随着网络技术的发展,网络安全问题也受到越来越多的关注。如何保障网络的安全已经成为了一个迫在眉睫的问题。而“零信任安全”作为新一代网络安全架构,已经逐渐成为了企业信息安全保障的主流方向之一。在零信任安全中,随机数作为一种重要的密码加密方式,也就越来越受到大家的关注。

一、 什么是随机数?

随机数是一种抽样概念,表示在一定范围内,由偶然因素(通常是算法)产生的数字。随机数在密码学、统计学、计算机图形学等领域广泛应用,并且在多种安全技术中扮演着重要角色。随机数在信息安全中用于密码生成、数据加密、数据混淆等方面。

二、 随机数在密码学中的作用

在密码学中,随机数是密码学的基础。密码学的目的就是使用加密技术来保护信息的保密性、完整性和可用性。在信息安全中,随机数因其困难复制、不可预测和熵高等特征成为信息处理和保护中重要的组成部分。随机数保障了密码算法的复杂程度,增加了密码的强度,也保证了密码算法计算出的密码不可预测性和不可猜测性。

密码学中有许多使用随机数作为加密算法的基础,其中DES、AES、RC4等都是常用的密码算法,它们的加密本质都是对明文使用特定的随机数进行加密,然后再使用同样的随机数对密文进行解密,从而达到保障信息安全的目的。随机数也是计算机安全中常用的一种工具,可以使用随机数来生成密码,保证密码不易被猜测,从而加强密码的安全性。

三、随机数在“零信任安全”中的应用

“零信任安全”是一种基于应用和身份的访问控制模型,不再只是基于外部认证的访问控制。在“零信任安全”中,当用户需要访问资源时,必须通过验证该用户的身份,然后根据该用户的身份和访问的资源来授予访问权限。与传统的安全模型不同,零信任模型是一种更加灵活的安全模型,可以根据不同的访问需求对不同的访问进行授权或拒绝。

在“零信任安全”中,随机数作为一种密码加密方式,通常与访问控制、身份验证等配合使用。随机数的加入可以增加密码的复杂度及随机性,进而增强“零信任安全”的防护能力,以确保数据的安全性及隐私性。同时,随机数还可以用于一些特定的应用场景,比如随机数可以作为一个不可预测的密钥生成器,为安全引入更多元素,提高安全级别。

四、随机数在海量数据存储中的应用

在现今的大数据时代,海量数据的存储和保护也成为了一种挑战,对于企业来说,要想保证海量数据的安全性,必须采用一种全新的存储技术。而随机数技术的运用,可以确保海量数据的安全。随机数可以减少数据中原有的模式,通过随机数的加入可以打乱数据的排列,防止数据因为重复、重叠等问题而导致的信息泄露。

此外,在海量数据中,随机数也可以用来实现数据的模糊处理,抹减敏感数据,从而保护数据安全和用户隐私。

五、 随机数的应用相关问题

随机数作为一种密码加密方式,在应用中也存在一些问题。其中最主要的问题就是随机数的真正随机性。如果随机数缺乏真正的随机性,那么相当于加密过程的一个漏洞,就有可能被恶意攻击者利用来攻击安全系统。另外还有一些技术相关的问题,比如在已知随机数的情况下,可以通过分析随机数产生的算法来破解加密的信息。

因此,在随机数的应用中,需要采用足够的技术手段来保证随机数真正的随机性。比如可以通过多源随机数产生器来增加随机数的随机性,也可以用Hash函数以及黑白盒测试等方法进行随机数的验证和检测。

六、结论

随机数是密码学中不可或缺的一部分,也是“零信任安全”和海量数据存储等技术中不可缺少的一部分。随机数的应用可以增加密码加密的复杂度,大大增强信息安全的防护能力。但是在应用中,也需要注意随机数的真正随机性,并且采用合适的技术手段来保障线上系统的安全性。总之,随机数作为一种密码加密方式,对于大多数企业来说是非常重要的,必须得到足够的重视。

本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。https://www.wgj7.com/cjwt/16413.html