分析注入代码的两种方法

来源:互联网 发布:监控网络防雷器 20ka 编辑:程序博客网 时间:2024/06/04 19:35

一、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 0
原创粉丝点击