先解释一下远程进程,其实就是要植入你的代码的进程,相对于你的工作进程(如果叫本地进程的话)它就叫远程进程,可理解为宿主。 df7z&{R
?_F,HhQ
首先介绍一下我们的主要工具CreateRemoteThread,这里先将函数原型简单介绍以下。 Cu\A[6g,
w^&TG3m1~
CreateRemoteThread可将线程创建在远程进程中。 4{\h53j$
z.[ Ok
函数原型 $[Fh|%\
HANDLE CreateRemoteThread( ntSPHK|'
HANDLE hProcess, // handle to process sS $- PX
C
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD { [4Y(l1
SIZE_T dwStackSize, // initial stack size 66%#$WH#
LPTHREAD_START_ROUTINE lpStartAddress, // thread function
F%6`D
LPVOID lpParameter, // thread argument X3:-+]6,d
DWORD dwCreationFlags, // creation option j]"Yzt~u
LPDWORD lpThreadId // thread identifier UP]J`\$o
); -< 7KW0CA
参数说明: OZ q/'*
hProcess WbS2w @8
[输入] 进程句柄 <bf^'$l
lpThreadAttributes ud`.}H~aB
[输入] 线程安全描述字,指向SECURITY_ATTRIBUTES结构的指针 .O'gD.|^N
dwStackSize <)]B$~(a
[输入] 线程栈大小,以字节表示 m//(1hWv7
lpStartAddress VB 8t"5
[输入] 一个LPTHREAD_START_ROUTINE类型的指针,指向在远程进程中执行的函数地址 eP3)8QC
lpParameter >=2nAv/(
[输入] 传入参数 G2k r~FG
dwCreationFlags 4\?I4|{pC
[输入] 创建线程的其它标志 ujcNSX*
PL8eM]XS
lpThreadId nFlj`k<]Y
[输出] 线程身份标志,如果为NULL,则不返回 d&