2024年5月2日发(作者:)
简单修改器制作教程 - 用Cheat Engine制作&生成修改器
本帖最后由 圣风云淡 于 2011-5-10 14:14 编辑
首先,这只是个简单教程,即使没有编程经验甚至完全不懂任何编程语言的人都能制
作自己的修改器!
迟些我会写一篇用C#来编写修改器的教程,其实过程也大同小异,只是编译用C#而
不是用 Cheat Engine 自动生成而已。这就需要一些更高级的知识了...
所需工具:Cheat Engine 6.0 & Cheat Engine 5.6.1
所需知识:懂得怎么搜索数据地址,只要知道懂得怎么找地址就行了。
虽然每次开始游戏那个地址都会改变,但下面要教的正是怎么通过修改汇编代码来间
接修改那个总会改变的地址。
而我们要找的代码地址总是固定在游戏某个模块的特定地址里的,只要有模块的地址
和那个代码的偏移值,那么我们就一定可以找到那个代码的地址,对其进行修改,就能间
接修改具体数据的地址(例如金钱、生命、子弹...etc)
这里用《刺客信条:兄弟会》来当例子,这个教程还适用于任何游戏!
当然,如果游戏有数据加密,反调试的话,那么过程将会更加坎坷...
教程正文:
1. 找到数据地址
这个我就不教了,太基础,如果这个都不懂的话可以不用往下看了...
2. 找出写入这个地址的代码
右键找到的数据地址(图里是金钱的地址),点击 Find out what writes to this
address , 找出写入这个地址的代码
有些时候你可能需要点 Find out what accesses this address,不过一般情况下我们
用不着点这个,因为可能会找出很多不需要的代码。
第一次点击的时候会弹出提示,问你要不要用调试器调试当前程序(游戏程序),当然
选Yes
然后你会看到弹出一个调试界面,不用管,先回到游戏
由于这里用的是金钱做例子,那么回到游戏后去改变一下金钱数量,例如买东西,扔
钱,偷钱...
我进游戏扔了一次钱,偷了一次钱 (以防万一增加和减少金钱是用两个不同的代码来
写入的)
事实果然不出我所料,回到调试界面,我看到了两个地址,而且各自写入了一次金钱
数据。那么,很明显一个是减少金钱,一个是增加金钱的代码。
然后我们点 Add to the code list,把代码添加到代码列表。由于我是先扔钱后偷钱,
那么第一个地址就是减少金钱,第二个地址就是增加金钱的代码。根据实际情况来命名你
的代码把,随便写点什么都可以,反正能让自己知道那个代码是干什么的就行了。
然后你会看到代码列表跳出来了,里面正好有你刚刚添加的代码
3. 通过汇编来修改这个代码
这一步对新手来说可能比较难了,需要一定的汇编知识,至少要知道一些基础的汇编
命令,这里就不多说了,百度有很多相关命令和解释
首先,双击代码列表里的代码(你刚刚添加的代码),内存监测器会跳出来,并且会自
动转到你的代码的地址。
然后点击 Tool - Auto Assembly,聪明人可能已经看出,其实只要按快捷键 Ctrl + A
就行了...
然后Auto Assembly (AA脚本) 的窗口会跳出来,点击 Template - Cheat Table
framework Code
然后再点击 Template - Code injection
你会看到Cheat Engine为你自动写好的脚本,不过这个只是原始代码的脚本!我们
的工作是修改这些代码来实现我们想要的功能!
然后通过修改这些代码来实现我们想要的功能,例如把金钱减少的代码改成把数值
999999复制到金钱地址,而我下面正是要这样做。
首先把以下代码删除,我们并不需要这个 (但有些情况下是需要的,例如代码对敌人
同样适用的情况下,我们需要通过对比数据来决定是否跳到原始代码还是使用修改后的代
码,这个这里就不多说了)
label(originalcode)
label(exit)
originalcode:
exit:
以上代码全部删除
然后,看到 mov ,eax , 这个代码的意思就是把 eax 中的数据(你当前的金钱数量)
复制到 (金钱地址) 中去
那么我们要怎么做呢,很简单,把它改成 mov ,#999999,这个代码的意思相信你已
经知道了,没错就是把数值 999999 复制到 (金钱地址) 中去。
改好之后的代码如下图:
然后点击 File - Assign to current cheat table
刚写好的脚本就会出现在 Cheat Engine 主界面上
我发现,刚刚找到的代码不但会写入金钱数量,还会写入子弹数量,毒药数量,弓箭
数量等。因此我把这个脚本改了一下名字。
然后把脚本名字前面的勾勾上
回到游戏,扔一下钱或者买东西,你会发现金钱变成了999999!同样,你用一下火
枪和弓箭,子弹/箭数量也会变成999999 (但只会显示99),再切换出来,发现金钱地址里
的数值真的变成了 999999 (这不是废话嘛...)
未完,待续...
发布评论