反调试 - 防止内存转储

5
我正在尝试在我的应用程序中实现一些基本的反调试功能。我特别想重点关注防止人们轻易地从我的应用程序中获取可用内存转储的方法。我阅读了这篇文章: http://www.codeproject.com/KB/security/AntiReverseEngineering.aspx 这给了我很多提示,告诉我如何检测调试器是否存在,以及如何防止内存转储。但作者指出,我们应该谨慎使用这些技术,比如删除内存中的可执行头。他提到,在某些情况下,操作系统或其他程序可能希望使用此信息,但我不知道是出于什么目的。
请问有没有其他提示,可以停止反向工程师倒出我的程序?
我使用的是Windows。
谢谢。 Philip Bennefall
1个回答

7

无法合理地防止有人捕获您的进程内存转储。例如,我可以将内核调试器附加到系统上,中断所有执行,并从调试器中提取您的进程转储。

因此,我会着重于使分析更加困难。以下是一些想法:

  • 混淆和加密您的可执行代码。仅在内存中解密,并且不要保留不再需要的已解密代码。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接