在分析恶意软件时,我遇到了一些打包程序,这些打包程序将实际的恶意软件代码注入到新生成的进程中,并以这种方式执行。为此,他们在挂起状态下创建一个进程,注入代码,然后在Windows上使用ntdll.NtResumeThread继续执行该代码。获取解压缩的二进制文件。为此,我在ntdll.NtResumeThread处中断。使用Olly 2,我可以附加到挂起的进程。

我的问题是,这似乎可以恢复该进程。如果它将在入口点中断,那将是可以的。但事实并非如此。在我附加的进程终止之前,Olly不会中断。是的,我可以转储内存。但是,前提是该文件没有被恶意软件修改。另外,我也不希望在拆包过程中完全运行该恶意软件代码。 >
提前感谢!

评论

使用内核调试器。我认为您遇到的也是官方调试API的局限性,尽管我不能说OllyDbg是使用该方法还是自己的自制方法。
一到测试WinDbg,我就会立即尝试:)

@ j0ker这是我不久前写的一个链接,用于打破Ollydbg中的挖空/子进程的入口点。应该会有所帮助。 hooked-on-mnemonics.blogspot.com/2013/01/…

#1 楼

仅供参考,您所引用的注入方法称为动态派生或过程空心化。 (本来可以从父级使用NtResumeThread()恢复的版本)仍将被暂停。与OllyDbg连接后,可以在OEP上设置断点并恢复挂起的线程;这将导致OllyDbg在OEP处中断。

评论


你是对的。我什至没有想到要寻找其他线程。谢谢!

– j0ker
14年6月13日在17:44