首页
社区
课程
招聘
[求助]注入进程调用call,如何返回参数
发表于: 2008-7-28 21:39 6262

[求助]注入进程调用call,如何返回参数

2008-7-28 21:39
6262
ParamAdd =VirtualAllocEx(pid, NULL,sizeof(moveParam), MEM_COMMIT, PAGE_EXECUTE_READWRITE);
	WriteProcessMemory(pid, ParamAdd,&moveParam,sizeof(moveParam),NULL);

	ThreadAdd =VirtualAllocEx(pid, NULL,4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
	WriteProcessMemory(pid, (LPVOID)ThreadAdd,(LPVOID)rdBld,4096,NULL);

	hThread =CreateRemoteThread(pid, NULL, 0, (LPTHREAD_START_ROUTINE)ThreadAdd,ParamAdd, CREATE_SUSPENDED,hreadID);
	ResumeThread(hThread);



void __stdcall rdBld(int *mp)
{   
    __asm
    {
		mov     ecx, dword ptr [0x74206C]
		mov     eax, dword ptr [ecx]
		mov     eax, dword ptr [eax+0x1C]
		push    0x0
		push	0x0068F2EC
		call	eax
		mov		mp,eax
    }
}


我想把参数调用后得到的eax的值存进mp,然后将mp返回。
可是在这个内联汇编里面,mp似乎不受影响。我测试了好几遍,感觉是参数的传入有问题。
应该怎么做呢?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你是在做外挂吧..应该是在取 MP 吧!!
我感觉你自己应该写的有问题..
我不知道 0074206C 是不是你游戏的人物基址

mov mp,eax 是绝对可以正确执行的..

应该是你内联的写法错误..

你应该把MP 的地址写出来..才可以帮你看看..
2008-7-29 12:18
0
雪    币: 92
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
  MP是MoneyParam的简写…………
mov mp,eax可以执行没错,可问题是在注入调用的方法,这个返回值应该怎么得到。
2008-7-29 18:50
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这里的关键问题是:
不知道你 call  eax
后..返回值 eax 是值..还地址

int __stdcall rdBld( )
{
int mp;
_asm
{
//....
mov mp,eax
}
return mp;

}

这样返回是可以的
2008-7-30 22:58
0
雪    币: 215
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
你确定mp的地址,游戏本身不用到那里?或许他定时被游戏写0了,我以前就遇到过。
2008-8-16 22:13
0
游客
登录 | 注册 方可回帖
返回
//