我目前正在尝试用 C++ 编写一个多态引擎来玩弄我有一个简洁的反黑客存活检查想法。然而,编写多态引擎被证明是相当困难的——我什至还没有确定我应该如何去做。这个想法是将可执行代码流式传输给用户(即我正在保护的应用程序),并偶尔向他们发送一些代码,这些代码在内存映像上运行一些校验和并将其返回给服务器。问题是我不希望有人简单地劫持或以编程方式破解存活检查;相反,每一个都将在服务器上生成一个简单的代码存根,并通过多态引擎运行它。每个存活检查都将返回一个值,该值取决于数据的校验和以及潜入存活检查内部的随机算法。
我必须处理的内容:
*可执行图像 PDB 文件。*汇编器和反汇编器引擎,我在它们之间实现了一个接口,允许重新定位代码等......
以下是我正在考虑执行的步骤以及如何执行这些步骤。我在 Windows PE 可执行文件上使用 x86 指令集
我计划采取的步骤(我的问题是第 2 步):
展开说明
- 找到像 mov 这样的简单指令,或者将它们推送并用几个指令替换它们,尽管有更多指令,但它们可以达到相同的目的。在这一步中,我还将添加大量垃圾代码。
- 我计划通过在数据库中使用一系列翻译表来做到这一点。这应该不是很难做到的。
洗牌
- 这是我最麻烦的部分。我需要将代码隔离到函数中。然后我需要建立一系列指令依赖树,然后我需要根据一个依赖另一个来重新定位它们。我可以通过解析 pdb 文件找到函数,但是创建指令依赖树是我完全迷失的棘手部分。
压缩指令
- 压缩指令并在过程中执行一系列不常见和晦涩的指令。并且,像第一步一样,通过使用代码签名数据库来做到这一点。
再次澄清一下,我需要帮助执行第 2 步,我什至不确定我应该如何开始。我曾尝试制作一些图表,但它们变得非常难以理解。
OH:很明显,受保护的代码不会是最佳的——但这只是我想在学校玩的一个安全项目。