|
发表于 2020-8-30 16:50:21
|
查看: 3584 |
回复: 0
前面的外挂系列教程,我们都是以一些简单的单机游戏作为演示的,今天我们将来玩一下鬼泣4这款剧情类游戏,该游戏是由日本游戏开发商CAPCOM开发的一款动作冒险游戏,记得笔者在小时候就玩过这款游戏,在画质等各方面做的都很不错。
游戏下载地址:链接: https://pan.baidu.com/s/1gfjzw1NmXnlkOmvCtA4MjA 提取码: fwyp
该游戏寻找基址与以往的游戏略有不同,游戏中的多数数值都不是以数值方式呈现的,而是以血条的方式展现出来的,我觉得这款游戏的搜索方式能让大家学到东西,所以就下载了该游戏,来为大家演示一下常用基地址的找法。
寻找生命基址+偏移: 这里的血量是一个血条,默认我们不知道是多少,所以要搜索位置初始值,又因为像血量等这些数据默认会用浮点数存放,我们搜索浮点数即可。
搜索方式,就是首先搜索未知浮点数,然后让人物掉血,搜索减少的数值,继续搜索未变动数值,然后再次掉血,继续搜索减少的数值,最后能找到一些数值,这个数值在0-6000之间,其他的可以排除掉了。
鬼泣4 寻找无限生命/剑气/暴怒
这四个值,我们依次修改,然后观察,发现第一个是血量的,默认就是6000,如果改成20000则会撑满血条。
鬼泣4 寻找无限生命/剑气/暴怒
这里查找一级偏移,查找访问地址,
鬼泣4 寻找无限生命/剑气/暴怒
这里我们尽可能排除不是mov等指令的,此处选择 004FF282 - F3 0F10 85 CC150000 - movss xmm0,[ebp+000015CC] <<
鬼泣4 寻找无限生命/剑气/暴怒
把前面的几个拿下来依次测试。
鬼泣4 寻找无限生命/剑气/暴怒
这个可能是一个数组,不太像:008F6260 - 89 84 CE 98000000 - mov [esi+ecx*8+00000098],eax << 这样的八成是数组不用考虑。
鬼泣4 寻找无限生命/剑气/暴怒
找到一个基地址,添加上 0040E405 - 8B 48 24 - mov ecx,[eax+24] <<
鬼泣4 寻找无限生命/剑气/暴怒
继续向下找,没了,到头了:00463C50 - A1 B858E500 - mov eax,[DevilMayCry4_DX9.exe+A558B8] <<
鬼泣4 寻找无限生命/剑气/暴怒
这个可能就是血量, 最终公式: [[[DevilMayCry4_DX9.exe+A558B8] + 24] + 15cc] = 人物血量
鬼泣4 寻找无限生命/剑气/暴怒
那我们该如何编写一个辅助呢,前面的外挂教程中我并没有过多的演示,偏移读写,现在我们就来实现一下。
关于偏移读写模块,我们就是用上一次教程中封装过的D3D内存读写模块来演示,该模块可在GDI透视教程中找到。
这里的 DevilMayCry4_DX9.exe+A558B8 其实等于 161d64e0 有些朋友会说,如果我就像动态读取,那么你需要先取出模块基地址。
鬼泣4 寻找无限生命/剑气/暴怒
通过模块基地址与偏移地址A558B8相加得到的一个内存地址,再通过读取该地址,取出该地址中的地址,同样也可以得到我们的 161d64e0 也就是基地址。
鬼泣4 寻找无限生命/剑气/暴怒
下一步就是对该基地址进行相加,最终得到血量的完整动态地址,即可读出数据,效果图如下所示。
鬼泣4 寻找无限生命/剑气/暴怒
最终这个功能就实现了,之所以锁定6000是因为该值最大为6000当然也可以锁定为30000,尽量锁定的值不要超出预定义范围,以确保游戏能够正常。
鬼泣4 寻找无限生命/剑气/暴怒
实现无限剑气: 这里我说一下鬼泣游戏中的剑气设置,当我们按下Q键位是,游戏中的人物会蓄力,当蓄力值达到一定条件时,会增加一格剑气,当剑气值达到三格时即可触发剑气开关,攻击力上升,效果变得炫酷,如下时正常积累剑气时数据的变化。
鬼泣4 寻找无限生命/剑气/暴怒
游戏左上角的红色格子,就是剑气值的累加,这里的搜索方式有多种形式,第一种搜索未知数据,第二种应该可以搜索1-3之间的常量,当我们释放技能时剑气会减少,所以我们需要锁定他。
起初我时通过位置初始值来寻找的,想当然认为时浮点数,筛选过程就是首先搜索未知初始值(浮点数),积累1格剑气,然后搜索增加的,在积累一个继续搜索增加的,然后释放一格,搜索减少的,最后,我找到了这个剑气值的地址,浮点数显示出现了一些不和谐,才知道这个使用四字节表示的,也就是说搜索精确值1-3筛选同样可以找到。作者是使用了一个int类型来存储剑气值的。
鬼泣4 寻找无限生命/剑气/暴怒
接着找访问地址,直觉告诉我选择第二个。00508DD4 - 8B 80 E8CC0000 - mov eax,[eax+0000CCE8] << eax = > 179811C0
鬼泣4 寻找无限生命/剑气/暴怒
继续找访问地址,直觉再次告诉我,选择第三个。 0079D841 - 8B 70 24 - mov esi,[eax+24] << eax = > 161F64E0
鬼泣4 寻找无限生命/剑气/暴怒
此时基地址已经找到了:00776792 - 8B 0D B858E500 - mov ecx,[DevilMayCry4_DX9.exe+A558B8] << base => 00e558b8
看到上方的 DevilMayCry4_DX9.exe+A558B8 是不是很熟悉,没错就是与上方生命的取法相同,其结构相差不会太远。
鬼泣4 寻找无限生命/剑气/暴怒
添加指针,锁定后,释放技能观察是否可以无限剑气了,没问题了,这个就是,接着就是写一下辅助了。
鬼泣4 寻找无限生命/剑气/暴怒
写辅助,就简单了,和上面差不多,但需要注意最后是写内存整数型,其默认剑气为3,这里锁定三即可。
鬼泣4 寻找无限生命/剑气/暴怒
这样就可以无限释放剑气了,基本上都是暴击,如下效果。
鬼泣4 寻找无限生命/剑气/暴怒
寻找无限暴怒: 暴怒模式就是当人物被攻击时暴怒值会增加一点,具体增加多少不清楚,排查时应使用未知初始化搜索,然后怪物打一下搜索增加的,然后慢慢排查,这个的话感觉应该会是浮点数。
鬼泣4 寻找无限生命/剑气/暴怒
怪物没打我们几次我们就搜索增加的数值,最后能够找到该数,该数值范围在0-10000之间,经过搜索我发现其确实使用float存储。
鬼泣4 寻找无限生命/剑气/暴怒
下一步查找访问,然后找基地址即可: 00508EBD - F3 0F10 89 241F0000 - movss xmm1,[ecx+00001F24] << ecx = > 179C11C0
鬼泣4 寻找无限生命/剑气/暴怒
找二级指针,这个 00776798 - 8B 71 24 - mov esi,[ecx+24] << ecx => 162364E0
鬼泣4 寻找无限生命/剑气/暴怒
上面代码中可看出来,偏移的上面是一条 00776792 - 8B 0D B858E500 - mov ecx,[DevilMayCry4_DX9.exe+A558B8] 这个就很像,直觉告诉我,我该选择这个,添加指针测试,没错了。
鬼泣4 寻找无限生命/剑气/暴怒
接着就是写好辅助,这个就简单了,代码如下所示,需要注意读写类型的区别。
鬼泣4 寻找无限生命/剑气/暴怒
最终测试效果,当我们按下n时即可触发暴怒,开启辅助后即可无限释放。
鬼泣4 寻找无限生命/剑气/暴怒
基本上,这三个功能即可爽完了,没有过不去的关卡了,但你是否会发现,我们找的这三个地址有些联系呢?
生命:DevilMayCry4_DX9.exe+A558B8 + 24 + 15cc
剑气:DevilMayCry4_DX9.exe+A558B8 + 24 + cce8
暴怒:DevilMayCry4_DX9.exe+A558B8 + 24 + 1f24
联系很紧密,我们计算一下偏差,即可得到一些想要的数据,拿基地址遍历器跑一下会得到更多有用的数据,这里我就不带大家继续了,你自己可以去试试。
转载请添加出处,不然,我也没什么动力继续写下去了!
|
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【 投诉建议】板块发帖举报。
|