一. 概述
远线程注入是指为要注入的目标进程创建一个远程线程,在远程线程里面加载要注入的目标dll。Windows操作系统提供了跨进程的内存读写机制,这就为各种注入打下了基础。
二. 用到的Windows API函数
创建远程线程的API是CreateRemoteThread,查找msdn,其函数原型如下所示:HANDLE WINAPI CreateRemoteThread(
_In_ HANDLE hProcess,//目标进程的句柄
_In_ LPSECURITY_ATTRIBUTES lpThreadAttributes,//安全属性
_In_ SIZE_T dwStackSize,//初始堆栈大小
_In_ LPTHREAD_START_ROUTINE lpStartAddress,//线程要执行的函数
_In_ LPVOID lpParameter,//给线程函数传递的参数
_In_ DWORD dwCreationFlags,//线程的一些标志
_Out_ LPDWORD lpThreadId//创建好的线程ID
)。
三. 远线程注入的原理
由上可知,为要注入的目标进程创建远程线程后,线程的执行函数是参数lpStartAddress指向的函数,原型为:
DWORD WINAPI ThreadProc(
_In_ LPVOID lpParameter
)
有一个参数lpParameter就是创建远线程时传入的参数。这个函数原型跟加载dll的API函数LoadLibrary比较发现,二者