分析注入代码的两种方法

一、dump法(适用于比较完整的注入)

对于比较基础的注入方法:

WriteProcessMemory...WriteProcessMemory...CreateRemoteThread

可以用WinHex新建一个文件,每次调用WriteProcessMemory的时候,都将buffer中的二进制数据拼接在WinHex中。

最后保存下来,通常都是一个可执行程序


二、实时调试

功能介绍:OD——选项——实时调试设置,设置完成后对于新创建的进程,OD会开启另一个实例自动进行附加

不论是哪种注入方式,想要实时调试就一定要知道startAddress,获取startAddress的两种方法:

a. 如果是CreateRemoteThread,第四个参数LPTHREAD_START_ROUTINE lpStartAddress

b. 如果是通过SuspendThread,ResumeThread,那么就一定会修改线程上下文的eip。SetThreadContext,传入的参数就是结构体pContext

    startAddress = pContext + 0xB0(B0是eip的偏移位置,XP有效,其他高版本操作系统可能会有变化)


知道startAddress后就三种方法可以实时调试:

a. 在WriteProcessMemory时,先修改startAddress为 0xCC(int3),开启实时调试,F8执行运行线程的语句

b. 在WriteProcessMemory时,先修改startAddress为 FE EB(无限循环当前指令),开启实时调试,F8执行运行线程的语句

c. 不开启实时调试,直接F4来到运行远程线程的语句,手动打开另一个OD,附加到目标进程,Ctrl+F9到startAddress,下断点(此时目标程序是暂停的)

    F8执行运行远程线程的语句,F9运行目标进程,自动来到startAddress处



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值