如何调试恶意软件注入的代码?

时间:2012-09-14 09:34:27

标签: debugging reverse-engineering code-injection malware

我正在使用以下方法调试针对Notepad.exe的恶意软件注入:

CreateProcess(notepad.exe , create_suspend)  
GetThreadContext  
VirtualProtectEx  
WriteProcessMemory(address=1000000, Size:10200)  
WriteProcessMemory(address=7FFD8008, Size:4)  
SetThreadContext  
ResumeThread
  1. 在恢复之前,没有pid将Notepad.exe附加到调试器。
  2. 恢复后,线程运行得如此之快,以至于我无法及时附加到ollydgb。
  3. 我转储内存并将其保存为写入Notepad.exe的PE, 但它运行错误。
  4. 那么如何调试恶意软件注入的代码?谢谢!

2 个答案:

答案 0 :(得分:2)

  1. 在调用WriteProcessMemory之前,你应该将注入代码的第一个字节修改为'int 3'(操作码是cc)。
  2. OD无法附加到尚未启动主线程的进程,请改用WinDbg。
  3. 在WinDbg附加到子进程后调用ResumeThread。
  4. 按F5键让主线程运行。
  5. 主线程在看到'int 3'时会停止,现在你应该将字节更改为原始值。例如:eb addr_to_change 55. PS:操作码55表示'push ebp',这是在一个函数开头执行的最常用指令。
  6. 现在,按F10开始单步调试。

答案 1 :(得分:0)

CreateProcess返回后,该进程应该已经存在,您应该能够附加到它。另一种方法是跳过ResumeThread调用并在那时附加。