反调试 - 防止内存转储

Phi*_*all 5 memory debugging dump

我试图在我的应用程序中实现一些基本的反调试功能.我特别想关注的一个方面是试图阻止人们轻松地从我的应用程序中获取可用的内存转储.我在http://www.codeproject.com/KB/security/AntiReverseEngineering.aspx上阅读了这篇文章

这给了我很多关于如何检测是否存在调试器的技巧,以及有关如何防止内存转储的一些信息.但作者指出,应该注意使用这些技术,例如删除内存中的可执行标头.他提到操作系统或其他程序可能有时会想要使用这些信息,但我看不出是出于什么目的.

有没有人得到一些关于如何阻止逆向工程师抛弃我的程序的其他提示?

我在Windows上.

亲切的问候,

Philip Bennefall

Sas*_*ein 6

没有合理的方法来阻止某人捕获您的进程的内存转储。例如,我可以将内核调试器附加到系统,中断所有执行,然后从调试器提取进程的转储。因此,我将集中精力使分析更加困难。

这里有一些想法:

  • 混淆和加密您的可执行代码。仅对内存进行解密,并且不要将解密后的代码保留所需的时间。

  • 不要将敏感信息存储在内存中的时间超过必要的时间。使用RtlZeroMemory或类似的API清除不再使用的缓冲区。这也适用于堆栈(局部变量和参数)。