关于CreateRemoteThread,VirtualAllocEx .....来帮忙啊.
CreateRemoteThread
函数原型
HANDLE CreateRemoteThread(
HANDLE hProcess, // handle to process
LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD
SIZE_T dwStackSize, // initial stack size
LPTHREAD_START_ROUTINE lpStartAddress, // thread function
LPVOID lpParameter, // thread argument
DWORD dwCreationFlags, // creation option
LPDWORD lpThreadId // thread identifier
);
hProcess
[输入] 进程句柄
lpThreadAttributes
[输入] 线程安全描述字,指向SECURITY_ATTRIBUTES结构的指针
dwStackSize
[输入] 线程栈大小,以字节表示
lpStartAddress
[输入] 一个LPTHREAD_START_ROUTINE类型的指针,指向在远程进程中执行的函数地址
lpParameter
[输入] 传入参数
dwCreationFlags
[输入] 创建线程的其它标志
lpThreadId
[输出] 线程身份标志,如果为NULL,则不返回
在VB调用中 hProcess参数传入的是用OpenProcess得到的进程id,lpThreadAttributes ,dwStackSize 传入0&,lpStartAddress 传入的是LoadLibrayW函数在kernel32中的地址.lpParameter 传入的是个地址,这个地址位于hProcess进程空间中,通过VirtualAllocEx 函数返回的.问题是函数调用总是不成功,lpParameter 是个long 型.在使用CopyMemory函数时如下这样就可以实现指针
dim x as long ,xaddress as long ,y as long
x=34
xaddress=VarPtr(x)
CopyMemory y , byval xaddress , 2
运行后 y=34 但是必须使用byval关键字,但在使用CreateRemoteThread时似乎不太好使
不知道哪位仁兄有好的手段........谢谢.