48.x86游戏实战-封包抓取进图call

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!

本次游戏没法给

内容参考于:微尘网络安全

工具下载:

链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3

提取码:6tw3

复制这段内容后打开百度网盘手机App,操作更方便哦

上一个内容:47.x86游戏实战-VEHHOOK封包函数

上一个内容里把进图相关的函数都给进行了hook(拦截)获取了它们的入参(给函数的数据),本次就来分析这些入参

之前在 46.x86游戏实战-DXX封包实现进入地图房间 找到了进入有怪物地图(进入副本)的代码,并且成功进入了副本,但是进入副本只能手动点到副本选择界面之后才可以进入副本,本次就来找怎么进入副本选择界面

首先打开OD并且附加游戏并且来到公共call

然后在公共call打断点

然后通过打开副本选择界面触发断点

然后取消断点

然后按CTRL+F9,它给0x1127D60传了一个0xF,然后调用了0x1127EC0然后就发送了数据包,然后使用wctool.exe模拟这段代码

所以通过wctool.exe模拟这段代码,可以正常进入选择地图界面,那么问题来了,它是怎么知道副本有哪些的

然后经过测试发现,这个游戏某些副本只能在某个区域才有,比如a区域的副本有af1、af2、af3,b区域的副本有bf1、bf2、bf3,如果在b区域模拟上方的代码就会是bf1、bf2、bf3,如果在a区域模拟上方的代码就会是af1、af2、af3,所以接下来要找怎么瞬移到a区域或b区域,也就是找切换地图的代码,然后回到OD,还是在公共call打断点,这次通过切换地图触发(移动也会触发切换地图这里要多搞几次避免分析半天分析的是移动的代码)

通过切换地图触发断点

取消断点

然后按CTRL+F9,按完CTRL+F9之后就来到了下图位置

然后接下来观察下图红框函数的参数

上图红框中的函数在上一个内容里已经被HOOK过了

所以接下来通过wctool.exe注入我们的dll,注入之后启动hook,然后来到Dbgview.exe观察打印的参数,首先启动HOOK之前关闭OD,如果不关闭OD我们的dll没法正常hook,没法正常的原因是我们的HOOK会让OD认为成是它的断点,关闭OD后点击下图红框启动HOOK

启动完来到游戏进行切换地图(切换到可以选择副本地图)的操作,然后通过观察Dbgview.exe,看到它们的入参

然后换一个副本选择地图进入看看它的入参有什么不同

它俩不同的地方

然后下图的来数据猜测是坐标

然后下图的俩数据猜测是地图id

通过切换大量地图做对比,最终发现,如下图E是区域的id

然后区域里的地图id

然后下图红框的两个应该分别是x、y坐标,然后其它的就不知道了

可能随便传就行,接下来写代码测试,并且尝试push的值随便写

pushad
push 0x26
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1127D60
call eax

push 0xE
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128550
call eax

push 0x2
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128550
call eax

push 0x1E
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128580
call eax

push 0x10F
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128580
call eax

push 0x5
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128550
call eax

push 0xE
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128580
call eax

push 0x1
mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1128580
call eax

mov ecx,0x1AEB6E4
mov ecx,[ecx]
mov eax,0x1127EC0
call eax

popad

切换地图代码说明:x、y坐标当切换地图之后会把角色放到0x1128580指定的坐标位置

然后切换到有副本选择地图、然后调用副本显示界面、然后调用进入副本的代码,这一套下来就完成了不管在什么地方都可以进入指定副本的功能

完整代码:wctool里的数字默认都是十六进制,如果不加0x就放到c++里它会认为是十进制的数

pushad
// 切换地图
push 0x26
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127D60
call eax

push 0xE
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eax

push 0x2
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eax

push 0x1E
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128580
call eax

push 0x10F
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128580
call eax

push 0x5
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eax

push 0xE
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128580
call eax

push 0x1
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128580
call eax

mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127EC0
call eax
// 进入副本选择界面
push 0xF
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127D60
call eax

mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127EC0
call eax
// 进入副本
push 0x10
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127D60
call eax

push 0x68
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128580
call eax

push 0
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eax

push 0
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eax

push 0
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1128550
call eax

mov eax, 0x1127EC0
call eax

popad

// 进入副本选择界面
pushad

push 0xF
mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127D60
call eax

mov ecx, 0x1AEB6E4
mov ecx, [ecx]
mov eax, 0x1127EC0
call eax
popad

img

  • 22
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值