远程线程是攻击者常用的手法,通过这种方式,可以达到隐藏自身的目的,也可以注入代码或者动态库。
攻击者如果使用远程线程进行注入,肯定会在目标进程中写代码,使用的函数是WriteProcessMemory,这个函数的第二个参数给出了写入的目标地址,记下这个地址。后面攻击者会调用函数RtlCreateUserThread,ResumeThread恢复线程运行。在它调用ResumeThread前,附加到目标进程中,点击菜单栏的“M”选项可以看到此进程的内存信息。在主进程WriteProcessMemory写入的内存地址处设置内存访问断点,然后F9让其运行,接着在回到主进程中让其调用ResumeThread,这样,就可以在目标进程中断下来。
定位DllEntry
调试动态库文件的时候,最简单的方式是使用OD载入,OD中的Loaddll.exe会自动加载动态库文件,并定位到入口处,虽然有时候不太准确。这里讲解的是如何手动定位到DllEntry。