1、我们再直接搜11 其实也可以搜索减少的数值,但是我觉得麻烦一点而已搜索完了,出来了三个地址,我们再改变一下数值,看看有没有结果现在再搜索13大家可以看到,这样是找不到,我们换一种类型再来试试看 我们先直接用1字节的数据类型来试试搜索结果出来了,可以看到搜索出来了好多个现在我们再把物品的数量改成11,再搜索一下现在可以找到一个地址,说明程序定义物品数量这个变量的数据类型是字节型的,我们可以看出来,记录这个数据值的内存地址是 06F2985C好了,现在我们换OD上场,先打开OD载入游戏,并让游戏运行后,在命令栏内输入 dd 06F2985C并回车在这里可以说明一下,其实我个人觉得 用 db 06F
2、2985C 这个命令也是可以的,只不过用db 命令需要选择前四个数值再下断点而已 用法跟dd命令差不多 ,我还是先用DD命令。我们接着说,下完dd命令后,下硬件访问断点 其实这个游戏下内存访问断点也是可以的,关于用什么方法下断要根据具体游戏而言,有时候不同的游戏要下不同类型的断点。下断后,我们切换进入游戏,选择物品或是改变物品数量,这时游戏断了下来根据汇编代码可以看得到 mov al ecx+3c ecx=06f29820好了,我们先清除硬件访问断点,清除后让游戏运行起来,防止游戏长时间断下来挂掉。现在我们转到CE去找一下这个地址找到了一个地址,地址是09db9804 我们换OD上,在OD的命
3、令栏里打上 dd 09db9804 并回车下硬件访问断点下断后,我们切换游戏,选择物品,这时游戏断下来,如果断不下来可以改变一下物品数量,以后切换游戏不再重复以上内容游戏断下来了,可以看得出来mov ecx esi+14esi=09db97f0 好了,我们切换CE来再来找这一个地址好了,可以看到出现了二个地址,我们来找第一个,如果第一个找不出来的话,再找第二个地址,以此类推我们换OD 断这个地址下断后,切换游戏,OD断下大家可以看一下这段汇编代码 leaediptr ecx*4 mov ecx dword ptr edi+eax我们来整理一下所以说,这里出现了数组了,ecx*4+eax 所以说
4、,在这里大家要注意一下看代码并且 eax=028caab0但是我们还要找出ecx的值,在这里,大家不要看断下来寄存器ecx的值,因为这里的ecx的值是不对的,我们要重新下断,直接在上一句 lea edi ecx*4 这里下F2断点取消硬件断下后,让游戏运行,然后再切换游戏,选择物品,OD断下游戏这时大家可以在寄存器窗口看到 ecx=0 说明是物品的位置,也就是第一栏的位置好了,我们接着讲刚才我们讲到数组了,我们找出eax=028caab0 ecx=0 我换用ce来找eax的地址好了,找到了一个地址,我们换OD 下断下断后,切换游戏,选择物品或是改变物品数量,游戏断下可以看得出mov eax e
5、si+380 esi=02902cc8 再换ce来找地址,大家不要烦啊一样找出来三个地址,其中前二个都是绿色的,有可能前二个都是基址,我们先把二个都点下来,一个一个来试 我们先试第一个 转入OD下断切换游戏,游戏断下在可以看到到基址出来了 mov ecx 6669b8好了,第一个基址出来了,我们进行一下验证打开CE我们来进行一下验证 我们把基址和偏移都输入进去后出现了这样的数值,明显和我们要找的数值不同,然到这错了吗?刚才出来的结果和我们的要的结果不相同,因为开始用CE找地址的时候用的是字节类型,现在我们把类型改成字节类型现在第一个基址出来了,我们再来找第二个绿色的地址,看他是不是也是基址,有可能一个游戏的背包数组基址不止1个基址,我们多试一下。我们来下第二个地址的断点下断后,切换游戏,选物品后,游戏断了下来 现在我们来看一下同样也出来了一个基址 mov eax 666d20 我们来测试一下看看是不是正确的好了,大家可以看得到,二个地址都是正确的,我们现在再打开背包看一下好了,是正确的,这个教程就写到这里吧,希望以后可以跟大家共同的交流
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1