吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2931|回复: 2
收起左侧

[求助] 下断的代码被多个指令访问该怎么追踪回去

[复制链接]
geleisisisi 发表于 2020-2-20 15:28
最近刚刚学了CE和OD,想找个游戏来练手,正好古3也挺好玩的,就想找找一些游戏call,比如说添加物品什么的
但是上手后才发现我太天真了。
首先这游戏是64位,OD已经没戏了,X64DBG只要一附加直接崩溃,只有CE的veh模式能用。
但最关键的是,当我查找改写物品数量的代码,并且下断点的时候,发现该断点会不停的触发。
经过我的一些分析,我发现这游戏的代码真牛逼,物品加减从同一段代码走,金钱加减也从这里走,甚至血量加减也从这里走,还有各种杂七杂八根本不知道来源何处的运算都从这里走。
在这种大杂烩的情况下该怎么找call?
先说下我的尝试吧,我设置过断点条件,也尝试过注入代码,然后进行下断
1.PNG
确实这样做的话在指定物品加减的情况可以断下来,但是断下来了以后并没有卵用,返回地址是这样的
1.PNG
我也一个一个追上去尝试过,但上层所有的函数都是一个尿性,全都在奔跑着永不停息。一直到最上层,终于停下来了,但是加减物品也不会触发断点了
虽然加减物品的代码我能断下,但是后面的这些函数,根本分不清究竟是干什么的。我没有办法在加减物品的时候断下这个call→无法得知call的参数→没有参数不知道call干什么的→没有参数无法设定条件断不了call,就这样进入一个无限的死循环。
然后我祭出了ultimap,顶着卡顿完成了搜索和过滤,然而还是没有用,过滤出来的call我都一一尝试过,确实有些按钮的事件我能断下,但是问题是中间夹杂着杂七杂八的指令都在访问里面的代码。
举个最简单的例子。买物品的时候,加减购买数量会触发一段代码,先读取物品ID,然后经过一段运算出这个物品的地址然后读取数量。
问题是读ID和读数量在同一个子函数里,而且间隔甚远,中间还有大段的循环完全看不懂在干啥,物品ID要获取两次,然后整整循环47次!!!!也就是经过这个读取数量代码47次,然后才真正是读取指定ID的物品数量。
我觉得我脑子已经不够用了
有没有大神能指导下,像这种多个指令访问同一段代码或者call的,要怎么样才能反追回去找到我想要的call

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Ceylon 发表于 2020-3-13 18:23
好吧我又把吃灰了很久的古剑3下载回来了。

我找了一下影响到道具数量的语句:
Gujian3.exe+B4278 - 41 0F11 00            - movups [r8],xmm0

看到这句汇编语句就隐隐觉得不妙,因为xmm寄存器主要是对浮点数进行操作,而道具数量为4字节整型,说明可能游戏中会有大量数据都需要用到这段公共代码进行处理。

然后查找这条语句访问了什么地址,结果如下:
古剑1.png

果不其然,8000+个结果,并且大多数数据还在实时变化,说明不断有数据需要用到这条语句,那么仅针对这条语句修改必将会导致无法预估的后果。
如果仅对这句话下断点找call的话,我觉得是不太可能实现的,在执行ret语句之后每次都可能会返回到不同的地方去。

仅靠CE这一个工具应该不太好实现,我目前想到的笨办法就是用IDA把整个游戏静态反汇编一遍,然后再来找对应的call。

btw,你说的附加x64dbg会导致游戏闪退是一种防作弊机制,怪物猎人也是这样,用IDA处理可以跳过程序对debugger的检测,处理完之后就可以用x64dbg来分析了。
(话说古剑3这种游戏为什么会有这么高等级的防作弊机制T_T)

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
geleisisisi + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| geleisisisi 发表于 2020-3-14 07:36
Ceylon 发表于 2020-3-13 18:23
好吧我又把吃灰了很久的古剑3下载回来了。

我找了一下影响到道具数量的语句:

多谢多谢,对于我这种新学者毫无头绪,能给出一个方向能让我直到该往哪里去学
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表