我试图在我的应用程序中实现一些基本的反调试功能 . 我特别想关注的一个方面是试图阻止人们轻松地从我的应用程序中获取可用的内存转储 . 我在以下网址阅读了这篇文章:http://www.codeproject.com/KB/security/AntiReverseEngineering.aspx
这给了我很多关于如何检测是否存在调试器的技巧,以及有关如何防止内存转储的一些信息 . 但作者指出,应该注意使用这些技术,例如删除内存中的可执行标头 . 他提到操作系统或其他程序可能有时会想要使用这些信息,但我看不出是出于什么目的 .
有没有人得到一些关于如何阻止逆向工程师抛弃我的程序的其他提示?
我在Windows上 .
亲切的问候,
Philip Bennefall
1 回答
没有合理的方法可以阻止某人捕获进程的内存转储 . 例如,我可以将内核调试器附加到系统,中断所有执行,并从调试器中提取进程的转储 . 因此,我会专注于使分析更加困难 .
以下是一些想法:
对可执行代码进行模糊处理和加密 . 仅在内存中解密,并且不会将解密的代码保留的时间超过您的需要 .
不要将敏感信息存储在内存中超过必要的时间 . 使用
RtlZeroMemory
或类似的API清除不再使用的缓冲区 . 这也适用于堆栈(局部变量和参数) .