标签归档:Code Splicing

Code Splicing of Armadillo

Code Splicing本质上是一种Anti-Dump机制。远离就是在加壳的时候抽取一部分代码,并在其中参杂些许垃圾指令。壳运行的时候申请一块内存,再把这些指令和原始的位置用jump连接起来。

大体流程如下:
1. VirtualAlloc申请足够大的内存空间。
2. 使用zlib解压被抽取的代码到该空间。
3. 解压一个表。该表的内存如下
     +0 – 原始跳转jump offset的偏移。
     +4 – 被抽代码相对于buffer的偏移。
     +8 – 有效的Splicing Code的长度。
4. 解压完之后就可以利用这个信息把原始的代码和Splicing Code进行连接。 处理方法: More