调试子进程的方法

调试子进程的方法

情况1:恶意程序注入进程数据并恢复线程

被注入的进程可能是已经存在的,也可能是自己创建的
相关API:

WriteProcessMemory
ResumeThread

方法1

为了从入口点开始调试打开的子进程,逆向分析人员可以在WriteProcessMemory()中设置断点,当包含入口点的节被写入子进程的时候,将入口点代码补丁为“跳往自身”指令(0xEB0xFE)。当子进程的主线程被恢复,子进程将在入口点进入一个死循环。这时逆向分析人员就可以附加一个调试器到子进程,恢复被修改的指令,继续正常的调试。

来自 脱壳的艺术 文档,缺点就是有可能卡死

方法2

在子进程的主线程被恢复之前,新打开一个调试器附加到子进程,设置相应的内存执行断点,然后在原调试器将子进程的主线程恢复,这样子进程会触发内存执行断点,就可以在新调试器里继续调试了。建议使用这种方法。

情况2:直接创建子进程

相关API:

CreateProcessA/W

如果和父进程没关系,直接去调试子程序就好了;
如果有不可分割的关系,考虑使用镜像劫持的方法,不行可以用改文件入口点为死循环的方法。


2020/10/24

慢慢适应: https://www.cnblogs.com/-rvy-/p/16767862.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值