CE教程之自动汇编

Cheat Engine最强大的地方,莫过于他的内存反汇编功能了,这给我们提供了无限的可能。那么,什么是汇编呢?引用来自互动百科的内容——

汇编程序把汇编语言翻译成机器语言的过程称为汇编。汇编语合中用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。

简单来解释就是,在不考虑组译器的情况下(实际上修改游戏的话也不需要关注这个),可以理解为,我们的CPU在处理程序时所用的低级机器语言就是汇编。

很不幸的是,汇编不愧为低级语言,学习起来极其复杂,我周围连能够看懂汇编的人都寥寥无几,更不要说会用的人了。还好我们并不需要用汇编来写程序,只需要把最常用的几个命令了解即可。所以我的汇编水平也是非常之烂,恐怕还有无数的错误,只能勉强应付一下常用的反汇编修改了。那么我就现学现卖一次好了^_^。

这一次,我们的目标是最近很火热的小游戏《植物大战僵尸》。

pic000

进入开始游戏,准备开始修改。

pic001

召唤出我们的CE。改钱的步骤太简单了,就不再浪费时间。现在我们已经找到了太阳币的地址,点右键,选择寻找写入这个地址的地址。

 

pic002

回游戏,点个太阳加点钱,然后回来,果然他已经找到了操作码。双击打开额外信息对话框,这里实际上我们可以看到非常多有用的内容,比如说关于太阳币的指针是[eax+00005560]。关于指针修改的内容之前已经讲过了,所以这里不再重复。

不过要注意的话,直接搜索eax的数值,会出来很多个地址,令人难以确定。所以我们可以稍微往上看一行,“mov eax, [esi+04]”这一段操作码,可以看到实际上esi里的地址就是真正的eax,添加指针的时候只要输入10455E40+5560即可。

 

好了,回正题。

pic003

我们右键打开详细的内存区域,来看一下之前找到的那段操作码。好,现在开始准备对他进行自动汇编。点击菜单栏的工具-自动汇编(或者按快捷键Ctrl+A)。

 

pic004

在弹出的对话框中点击模板-脚本注入。现在就会生成图中的内容。add [eax+00005560],ecx就是我刚才点击了一个太阳加钱时的操作码,意思是,给指针[eax+00005560]增加数值ecx。

 

pic005

现在我们简单的修改一下,改成 add [eax+00005560],500。点击执行,提示注入成功。

要注意的是,在这里所有的数值都是16进制的,也就是说500h换算为十进制,实际上是1280。

 

pic006

 

现在再回游戏点一下太阳,怎么样,钱不是增加了1280。

当然,自动汇编还可以有很多好玩的用处,比如说每造一个向日葵就自动增加50个太阳币之类,只要再原来的地址下面新增一行即可。我懒得继续写下去了,有兴趣可以自行尝试。

CE教程之自动汇编》上有17条评论

  1. 鼹鼠

    直接搜索eax的数值,会出来很多个地址,令人难以确定。所以我们可以稍微往上看一行,“mov eax, [esi+04]”这一段操作码,可以看到实际上esi里的地址就是真正的eax,添加指针的时候只要输入10455E40+5560即可。
    这里我怎么也看不懂呢。ESI=1052A610,并不是10455E40,
    而且,ESI还要+4呢。怎么就是真正的EAX了呢。QQ464946597请指教啊!

    Internet Explorer 7.0 Internet Explorer 7.0 Windows XP Windows XP
    回复
    1. wettuy 文章作者

      这个可能是因为缺少一些汇编的基础所以才会感到迷茫吧,你可以看看这里
      http://www.lolibeta.com/pc/1207.html

      关于你的问题,实际上那个是两段汇编代码
      mov eax, [esi+04] 意思是把eax里的值改为esi+04这个指针里的值(地址)
      然后add [eax+00005560], ecx 意为把内存地址中eax+00005560的值加上刚刚得到的ecx

      这样连起来之后就明白了吧。对不起,这确实是因为我的文章写的还不够简单易懂,下次会注意的>_<

      Minefield 3.7a2pre Minefield 3.7a2pre Windows 7 Windows 7
      回复
  2. 慕小白

    教程写的不错,回去慢慢研究。有问题还要向大神请教。 :13: :13:

    Internet Explorer 6.0 Internet Explorer 6.0 Windows XP Windows XP
    回复
  3. 某IP

    :07: W大,不知你是否玩过一个叫东方口袋战争的游戏,里面的成长是随机的,我想将这个随机数锁定,无奈在搜到这个成长地址后在寻找指针总是找不到,但是我却不知道这是为什么,求指教 :07:

    360Safe Explorer 360Safe Explorer Windows XP Windows XP
    回复
    1. wettuy 文章作者

      你好,东方口袋战争……还真的没有玩过…………
      不过按照你说的情况,原因通常是因为,他可能没有上级的指针了。。。

      Minefield 3.7a4pre Minefield 3.7a4pre Windows 7 Windows 7
      回复
  4. 某IP

    004057B1 – eb 25 – jmp _getexceptdllinfo+477f
    004057B3 – 83 ff 02 – cmp edi,02
    004057B6 – 75 0e – jne _getexceptdllinfo+476d
    004057B8 – 83 3b 00 – cmp dword ptr [ebx],00
    004057BB – 74 1b – je _getexceptdllinfo+477f
    004057BD – 8b 03 – mov eax,[ebx]
    004057BF – e8 a0 2f 00 00 – call _getexceptdllinfo+770b
    004057C4 – eb 12 – jmp _getexceptdllinfo+477f
    004057C6 – 83 7b 08 03 – cmp dword ptr [ebx+08],03
    004057CA – 75 0c – jne _getexceptdllinfo+477f
    004057CC – 83 3b 00 – cmp dword ptr [ebx],00
    004057CF – 74 07 – je _getexceptdllinfo+477f
    004057D1 – 8b 03 – mov eax,[ebx]
    004057D3 – e8 fc ea ff ff – call _getexceptdllinfo+327b
    004057D8 – 8b 16 – mov edx,[esi]
    004057DA – 89 13 – mov [ebx],edx <–这个是我搜到的成长值
    004057DC – 8b 56 04 – mov edx,[esi+04]
    004057DF – 89 53 04 – mov [ebx+04],edx
    004057E2 – 8b 56 08 – mov edx,[esi+08]
    004057E5 – 89 53 08 – mov [ebx+08],edx
    004057E8 – 5d – pop ebp
    004057E9 – 5f – pop edi
    004057EA – 5e – pop esi
    004057EB – 5b – pop ebx
    004057EC – c3 – ret
    唔,这是我对搜索到值的位置进行反汇编前后的一部分代码,对于汇编接近0了解的俺只能是通过CE所给的提示知道我所搜到的值是通过调用子程序获得的,而子程序之前还有一段限定大小的代码,w大能否为俺解释一下这一段,同时求教是否该搜索那个子程序,该如何搜索,拜谢了 :13: :13:

    360Safe Explorer 360Safe Explorer Windows XP Windows XP
    回复
    1. wettuy 文章作者

      ^_^!
      呃,其实我的汇编知识不比你多多多少啦……看起来了确实是调用了一个子程序,如果是的话我也无能为力了,因为自己也没有确实的接触过这方面内容的修改,非常抱歉>_<

      Minefield 3.7a4pre Minefield 3.7a4pre Windows 7 Windows 7
      回复
  5. Zero

    我也改过这个 改过里面的钱和卡属性 就是一开游戏 或者一读档 内存就变 而且好像有时候还搜不到一部分地址 要读档或者 重开 让他变下就能找到。。 :20:
    w啊 我好像不能像以前那样登录你这了 就是写账号和密码那样 是怎么回事啊? :19:

    Internet Explorer 7.0 Internet Explorer 7.0 Windows XP Windows XP
    回复
    1. wettuy 文章作者

      :20: 其实,其实是我把入口去掉了而已,因为感觉好像没什么用。。。

      Minefield 3.7a4pre Minefield 3.7a4pre Windows 7 Windows 7
      回复
  6. 某IP

    :11: 求抱大腿失败的说,咱的一卡多特效梦再度破灭了的说

    360Safe Explorer 360Safe Explorer Windows XP Windows XP
    回复
  7. wokong

    我菜鸟
    我用ce读下 植物大战僵尸内存 一切换到ce就 植物大战僵尸就暂停了 ce是不是就读不出来数据了 怎么让他不暂停

    Internet Explorer 7.0 Internet Explorer 7.0 Windows Server 2003 Windows Server 2003
    回复
  8. 我要RP

    我要对你碎碎念诺~
    我不是要外挂 嘛 。。。
    我只是要一个《丝路传说》遍历基址的工具啊。。。

    拜托~~

    难道你希望你SM你?! :04: :04:

    360Safe Explorer 360Safe Explorer Windows XP Windows XP
    回复
  9. 狂热酱

    (EmuCheat官方论坛)..开始是在里面看到某人转贵兄的CE教程…现在在用CE 5.4中文版,TUT教程坐到步骤7就懵了..找不着方向了= =然后看了贵兄的 CE自动汇编教程 之后..便豁然开朗。。。终于把步骤7给攻破了- -看到步骤 8: 多级指针:。。。吃饭了,有空继续研究 :22:

    360Safe Explorer 360Safe Explorer Windows XP Windows XP
    回复
  10. 学ce

    看了你的教程真的收获很大,但还是有个问题很困惑:自动汇编的结果如何保存或做成修改器,难道每次重开游戏都要重新弄一遍

    360Safe Explorer 360Safe Explorer Windows XP Windows XP
    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注