- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
红警2单机游戏修改器VC6制作
这是一篇让大家熟悉 Windows 下分析内存数据的文章并且用 VC++
实现修改内存
VC++6.0 制作单机游戏修改器 这里介绍一个简单的单机游戏修改器制作过程,单机游戏修改器当然 比修改网络游戏要简单很多,一般只需修改内存即可,今天就拿红警
2 共和国之辉为例子做一个单机游戏修改器。首先打开游戏,然后用 内存查找器查找我们想要修改相应数据的内存地址,这里我们选 CE, CE 是个功能非常强大的内存修改器,好废话少说 我们开始新建一个 游戏,相信这个游戏大家都很熟悉了,新建游戏开始
这里可以看到游戏刚刚开始,我们就从金钱入手吧,这个在红警里是最直接的啦,好然后最 小化游戏 打开我们的 CE(注意这个时候 我们新建一个电厂然后暂停 让金钱的数值处于一 个不容易重复出现很多次的数值) 注意:VC++实现修改内存相应地址的值很简单后面我会讲解到现在我们具体看看内存地址
和基址是 如何查找和分 析的
这是我们的 CE 附加红警游戏进程 进程名为 Game.exe,然后让游戏的金币处于一个容易查找
的值状态请看下图
可以看到查出来的数值非常少了,但是还需要过滤,所以现在我们再返回游戏 再让金币的
数值变化一下暂停,返回 CE 继续查找,最终发现如下几个地址
在 CE 里绿色表示常量,而这两个常量对于修改内存的金币是行不通的,他们肯定有别的作 用但是不能达到修改金币的作用所以我们修改黑色的那个地址 0A029DDC,直接在 CE 里面 修改,返回游戏发现游戏金币的值已经被修改了,但是这里有一个问题,当我们关闭游戏之 后再重新进入就已经不是 0A029DDC 这个值了 这个时候我们就要想办法找出一个固定的 地址就是基址,怎么查找呢?CE 强大的功能可以做到这点双击这个地址 把它添加到下面的 列表 然后右击 查看所有操作这个地址的代码如下图所示:
图 Z-11
然后我们进入游戏 改变下金币的值,然后返回我们的 CE 修改器会发现 有一些代码,这个 代码就是操作这个金币值的代码 我们来分析下这段简短的代码,这是查找基址的关键步骤。 如下图所示:
每段代码后面都有个+24C 的操作,我们双击把它放大看看
看看红色的那句代码 mov 【ecx+24C】,edx,然后看看下面有 edx 的值,可以看到 edx 的值 是 2710 这里要注意 它是 16 进制的,转换为 10 进制是多少呢 经过转换 2710 的十进制是
10000,现在游戏的数据恢复到一万了正好就是金币的值,那么它把这个值放到哪了呢 就是 ecx+24C 这个地方,大家可以看看图 Z-11 这是特意标示出来的,可以看看我们找到金币地 址那个动态变化的地址是 0A029DDC 然后这里我们看看 ecx+24C ,ecx 的值下面看到是
0A029B90 然后我们把 ecx+24C 计算出来可以看到等于 0A029DDC,就是现在我们找到的这 个每次打开游戏都动态变化的值,所以现在我们要关心的是 ecx 是从哪里来的,因为 24C 是一个固定的值,每次其实动态变化的就是那个 ecx,然后再偏移 24C 得出的地址就是我们
要真正修改金币的地址,好了我们现在就直接查找 ecx 的基址,它的基址也就是一个包含了 每次变化的地址的一个固定的地址,红警 2 里面只有一层基址相对来说比较简单一些,所以 我们来查查看这个地址在哪个地址里面,打开新的搜索搜索 ecx 这个地址如下图:
这个时候我们又看到了个绿色的常量,跟前面我们找金币那个值常量有所不同,我们可以猜
测它就是我们最终要找的基址,因为它是一个常量 它的值是每次不变的,符合我们要找的 基址的条件所以我们把 00A1E0C4 这个值保存起来,然后关闭游戏 我们再打开游戏 我们直 接看看 00A1E0C4 这个地址里面的值然后再便宜 24C 出来一个地址,然后我们再看这个地 址里面的值 是不是就是我们当前的金币,试过几次完全是的,所以现在很清楚了 我们要修 改金币的找地址的思路很简单:
1:查找出 00A1E0C4 这个地址里面的值我们现在称为 X 吧
2:X+24C 就等于我们现在要修改金币的地址
3:直接修改 X+24 这个地址的值就达到了修改内存的目的
好了 分析工作到这里就全部完成了 可以看出来还是很简单的,还有别的值也都是这样的, 那个电力的值大家也可以去查,查出来大家可以看到那个电力的值偏移值也是 24C,以此类 推还有很多数据都可以找出来作下修改,这里就介绍下修改金币的程序实现,重要的是找出 地址,修改都是一样的。好了先介绍几个 WINDOWS API 吧因
文档评论(0)