什么是代码分析引擎?代码分析引擎的作用?_代码虚拟化保护技术领军者
资讯中心 > 行业资讯 > 什么是代码分析引擎?代码分析引擎的作用?
什么是代码分析引擎?代码分析引擎的作用?
2021 年 07 月 12 日

一、什么是代码分析引擎?

这里的代码分析引擎特指的是代码加密保护产品里对代码进行自动分析的引擎,是对代码进行自动加密前对目标二进制代码进行分析的一个过程。

二、为什么需要代码分析引擎?

代码加密的时候为了保证加密后和加密前代码功能的不变,必须要区分出程序里的代码和数据,然后做相应的加密,不然会导致破坏程序的原始逻辑。然而当前的PC计算机属于冯·诺依曼计算机体系结构,它将指令和数据存储在同一个存储器的,不需要明确的区分代码和指令,因为很多编译器生成的程序里代码和数据混合在一起,这对代码加密提了了挑战,要求代码加密产品必须对程序进行分析,识别出对应的代码和数据。

同时为了充分的利用各种加密手段对程序进行变异,加花等,也要求程序对原始代码进行深度的分析。

三、代码分析引擎的进化

1、无代码分析

早期的加密保护壳不需要做代码分析,因为他们只是做一些反调试,代码压缩,导入表加密,资源加密等这种修改PE结构类的保护,不涉及代码上的加密保护。

2、API调用代码分析

后来Vmprotect、NoobyProtect、ZProtect等这些新生代的强壳开始做API调用的加密(注意:这和导入表加密有本质区别,导入表加密属于PE结构上的加密,API调用加密属于对代码进行加密),这使得他们必须对原程序的代码进行分析,以查找出API调用的代码,并对他们进行加密,这是他们比其它传统加密壳先进的一个标志。

3、函数内代码分析

再后来进化到代码加密的时候,这些强壳开始做函数内的代码分析,由用户标记函数的开头和结尾,然后对标记之间的代码做变形,虚拟化加密。

由于加密后的原始代码的位置被填充了无用垃圾数据,是无法执行的,所以必须保证不会有代码执行到原来的位置。但是代码里的 switch case跳转表,异常处理这类代码总是会间接地跳到原来的代码中间,如果不处理就会导致程序崩溃,这使得加密程序必须对代码进行分析,识别出跳转表,异常处理快,然后做相应的处理。

在生成花指令的时候传统的花指令只是做一些等效变换,拥有代码分析引擎的加密产品可以玩出更多的花样,这需要分析出代码里的空闲寄存器,空闲标志位,然后利用空闲的寄存器、标记位来生成花指令。

在做代码虚拟化的时候还需要分析出代码里的控制流,以便对虚拟机字节码生成动态解密的算法等等。

4、全程序代码分析

目前市面上的Vmprotect等加密产品依然是处于函数内代码加密、分析的阶段。

我们的代码虚拟化保护产品MapoEngine同样前期在函数内的代码分析上做了大量的工作,后来我们不满足于只做函数内的代码加密,开始做全程序级代加密,也就是对整个程序进行加密,不再局限于函数内。我们开始自动识别程序内的所有函数,识别函数间相互交叉调用,识别一个函数跳转到另一个函数中间的情况,识别 vc crt里为了优化用汇编写的一些函数间乱跳,函数内穿插字符串等变态的函数。

目前经过多年的不断改善,优化性能,我们已经能对常见编译器编译的程序做到全程序的代码加密,把加密和性能做到平衡,稳定运行。

四、以后的展望

虽然目前我们已经做到了全程序代码加密,比其它函数内的代码加密走在更前面,但目前依然是以函数为单位进行的加密,只是我们把整个程序的函数都进行了加密,后续更进一级我们想会是把整个程序的代码合并到一起打乱,到时将不会再有函数的概念,整个程序的代码为一个整体,整个程序只有一个入口,只有一个出口,甚至没有出口,而我们对整体代码都进行了加密,让逆向分析根本无法找到下手的地方,那时对代码分析引擎的要求会更高。

加密产品越往后做对代码分析引擎的要求越高,可以说代码分析引擎的强度决定了代码加密的强度。

在线QQ (2807483369)

在线时间(10:30-00:30)

点击这里给我发消息