如何给CALL传递参数?

lengx1 lengx1 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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次了.......各位仁兄帮帮忙吧。。。
...全文

相关推荐

评论 14
收藏 已收藏
分享
返回顶部
lengx1
进程/线程/DLL 15,466 成员 49,169 内容