14.第二阶段x64游戏实战-分析人物的名字
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动!
本次游戏没法给
内容参考于:微尘网络安全
上一个内容:13.第二阶段x64游戏实战-分析人物等级和升级经验
名字(中文英文符号文字)在计算机中都叫做字符串
打开CE,使用字符串搜索我们角色的名字,如下图红框
点击首次扫描之后,找到了很多名字,这里采用二分查找来看看哪一个是名字
再找名字之前要注意一件事,使用上图的条件搜索可能搜不出东西来,这时就需要勾选下图红框的东西,一般勾选了之后就会使用UNICODE编码,也就是把数值输入框里写的文字的编码当成UNICODE编码(不理解UNICODE编码没事,后面会有机会直接在内存存储的层面来认识它,现在只需要知道,搜不出结果就勾选代码页)来处理
然后二分查找,首先全选1位置,然后点击位置2
然后如下图红框,选中一半
然后双击下图红框位置,注意如果不双击下图高亮位置会没法修改
双击之后会弹出弹框,然后乱修改一个文字看看游戏中人物的名字会不会变化,如果变化了就说明名字的地址在现在选的这一半里,然后就可以删除下面那些没全选的了
选中另一半删除,这里的名字就在上一半中,所以就把下一半也就是下图红框的东西都给删了
删除完,再选择一半继续修改,如下图红框选择一半再次修改
然后下图红框修改了游戏中的名字没反应,所以直接删除了
然后就剩下这两个了,直接单个修改,看看它俩哪一个是名字
然后就找到了名字的内存地址,然后就要打开x64dbg开始找基址了
打开x64dbg,然后鼠标左键单机下图红框位置,然后按ctrl+g,按了ctrl+g后会弹出下图蓝框的输入框,然后在下图蓝框输入在CE中找到的名字地址,然后点确定
然后就可以看到名字了,这里要注意一件事,x64dbg中文显示有问题,有问题的时候只要确定内存地址是正确的就行了
如果非要看中文选择代码页
Windows系统选择GBK(一般都是GBK)如果GBK不行就选UTF开头的,如果utf开头的还不行那就只能一个一个的试了,都试了都不行,然后CE中可以正常显示,那就说明地址错了
然后鼠标右键单击下图红框位置(也就是名字的位置)
然后如下图硬件访问断点
下面的内存地址与上面的地址不一样了,因为游戏闪退了重新开了,设置了硬件访问断点之后,就卡到下图红框位置了,如果游戏没有大更新,应该下图的代码不管你找还是我以后找都会是一样的
注意开始分析之前,先把硬件断点删掉,不然会乱断,如下图删除硬件断点
然后开始分析rdx的值是名字的地址,所以要看rdx的值哪来的
如下图红框rdx来自于[rdx],rdx是名字的地址,然后[rdx]是把名字取了出来(把名字的数据取了出来)
然后如下图红框add rdx, 30,add是加法的意思,所以rdx又来自于rdx+0x30,现在的公式rdx+0x30
然后如下图红框rdx来自于rax+0x18,现在的公式[rax+0x18]+0x30
如下图红框rax又来自于rcx+0x1B0,现在的公式[[rcx+0x1B0]+0x18]+0x30
然后rcx的值这一层没有了,所以来自于上一层
所以就要去上一层,还是跟上面一样给名字设置硬件访问断点
断点触发
删除断点
然后删除之后单机下图红框位置,来到CPU窗口
然后按CTRL+F9,然后按F8,然后就会来到下图位置
然后开始分析rcx的值,如下图红框rcx来自于rsi,现在的公式[[rsi+0x1B0]+0x18]+0x30
然后发现了下图红框的代码,jne意思是不相等就跳转,然后rax的值是人物属性的基址(之前找过人物角色的基址通过对比发现的),这意思就是如果当rsi是人物属性时就往下走,通过[[[[0x00007FF65557EE38]+0x98]+0x1B0]+0x18]+0x30这个公式可以找到我们玩家角色的名字,然后角色名字就找到了