【问题标题】:How to debug malware injected code?如何调试注入恶意软件的代码?
【发布时间】:2012-09-07 10:59:53
【问题描述】:

我正在调试一个恶意软件注入 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. resume 后,线程跑得太快,我无法及时附加到 ollydgb。
  3. 我转储内存并将其从写入 Notepad.exe 的内容中保存为 PE, 但它运行时出错。

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

【问题讨论】:

    标签: debugging reverse-engineering code-injection malware


    【解决方案1】:
    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 开始单步调试。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-09-09
        • 1970-01-01
        • 1970-01-01
        • 2014-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-26
        相关资源
        最近更新 更多