内嵌代码补丁
针对加密或压缩的代码进行打补丁的技术, 引入洞穴代码Code Cave.
普通代码补丁与内嵌代码补丁的对比
每次内存中运行时, 内嵌补丁都会执行一次, 发生在解密OEP之后.
基本思想
加密, 解压缩之后会进入OEP, 找到这条进入OEP的指令, patch该JMP指令修改执行流到额外添加的代码段, 执行对解密/解压缩之后的代码打补丁的操作, 再JMP到OEP, 就实现了内嵌补丁.
实现方式
- 设置到文件空白区域(比如要求符合Section Alignment时空余的位置)
- 扩展到最后节区
- 添加新节区
补丁代码少时用第一种方式, 多时用后两种.