学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

2万

积分

41

好友

1157

主题
发表于 2020-8-30 16:50:21 | 查看: 2592| 回复: 0
  前面的外挂系列教程,我们都是以一些简单的单机游戏作为演示的,今天我们将来玩一下鬼泣4这款剧情类游戏,该游戏是由日本游戏开发商CAPCOM开发的一款动作冒险游戏,记得笔者在小时候就玩过这款游戏,在画质等各方面做的都很不错。
  游戏下载地址:链接: https://pan.baidu.com/s/1gfjzw1NmXnlkOmvCtA4MjA 提取码: fwyp
  该游戏寻找基址与以往的游戏略有不同,游戏中的多数数值都不是以数值方式呈现的,而是以血条的方式展现出来的,我觉得这款游戏的搜索方式能让大家学到东西,所以就下载了该游戏,来为大家演示一下常用基地址的找法。


  寻找生命基址+偏移: 这里的血量是一个血条,默认我们不知道是多少,所以要搜索位置初始值,又因为像血量等这些数据默认会用浮点数存放,我们搜索浮点数即可。
  搜索方式,就是首先搜索未知浮点数,然后让人物掉血,搜索减少的数值,继续搜索未变动数值,然后再次掉血,继续搜索减少的数值,最后能找到一些数值,这个数值在0-6000之间,其他的可以排除掉了。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  这四个值,我们依次修改,然后观察,发现第一个是血量的,默认就是6000,如果改成20000则会撑满血条。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  这里查找一级偏移,查找访问地址,

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  这里我们尽可能排除不是mov等指令的,此处选择 004FF282 - F3 0F10 85 CC150000  - movss xmm0,[ebp+000015CC] <<

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  把前面的几个拿下来依次测试。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  这个可能是一个数组,不太像:008F6260 - 89 84 CE 98000000  - mov [esi+ecx*8+00000098],eax << 这样的八成是数组不用考虑。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  找到一个基地址,添加上 0040E405 - 8B 48 24  - mov ecx,[eax+24] <<

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  继续向下找,没了,到头了:00463C50 - A1 B858E500 - mov eax,[DevilMayCry4_DX9.exe+A558B8] <<

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  这个可能就是血量, 最终公式: [[[DevilMayCry4_DX9.exe+A558B8] + 24] + 15cc] = 人物血量

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  那我们该如何编写一个辅助呢,前面的外挂教程中我并没有过多的演示,偏移读写,现在我们就来实现一下。
  关于偏移读写模块,我们就是用上一次教程中封装过的D3D内存读写模块来演示,该模块可在GDI透视教程中找到。
  这里的 DevilMayCry4_DX9.exe+A558B8 其实等于 161d64e0 有些朋友会说,如果我就像动态读取,那么你需要先取出模块基地址。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  通过模块基地址与偏移地址A558B8相加得到的一个内存地址,再通过读取该地址,取出该地址中的地址,同样也可以得到我们的 161d64e0 也就是基地址。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  下一步就是对该基地址进行相加,最终得到血量的完整动态地址,即可读出数据,效果图如下所示。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  最终这个功能就实现了,之所以锁定6000是因为该值最大为6000当然也可以锁定为30000,尽量锁定的值不要超出预定义范围,以确保游戏能够正常。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒

  实现无限剑气: 这里我说一下鬼泣游戏中的剑气设置,当我们按下Q键位是,游戏中的人物会蓄力,当蓄力值达到一定条件时,会增加一格剑气,当剑气值达到三格时即可触发剑气开关,攻击力上升,效果变得炫酷,如下时正常积累剑气时数据的变化。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  游戏左上角的红色格子,就是剑气值的累加,这里的搜索方式有多种形式,第一种搜索未知数据,第二种应该可以搜索1-3之间的常量,当我们释放技能时剑气会减少,所以我们需要锁定他。
  起初我时通过位置初始值来寻找的,想当然认为时浮点数,筛选过程就是首先搜索未知初始值(浮点数),积累1格剑气,然后搜索增加的,在积累一个继续搜索增加的,然后释放一格,搜索减少的,最后,我找到了这个剑气值的地址,浮点数显示出现了一些不和谐,才知道这个使用四字节表示的,也就是说搜索精确值1-3筛选同样可以找到。作者是使用了一个int类型来存储剑气值的。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  接着找访问地址,直觉告诉我选择第二个。00508DD4 - 8B 80 E8CC0000  - mov eax,[eax+0000CCE8] <<  eax = > 179811C0

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  继续找访问地址,直觉再次告诉我,选择第三个。 0079D841 - 8B 70 24  - mov esi,[eax+24] <<  eax = > 161F64E0

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  此时基地址已经找到了:00776792 - 8B 0D B858E500  - mov ecx,[DevilMayCry4_DX9.exe+A558B8] << base => 00e558b8
  看到上方的 DevilMayCry4_DX9.exe+A558B8 是不是很熟悉,没错就是与上方生命的取法相同,其结构相差不会太远。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  添加指针,锁定后,释放技能观察是否可以无限剑气了,没问题了,这个就是,接着就是写一下辅助了。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  写辅助,就简单了,和上面差不多,但需要注意最后是写内存整数型,其默认剑气为3,这里锁定三即可。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  这样就可以无限释放剑气了,基本上都是暴击,如下效果。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒

  寻找无限暴怒: 暴怒模式就是当人物被攻击时暴怒值会增加一点,具体增加多少不清楚,排查时应使用未知初始化搜索,然后怪物打一下搜索增加的,然后慢慢排查,这个的话感觉应该会是浮点数。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  怪物没打我们几次我们就搜索增加的数值,最后能够找到该数,该数值范围在0-10000之间,经过搜索我发现其确实使用float存储。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  下一步查找访问,然后找基地址即可: 00508EBD - F3 0F10 89 241F0000  - movss xmm1,[ecx+00001F24] << ecx = >  179C11C0

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  找二级指针,这个 00776798 - 8B 71 24  - mov esi,[ecx+24] << ecx => 162364E0

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  上面代码中可看出来,偏移的上面是一条 00776792 - 8B 0D B858E500  - mov ecx,[DevilMayCry4_DX9.exe+A558B8] 这个就很像,直觉告诉我,我该选择这个,添加指针测试,没错了。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  接着就是写好辅助,这个就简单了,代码如下所示,需要注意读写类型的区别。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  最终测试效果,当我们按下n时即可触发暴怒,开启辅助后即可无限释放。

鬼泣4 寻找无限生命/剑气/暴怒

鬼泣4 寻找无限生命/剑气/暴怒
  基本上,这三个功能即可爽完了,没有过不去的关卡了,但你是否会发现,我们找的这三个地址有些联系呢?
  生命:DevilMayCry4_DX9.exe+A558B8 + 24 + 15cc
剑气:DevilMayCry4_DX9.exe+A558B8 + 24 + cce8
暴怒:DevilMayCry4_DX9.exe+A558B8 + 24 + 1f24
  联系很紧密,我们计算一下偏差,即可得到一些想要的数据,拿基地址遍历器跑一下会得到更多有用的数据,这里我就不带大家继续了,你自己可以去试试。
  转载请添加出处,不然,我也没什么动力继续写下去了!


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2024-4-24 06:49 , Processed in 0.097891 second(s), 40 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表