最近,我得到了一个自我修改其.text部分的示例。因此,我在写操作的.text部分放置了一个断点,然后继续。我发现它将.text部分归零,然后将解密的代码写入该部分,然后调用解密的OEP。我用Scylla纠正了OEP并转储了.exe文件。 />

这是kernel32.dll中转储的.exe文件的汇编。


PEBear中打开转储文件。我在做什么错?

谢谢。

评论

你能给文件的sha256哈希值吗?

9ed85a6de31604eb431cdd7632cad0e5be54af10a16cc6ca0b886d1f92bb91b8

ImmunityDbg是OllyDbg的一个分支,有时两者都难以识别未包装部分的代码。在Olly中,您可以右键单击这些无法识别的代码,然后单击“分析”>“分析代码”。我建议您遵循此答案中提到的Igor步骤。制作解压缩的文件可执行文件通常会很困难,请记住这一点。

谢谢您的建议,顺便说一句,即使我做相同的事情,每次执行相同的过程时,我都会忘记提及哈希值。
使用反调试方法是否可能导致恶意软件?

#1 楼

首先在入口点本身上放置一个断点,该断点可能根本不在.text部分中,而是完全在另一个部分中。您将看到该程序可以动态地解析其自身的导入,可能是通过在kernel32.dll中搜索LoadLibrary和GetProcAddress。控制权转移到解密后的代码上。如果在那一刻转储文件,然后反汇编结果,则可能能够看到崩溃的原因-可能是反调试机制,这里有太多的可能性列出来(但是请参见http://pferrie.host22.com/papers/antidebug.pdf中的常用选项)。

评论


谢谢。即使我的问题是IAT,我也会投票赞成详细答案。

–rustam Shirinov
17-10-27在19:18

#2 楼

谢谢大家的回应。 IAT就是问题所在。我发现的OEP是指向解压缩代码的真实OEP。但是转储的可执行文件不可运行,因为IAT已损坏。在Scylla中修复IAT之后。现在可以运行了。