内容参考于:易道云信息技术研究院VIP课
上一个内容:角色类的数据分析与C++还原-CSDN博客
基址这个东西说好找也好找,说不好找是真找不着,但就根据一个原则,就是确认这个东西有基址还是没基址,为什么会有没基址的东西?这很正常,比如说UI界面上的按钮,它就有可能没基址,它是动态生成的,它动态生成的这个东西它就是有可能没有,它没有游戏怎样访问?游戏访问一个按钮时完全可以通过,鼠标的位置跟按钮的位置做一个比对,这就可以得出按钮的信息,也就是说它是有可能是没有基址的,但是有的时候有基址,但是它有N级基址,N级基址本身来讲游戏里它开发的时候也不方便,除非它用宏,如果不用宏它就可能会有中间变量,找到中间变量也可以。
然后打开 Cheat Engine 确认一下角色指针地址,1567FE54
然后这个 1567FE54 可以确认它不是一个全局变量,所以它就会保存到另外一个变量里面或者保存到另外一个结构体里面,所以接下来搜索 1567FE54 这个值,然后搜索之后有很多值,这种搜索的方法是一种非常偷懒的方法,能不能成功全靠运气,三级四级指针用这种方法没用,但是这种方法是一定要尝试一下的,因为它省事
上图中有两个绿色的(绿色的是全局变量),所以就把希望寄托在它俩身上了,然后重新登录让角色基址发生变化,观察一下,退出游戏之后发现,下图红框(sro_client.exe+C37D3C)的值变成0了,这个数据给人的感觉就特别好,因为游戏现在退出了它清零了,通过它的变化可以确认游戏的状态
然后重新登录,它又变回了 1567FE54
它也确实是当前角色的数据
然后把游戏关掉,重新启动一下,然后发现它把角色的指针写到了一个全局变量里面,我们使用C37D3C这个地址,因为它很灵敏,它进入游戏的时候就是角色的基址,退出游戏的时候就是0,可以把控整个游戏的状态