13.第二阶段x86游戏实战2-动态模块地址
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。
工具下载:
链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd=6tw3
提取码:6tw3
复制这段内容后打开百度网盘手机App,操作更方便哦
上一个内容:12.第二阶段x86游戏实战2-CE找基地址
上一个内容通过CE找到了人物状态的基址,上一个内容中游戏是用64位启动的所以内存地址会很长,不管是32位还是64位找法都是一样的,后面会以32位为主
然后本次找模块的地址
首先找一下人物的状态
下图是32位版游戏的人物状态的基地址,公式是 [[[0x00FBEF6C]+0x60]+0x14C],0x00FBEF6C是基址,0x60是偏移,0x14C是偏移
然后有些游戏它模块(这里的模块指的是exe、dll、lib)的地址是会变的,模块变了这个人物状态的基地址就会变,也就是说这个游戏换个电脑或重启电脑之后现在找的人物状态的基地址就没法用了,所以接下来要把 0x00FBEF6C 换成模块基地址加偏移的方式,首先找模块地址,关闭CE打开OD,如下图只有CE打开过这个界面就要把CE关闭,如果不关闭OD没法附加
然后打开OD并附加到游戏,附加之后,在下图红框位置输入 dd [[0x00FBEF6C]+0x60]+0x14C,然后按回车键(Enter键)
然后下图红框位置就会显示人物状态了
然后右击选择硬件访问断点,如下图
然后它会在下图位置断下来,这里要注意下图红框位置的代码还没执行
然后关闭硬件访问断点,如下图
到这就通过OD找了一次基址,接下来找模块的地址
然后点击下红框的E,点击之前要记住现在的人物状态的基址 0xFBEF6C
然后下图红框的列就是模块的地址了,这么多模块要用哪个?继续往下看,看完就知道了
然后第一个模块的范围是A20000 到110D000这个范围,上方找的人物状态基址是 0x00FBEF6C,它正好在A20000 到110D000这个范围内,所以人物状态的基址要从第一个模块里找,怎么找?继续往下看
如下图用人物状态基址减去模块基地址,得出一个结果,这个结果就是模块基地址到人物状态基地址的偏移,现在的公式 [[模块基地址+0x59EF6C]+0x60]+0x14C 这样来使用,这样只要游戏不修改模块里的内容,地址就不会发生变化,也就是只要游戏的版本一样任何电脑都可以用这个公式来找人物状态基地址
模块里面的代码,也就是游戏更新了,模块+偏移的偏移会变,这怎么办?可以通过代码的特征去定位偏移,通过特征定位的方式后面再写,这种代码特征定位的方式放在基础中不合适