[教程][原创] Cheat Engine 6.4 Tutorial —— 闯关教程 #2
12 Dec 2014如果还没看完和掌握 [教程][原创] Cheat Engine 6.4 Tutorial —— 闯关教程#1 的话,赶快去看看吧
Step 5
Step 5: Code finder (PW=888899) Sometimes the location something is stored at changes when you restart the game, or even while you’re playing.. In that case you can use 2 things to still make a table that works. In this step I’ll try to describe how to use the Code Finder function.
The value down here will be at a different location each time you start the tutorial, so a normal entry in the address list wouldn’t work. First try to find the address. (you’ve got to this point so I assume you know how to) When you’ve found the address, right-click the address in Cheat Engine and choose “Find out what writes to this address”. A window will pop up with an empty list. Then click on the Change value button in this tutorial, and go back to Cheat Engine. If everything went right there should be an address with assembler code there now. Click it and choose the replace option to replace it with code that does nothing. That will also add the code address to the code list in the advanced options window. (Which gets saved if you save your table)
Click on stop, so the game will start running normal again, and close to close the window. Now, click on Change value, and if everything went right the Next button should become enabled.
Note: When you’re freezing the address with a high enough speed it may happen that next becomes visible anyhow
主界面:
现在这个Code finder的功能是找出什么代码读取或者更改某一个值
什么?
云里雾里?
没关系,接着看吧
ASM AHEAD!
首先要做的就是找出value 的address了(不解释了哈):
现在要做的就是:
Click it and choose the replace option to replace it with code that does nothing. That will also add the code address to the code list in the advanced options window. (Which gets saved if you save your table)
你可能会问:
什么?Replace it with code that does nothing? 我们有他的代码么? 搞什么鬼啊你
这里的code 呢,就是那ASM Code 了,汇编!
Code finder 的功能就是找出哪里的asm 代码读取/修改那个值
然后你就可以更改那个代码了!
首先,右键点击entry
然后选择Find out what writes to this address(或者直接按下F6):
点击YES:
然后你就会看到这个窗口:
回到CE Tutorial
点击Change Value
然后在回到刚才的那个窗口
你就会看到列表中多了一行代码:
这一行就是更改CE Tutorial 上面的值的代码了
所以我们要做的就是让这一样代码失效
最简单的就是:
把它替换成什么都不做
右键点击那一行
然后点击 Replace with code that does nothing (NOP):
然后点击OK
就好啦!
点击Stop
然后Close
回到CE Tutorial
点击Change Value
你会发现到 Value 根本没有改变到:
然后就可以点击Next 啦!
你可能会问:
这功能到底啥用?
比如最简单的说:
你的游戏有一个Health 值 但是你在CE里freeze 着他的值却没有用
如何Freeze 一个Address 的值? 很简单 在那个Address 上按下Space就好了 或者按下Active 栏下的checkbox:
所以Code finder 就起了很大的作用了 最简单的就是把更改你的health值的代码全部替换成NOP(就是什么都不做的ASM代码——发呆) 你的Health 不管怎么样都不会更改啦
你可能还会问:
mov [eax],edx 又是什么东东?
一个一个拆出来看看吧
eax, edx?
好,eax 和edx 呢
就是叫做寄存器 (Register)
有点类似高级语言中的变量
可以拿来储存东西的
现在这些比较现代的x86 processors 有 8 个general purpose 的寄存器, 两个有特定作用的register
其实在很久很久以前,这些general purpose 的register 都有自己的功用的
但是现在已经是现代了,x86的instruction set 几乎都不用他们了
所以他们就用来储存东西了 xD
EAX,EBX,ECX,EDX 这些register 都有对应的16bit 和 8bit 的register,如图片说写的
其中的EBP 是base pointer,临时保存ESP的
而ESP呢,就是保存栈(Stack)的地址
想要知道更多?
Google去吧(或者看看zypeh 大大的 Register 的那些事)
mov?
mov 是拿来干嘛的很容易猜吧?
就是move 的缩写呗
将数据从一个地方copy到另一个地方(尽管他叫move,但是他不是移动数据,而是拷贝)
mov 有一下的5种形式:
mov reg,reg
mov reg,mem
mov mem,reg
mov reg,const
mov mem,const其中
reg 代表任何一种register(EAX,EBX,ECX,AX,BX,CX,AH,BH等等…)
mem 代表一个地址,比如说[eax]之类的
const 指的是一个constant(1,2,3,4 什么之类的)
一些例子:
mov eax,ebx就是将ebx中的value copy 到 eax中
mov eax,5就是将 5 储存到eax中
mov ebx,[eax]就是将地址为eax的value copy 到 ebx中
如果有方括号的(square bracket)就表示那是一个地址
比如说eax的值是00228D68
然后地址00228D68中储存的值是100的话
那么mov ebx,[eax] 简单来说就是将100移到拷贝到ebx去
mov [eax],ebx这就不难理解了吧
就是将ebx 中的值移到拷贝地址为eax那里去
如果ebx 储存的值是100
而eax 是 00228D68
那么这段指令就是将100拷贝到 00228D68 中去
你可能会想
为什么没有这样的形式呢?
mov reg,reg这是不可以的…
直接 memory-memory move 是不能的
我重复
是不可以的
但是间接的就可以,但不是本篇幅的范围了 哈哈
NOP ?
nop 又是啥?
很简单
就是 No Operation
什么都不做就是了
nop 占了1 byte
所以大多数的时候
它是用来凑数的 (padding)
参考资料 :Guide to x86 Assembly
Published by Gary Ng

















