提示:在遍历血量的时候应该使用单浮点数进行搜索。 1.首先你需要根据第一关中的搜索方法,分别将下面四个人物的血量搜索到,下面我已经搜索好并做好了备注。 2.你可以分别在每个动态地址上面,右键选择`找出是什么改写了这个地址`,会发现这四个地址都指向了同一条汇编代码,这也就说明了其使用了共享代码。 我方队友的结构 敌人的结构 上方的四个图片可看出我方队友编">

CE修改器入门9:查找共享代码

大理寺少卿 · · CE\x64dbg基础
0

本文共计952个字,预计阅读时长3.8分钟。

本关我们将学习共享代码,在C语言中角色属性都是以结构体的方式进行存储的,而结构体所存储的信息都是连续性的,这一关我们将会解释如何处理游戏中的共用代码,这种代码是通用在除了自己以外的其他同类型对像上的
常常你在修改游戏的时候, 你找到了一个单位的健康值 或是你自己角色的生命值, 你会发现一种情况: 如果你把生命值相关代码移除的话,其结果是你的角色无敌, 但你的敌人也无敌了,这就是共享代码搞的鬼。

>步骤 9: 注入++: (密码=31337157)
>
>本关模拟一种游戏,其中左边为我方,而右边为敌人,当我们点击重新启动并自动执行的时候我方血量不足会死亡。
>你的任务是找到改写健康的代码, 并且修改以至于你可以获得胜利,但"绝不能"使用锁定HP的方法。
>提示:在遍历血量的时候应该使用单浮点数进行搜索。

1.首先你需要根据第一关中的搜索方法,分别将下面四个人物的血量搜索到,下面我已经搜索好并做好了备注。

1379525-20220718132515615-415347961

2.你可以分别在每个动态地址上面,右键选择`找出是什么改写了这个地址`,会发现这四个地址都指向了同一条汇编代码,这也就说明了其使用了共享代码。

1379525-20220718132628324-193059533


我方队友的结构

1379525-20220718132640633-938618625

1379525-20220718132652430-534782107


敌人的结构

1379525-20220718132704923-461455345

1379525-20220718132714472-1797843114


上方的四个图片可看出我方队友编号为1而敌人的编号为2,我们可以通过编号来判断是否为敌人,来决定要不要让其掉血。
当然也可以判断名字的开头字母来决定,如果是D或E开头,则说明是队友不能让其掉血,否则的话则直接执行扣血代码。

4.接下来我们要注入代码了,CE切换到内存浏览窗口,然后选择`工具 ->自动汇编`,`模板 ->代码注入`点击确定。

1379525-20220718132730518-515388846


上方原始代码是 mov [ebx+04],eax,意思就是,血量处于 ebx+04 的位置。

5.为了能够遍历到状态位,我们需要计算出队伍编号和血量的偏移值,

观察下图发现 Dave 血量地址是 019E0794 和队伍编号地址 019E07A0,两者十六进制相减(019E07A0 - 019E0794 = 0C)得到0C,如果血量是 ebx+04,那么队伍编号就应该是 ebx+04+0C 就是 ebx+10。

1379525-20220718132743385-1654791738

6.直接写以下汇编代码,然后执行,注入完成后回到练习程序中然后点击`重新启动游戏并自动执行`,本关会顺利通过。

1379525-20220718132801086-1550305405


最新回复 ( 0 )
全部楼主
  • 暂无评论