2011-06-06 80 views
5

我想在我的應用程序中實現一些基本的反調試功能。我想特別關注的一個領域是試圖阻止人們輕鬆地從我的應用程序中獲取可用的內存轉儲。我看過這篇文章: http://www.codeproject.com/KB/security/AntiReverseEngineering.aspx反調試 - 防止內存轉儲

這給了我很多關於如何檢測調試器是否存在的技巧,以及有關如何防止內存轉儲的一些信息。但作者指出,應該小心使用這些技術,例如刪除內存中的可執行頭文件。他提到可能有些時候操作系統或其他程序可能想要使用這些信息,但我看不出有什麼用途。

有沒有人有一些其他技巧,我怎麼能阻止反向工程師傾銷我的程序?

我在Windows上。

親切的問候,

菲利普Bennefall

回答

3

還有就是防止有人竊取您的進程的內存轉儲沒有合理的方式。例如,我可以將一個內核調試器附加到系統上,中斷所有執行,並從調試器中提取進程的轉儲。因此,我會專注於使分析更加困難。

這裏有一些想法:

  • 模糊處理和加密您的可執行代碼。僅對內存進行解密,並且不要將解密的代碼長時間保存超過您的需要。

  • 不要將敏感信息存儲在內存中超過必要的時間。使用RtlZeroMemory或類似的API來清除不再使用的緩衝區。這也適用於堆棧(局部變量和參數)。