首页
社区
课程
招聘
[讨论]有谁研究过64位游戏CALL如何调用,一起来研究下
发表于: 2016-2-15 19:26 11032

[讨论]有谁研究过64位游戏CALL如何调用,一起来研究下

2016-2-15 19:26
11032
游戏是剑网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
但是还是无效

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 4939
活跃值: (2360)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我想问下x64下怎么使用-__asm 内联汇编
2016-2-15 20:21
1
雪    币: 775
活跃值: (3420)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
3
x64的call只能是near call。我估计你这个call的范围是far call,所以出错。你可以研究一下x64的far call
还有R8一般是第一个参数,“//这个值会变化,暂时没去找来源”估计也不太可行吧。。。
2016-2-15 20:49
0
雪    币: 1260
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mov rbx,0x13F173DF0
call far rbx
mov rbx,0x13F173DF0
call near rbx
都试了,没用。
“这个值会变化,暂时没去找来源”,游戏不关不会变,重新上这个值才会变
2016-2-15 21:46
0
雪    币: 50
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
路过,学习一下!!!!!!
2016-2-16 09:57
0
雪    币: 775
活跃值: (3420)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
6
不是让你写call far啊。。x64下没有call far了,要自己实现。
http://bbs.pediy.com/showthread.php?t=207393
这个也许对你有帮助
2016-2-16 10:10
0
雪    币: 114
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
参数都变了 写CALL还有什么用?
你OD断了之后获取到参数 再编译 然后再写再注入测试吗?
2016-2-25 17:08
0
雪    币: 128
活跃值: (977)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看看这个,里面有x64call分析和代码调用写法:
https://blog.csdn.net/hzw320
2021-6-29 17:54
0
游客
登录 | 注册 方可回帖
返回
//