-
-
[讨论]有谁研究过64位游戏CALL如何调用,一起来研究下
-
发表于:
2016-2-15 19:26
11033
-
[讨论]有谁研究过64位游戏CALL如何调用,一起来研究下
游戏是剑网3,系统Win7 64位,游戏当然也是64位,用x64dbg找到喊话CALL,下在是这个CALL的原型:
000000013F2FC74E | 4C 63 C8 | movsxd r9,rax | ;eax=8 喊话内容长度+2
000000013F2FC751 | 48 8D 44 24 40 | lea rax,qword ptr ss:[rsp+40] | ;喊话内容
000000013F2FC756 | 48 8D 0D C3 D1 1D 00 | lea rcx,qword ptr ds:[13F4D9920] |
000000013F2FC75D | 4C 8B C5 | mov r8,rbp | ;rbp=2632AED8 //这个值要找来源
000000013F2FC760 | 8B D3 | mov edx,ebx | ;ebx=1 频道
000000013F2FC762 | 48 89 44 24 20 | mov qword ptr ss:[rsp+20],rax |
000000013F2FC767 | E8 84 76 E7 FF | call jx3clientx64.13F173DF0 | ;喊话CALL
VC++用代码调用(64位 ):
void RoleTalk()
{
__try
{
__asm
{
mov r9,0x8 //0x8为喊话长度+2
lea rax,qword ptr ds:[0x050523F0] //0x050523F0为喊话内容地址
lea rcx,qword ptr ds:[0x13F4D9920]
mov r8,0x2632AED8 //这个值会变化,暂时没去找来源
mov edx,0x1 //0x1为频道
mov rbx,0x13F173DF0
call rbx
}
}
__except(1)
{
AfxMessageBox(L"11111");
}
}
经过VS附加游戏调试DLL,问题出在CALL的调用,不是调用出异常就是调用没反应,不知道谁研究过。
注:mov rbx,0x13F173DF0
call rbx
这个地方试过改为mov r9,0x13F173DF0
call r9
但是还是无效
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)