1. 寄存器值的跟踪与分析
有时候有的参数会经常变化 所以需要找到他存放的基址才能获取每次变化的值.这个时候就要对参数进行跟踪找到他的基址.一般是用CE 或者用OD分析代码取到
对于这类值的跟踪我建议使用CE.最后说明一下,基址的公式并不只有一种,用最短的那个公式即可
如果某些需要用OD来跟踪的话,最好学下汇编的基础.
2.寄存器值的来源!
很多参数都是有来源的,比如说,喊话内容 来自于 你输入的喊话框地址, 压入的频道信息来自于你选择的频道,买卖的数量来自你选择的买卖窗口, 坐标的值来自于你点击地图生成的反馈,等等的一切都是.
看似很简单的东西,大部分人都明白.其实还有一些参数也是由一些
2. 写CALL时常见的错误
一般写CALL的时候常见的2种错误是,一个是无法读取一个内存地址,或者是无法写入一个内存地址,这个代码的地址一般在CALL的内部.一般由寄存器的参数赋值错误或未对需要的寄存器赋值造成的
还有一种常见的是堆栈不平衡所造成的错误.
这2种是比较常见的错误,也非常好解决,只要对照一下正确的寄存器参数就可以了
4.找CALL的思路!
找CALL时,思路很重要,如果一个打坐的CALL无法用bp send返回找到, 那么该如何找呢?思路就是打坐的状态~游戏里 人物的每个动作必定有些内存值会不一样.也许这些值代表人物是在打坐状态,那么我们跟踪这个
值就很容易找到CALL了.或者说征途的买卖功能, 他的游戏是这样实现买卖的首先打开买卖窗口是不会发包
的,最后会弹出一个确认框,这个时候点确定便会发一个买卖封包.CALL内部压入了一个确认框的基址.
如果你找到这个最后确认的CALL那么之前的窗口如何寻找呢? 我觉得既然是买卖窗口最后产生的确认框地址,我们也可以通过这个地址来寻找到买卖的窗口.
一个喊话功能寻找的话并非只有查找访问喊话地址的代码,你也可以查找频道信息,密人信息等聊天有关的.所以依照这个思路,查找怪物ID也可以通过找攻击CALL来寻找.
只要你找对了正确的思路,你便可以通往一条成功的道路.
切记:任何东西在内存都会有一个表示的值.通过这个值你可以找到你想要的东西