反反倾销方法

逆向工程 反倾销
2021-07-08 15:13:18

tl;dr:攻击在堆上分配加密代码块并在执行前使用 vm 解析地址和解密的反转储设计的替代方法是什么?

我正在处理一个包含大约 900 页 (4k) 被盗字节的二进制文件。.text 中的二进制文件以硬编码地址作为参数跳转,通过 VMcode 运行,根据几个识别特征(cpuid、threadid、processid)生成一个值,并最终解密堆上的页面并跳转到它执行被盗的功能。出于性能原因,它很可能不会粉碎字节或重新加密它们 - 未来的调用会直接跳转到目标代码。

我已经隔离了几个代码块来解密代码本身并跳转(还没有完全弄清楚密钥的生成),并考虑了一些方法:

1. 转储分配的每 4k 页(大约 900 个左右)并将它们附加到正确地址的二进制文件的末尾(它们不会在转储的二进制文件中分配,因为真正的 OEP 在设置所有的初始打包程序 OEP 之后this up),并尝试跟踪 vm 以手动修复 .text 部分中到解密地址的跳转。

2.解密页面,去除垃圾指令(可能需要一段时间,不是最好的置信度),然后将它们粘贴到可执行文件中应存在的位置(被盗的字节在原始文件中有其加密的对应物)地点)。

3.尝试在packer OEP注入一些共享库,覆盖ntalloc,以线性方式分配可从dll访问的内存,并记录所有解密的函数;最终,编写某种加载程序,可以将转储的内存用作某种交换机,可以跳转和更新原始二进制文件中的调用,以跳转到重定向控制流的库中。

4.其他一些我没有考虑过的方法。

看起来它们都可以工作,但无论如何工作量似乎从很多到荒谬的数量不等。是否还有其他值得探索的方法?

谢谢!

0个回答
没有发现任何回复~