2

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

CreateProcess(notepad.exe , create_suspend)  
GetThreadContext  
VirtualProtectEx  
WriteProcessMemory(address=1000000, Size:10200)  
WriteProcessMemory(address=7FFD8008, Size:4)  
SetThreadContext  
ResumeThread
  1. 在 Notepad.exe 恢复之前,没有 pid 可以将其附加到调试器。
  2. 恢复后,线程运行得如此之快,以至于我无法及时附加到ollydgb。
  3. 我转储内存并将其从写入 Notepad.exe 的内容中另存为 PE,但运行时出错。

那么如何调试注入恶意软件的代码呢?谢谢!!

4

2 回答 2

4
  1. 在调用 WriteProcessMemory 之前,您应该将注入代码的第一个字节修改为“int 3”(操作码为 cc)。
  2. OD不能附加到没有启动主线程的进程,改用WinDbg。
  3. 在 WinDbg 附加到子进程后调用 ResumeThread。
  4. 按 F5 让主线程运行。
  5. 主线程在看到'int 3'时将停止,现在你应该将字节更改为原始值。例如:eb addr_to_change 55。 PS:opcode 55 表示“push ebp”,这是在一个函数开头执行的最常见的指令。
  6. 现在,按 F10 开始单步调试。
于 2012-09-27T02:55:41.790 回答
1

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

于 2012-09-14T11:19:17.483 回答