如何给CALL传递参数?
Procedure findguai; //要调用的函数
var
address:Pointer;
begin
asm
pushad
call address //就是这个数,希望能像变量一样使用
popad
end;
end;
function FunIn(Hid:cardinal;FunName:pointer):cardinal;
var
TmpHandle: THandle;
ThreadID: Thandle;
ThreadAdd:pointer;
WriteCount: DWORD;
begin
ThreadAdd := VirtualAllocEx(hid, nil, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);//在目标进程建立内存空间
WriteProcessMemory(hid, ThreadAdd,FunName, 4096, WriteCount);//将要注入的过程写到上面建立的内存空间中
TmpHandle := CreateRemoteThread(hid, nil, 0, ThreadAdd, nil, CREATE_SUSPENDED, ThreadID);//获得注入后过程的句柄ID
result:=TmpHandle;//返回句柄ID
end;
HPRO := OpenProcess(PROCESS_ALL_ACCESS, False,pid);
homeAdd:=FunIn(HPRO,@findguai);//调用注入函数,@findguai是地址
ResumeThread(homeAdd); //运行注入的CALL线程
CloseHandle(homeAdd); //关闭线程
虽然是Delphi的,但意思能看明白就差不多了,借人气问问
findguai是我要调用的函数,其中的call address希望address可以像参数/变量一样使用。而代码注入到目标进程以后,就没办法读本程序内的数据了。CreateRemoteThread第5个参数好像可以传参数进去,但也必须是指针类型,而且我也不知道该怎么用。而且函数内好像也不可以使用API,所以一直试到现在都没找到办法,测试的机器都死机N次了.......各位仁兄帮帮忙吧。。。