摘要:
在前面关于CLR寄宿的几篇博客(CLR寄宿(上) MSCOREE.DLL,CLR寄宿(中) 托管exe文件的加载和执行,CLR寄宿(下) 托管宿主)中,介绍了常用的宿主接口。宿主接口,允许我们使用非托管代码创建CLR宿主,从而启动CLR,运行托管代码,控制垃圾回收……等一系列功能。本篇博文要讲解的是使用CLR宿主的一个场景——进程注入。
进程注入是一种将代码注入到已有进程地址空间内,并执行的技术。进程注入的技术有很多,本文基于LoadDLL&CreateRemoteThread技术来讲解。
一般而言,我们会将要执行的代码编译到DLL文件里,然后加载到目标进程内执行。对于一个非托管DLL直接加载并执行就可以了,但是如果想把一个托管DLL加载到进程中并执行就要费一番周折,因为托管代码是不能直接执行的,要经过CLR的二次编译。如何解决这个问题呢?
因为环境对进程注入的影响很大,我这里先列出 阅读全文