首页
社区
课程
招聘
未解决 [求助]某游戏找地图数据,我所述的办法找不到,能不能提供下思路? 10雪币
发表于: 2025-1-6 00:36 2022

未解决 [求助]某游戏找地图数据,我所述的办法找不到,能不能提供下思路? 10雪币

2025-1-6 00:36
2022

游戏是某传奇游戏。目的是:找地图数组(障碍物通行的数据)
我所试过的办法:
办法1:SEND断下移动的执行流,回溯到移动CALL,然后在CALL内找障碍物判断的代码,找地图数组。
移动CALL是找到了,但是内部我F7一条一条看,并没有看到地图障碍物相关的数据。。。
那个移动CALL,人物在墙边点墙(人物不会移动),不会执行那个移动CALL,判断障碍物的代码,很可能在那个CALL之前,但是我往前回溯,指令大概是这样:
JMP XXXXX
mov XX,XX //A处
XXXXXXXXX
.........
CALL 移动函数
是跳转过来的,上面不远处有个jZ A(不一定是这执行来的,但没看到其它位置跳A处),照此往前走,然后遇到的指令就是一直会断,我没能力回溯了。断下的寄存器值和栈顶部分数据也看不明白。。。不知道怎么断到想要的执行流。。。移动CALL的外层CALL是一直断,寄存器值压根不变,估计是全局变量传参进去的,我没能力在外层断到目标执行流。。。。内层无法回溯,稍外层没能力断到想要的,放弃此办法。

办法2:我点击拍卖按钮,这个按钮会更新数据,会调用SEND,试着回溯到鼠标点击CALL。
确实找到一个函数,按键盘不会断,但是鼠标点击就会断。。。我试了下,在墙边点墙(不能移动)和正常点地面移动都会断。我在该位置断了“墙边点墙”的执行流 和 正常能移动的执行流,作好标记,比对跳转,发现跳转都是一样的。。。放弃此办法。

办法3:想着当前地图对象里,会不会保存当前地图数组信息。我搜索当前地图的横向长度。
最终找到3个存当前地图横向长度的,这里暂时表示为地址A,B ,C。其中一个A,它附近除了存横向长度,还有纵向长度,当前地图名信息。有一个指针指向的位置进去就是 01010101 01010202(只有00 01 02三种值),很像障碍物数组,甚至连个数都像,500X500的地图,它那块数据刚好25W个字节,但是我写了个DLL,注入进去把那块全部写1,或全部写0,或全部写2,均对游戏通行无影响。。。存长度的那个结构里,没看到其它有用的,放弃此办法。

有没有人能提供一下,找地图数组的思路啊?
谢谢大家了!


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 33
活跃值: (526)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这么复杂的东西一句谢谢就要别人帮你呀
2025-1-12 20:09
0
雪    币: 11
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
开着变速齿轮反复撞墙,让游戏频繁做碰撞检测,监控频繁访问的内存区域
2025-2-22 15:29
0
游客
登录 | 注册 方可回帖
返回