先解释一下远程进程,其实就是要植入你的代码的进程,相对于你的工作进程(如果叫本地进程的话)它就叫远程进程,可理解为宿主。 ){4$oXQ
=Kt!+^\")
首先介绍一下我们的主要工具CreateRemoteThread,这里先将函数原型简单介绍以下。 =T#?:J#a
5)p! }hWs
CreateRemoteThread可将线程创建在远程进程中。 6\6g-1B`
DU:+D}vl
函数原型 #QiNSS
HANDLE CreateRemoteThread( %m "9 =C
HANDLE hProcess, // handle to process E4xybVo@
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD A}sdi4[`
SIZE_T dwStackSize, // initial stack size lk4$c1ao2@
LPTHREAD_START_ROUTINE lpStartAddress, // thread function VaTA|=[;
LPVOID lpParameter, // thread argument A2I\T,Z
DWORD dwCreationFlags, // creation option +jj] tJ$[
LPDWORD lpThreadId // thread identifier +"PME1
); A 1x
参数说明: >UV?nXP}
hProcess "cDc~~3/@
[输入] 进程句柄 fILD~
lpThreadAttributes +A2}@k
[输入] 线程安全描述字,指向SECURITY_ATTRIBUTES结构的指针 fP{IW`t}]
dwStackSize pB,l t6
[输入] 线程栈大小,以字节表示 KZ|p_{0&
lpStartAddress ^-s`$lTp
[输入] 一个LPTHREAD_START_ROUTINE类型的指针,指向在远程进程中执行的函数地址 ;:P}s4p
lpParameter 3+V.9TL'a
[输入] 传入参数 W(PNw2
dwCreationFlags u\=yY.
[输入] 创建线程的其它标志 &&te(DC\
pwo @
S"
lpThreadId - 4B&