能力值:
(RANK:350 )
2 楼
昨天我也玩了下Cheat Engine
你这步我是直接用Cheat Engine搞的
step 8没通过,不知道总共有多少step啊
能力值:
( LV2,RANK:10 )
3 楼
step 8 是多级指针
能力值:
( LV2,RANK:10 )
4 楼
第8步是4级指针!
我也没通过!很难!
也不知道那出错了!网上的教程都是一个人的版本!尝试了还是通过不了!
能力值:
( LV12,RANK:210 )
5 楼
用VC, C++写挂技术交流群:65422642
研究cheat engine,wep,的使用,及外挂制作技术。
能力值:
( LV12,RANK:210 )
6 楼
第8步教学完成步骤
1.搜索生命值
2.将找到的地址加入列表
3.在地址上点右键“找出什么读写这个地址”,然后“change Value”
4.mov [eax+18],esi ==> eax=009ca668 ==> 搜索009ca668 ==>009ca5ec
5. Add address manually ==> Point => Pointer: 009ca5ec, Offset:18 => OK =>P->009ca680
6. 在列表项 P->009ca680 上点右键 => Find out what accresses this pointer => Change Value
7. mov eax, [eax] eax: 009ca668 ==> 搜索009ca668 ==> 009ca5ec ==> 009ca5c4
8. 编辑列表项 P->009ca680,添加指针项,Pointer: 009ca5c4, Offset:0 => OK
9. 在列表项 P->009ca680 上点右键 => Find out what accresses this pointer => Change Value
10. mov eas, [eax+14] => eax: 009ca5ec => 009ca5c4 => 计算:009ca5c4-14=009ca5b0 => 搜索009ca5b0 => 009ca544
11. 编辑列表项 P->009ca680,添加指针项,Pointer: 009ca544, Offset:14 => OK
12. 在列表项 P->009ca680 上点右键 => Find out what accresses this pointer => Change Value
13. mov eax, [eax+0c] =>eax: 009ca5b0 => 009ca544 => 计算:009ca5b0-c=009ca538 => 搜索009ca538 => 0045cc18(绿色显示)
14. 编辑列表项 P->009ca680,添加指针项,Pointer: 0045cc18, Offset:c => OK
最后,将数值改为5000,本步教学终于算是完成了。 文章来自:用VC, C++写挂技术交流群:65422642
能力值:
( LV2,RANK:10 )
7 楼
这个是网上找的一篇比较详细的教程了,我就是按这个找到的,
1.搜索生命值
2.将找到的地址加入列表
3.在地址上点右键“找出什么读写这个地址”,然后“change Value”
4.得出:mov [eax+18],esi ::eax=009ca668
搜索009ca668 得出 009ca5ec
解释:在009ca5ec中存放了009ca668这个地址 程序运行时 再mov eax, 009ca5ec
因为eax是寄存器 所以要得到eax的值必须得到传值给它的地址。等下我们就必须找出又是谁把值给的009ca5ec
现在先来记录一下我们刚刚找出的一级基址009ca5ec和一级指针P->009ca680。一级偏移为18.
5. Add address manually ==> Point => Pointer: 009ca5ec, Offset:18 => OK =>P->009ca680
解释:创建[eax+18]指针P 即P指向地址009ca680 P指向的地址的值(即009ca680的值)就是血的值
现在开始通过009ca5ec找出存放它的二级指针
6. 在列表项 P->009ca680 上点右键 => Find out what accresses this pointer => Change Value
解释:找出正在读该指针的进程。(我们给一个指针赋值的例子:int ***p=5,在赋值的过程中P的值是不会变的 但是需要读取P的值才能知道整型存放的地址在什么地方 所以我们使用Find out what accresses this pointer 找出谁在读这个地址)
7. mov eax, [eax] eax: 009ca668 ==> 搜索009ca668 ==> 009ca5ec ==> 009ca5c4
解释:通过改变血 我们得到以上指令 同4的解释 我们知道eax: 009ca668
(注意令第一个eax为eax1: 009ca668:, eax2: 009ca5ec mov eax2,009ca5c4)
通过搜索009ca5ec得到009ca5c4。我们得知009ca5c4存放了009ca5ec
从而得到了二级基址,那为什么我们不用一级基址009ca5c4直接搜索二级基址009ca5ec
等下我们看了第10步就会明白了,提示我们还要考虑偏移量的问题。
所以我们得出了二级基址009ca5c4和二级指针P->009ca680。二级偏移地址为0
8. 编辑列表项 P->009ca680,添加指针项,Pointer: 009ca5c4, Offset:0 => OK
现在开始通过009ca5c4找出存放它的三级指针
9. 在列表项 P->009ca680 上点右键 => Find out what accresses this pointer => Change Value
10. mov eax, [eax+14] => eax: 009ca5ec => 009ca5c4 => 计算:009ca5c4-14=009ca5b0 => 搜索009ca5b0 => 009ca544
解释:(注意令第一个eax为eax1: 009 ca5ec:, eax2: 009ca5b0 mov eax2, 009ca544)
要想知道7中留下的问题吗?其实就是在[eax2+14]中,009ca5c4中的值是[eax2+14],所以要得到eax2的值必须减去14。
我们就得出了三级基址009ca544和三级指针P->009ca680。三级偏移是14
11. 编辑列表项 P->009ca680,添加指针项,Pointer: 009ca544, Offset:14 => OK
12. 在列表项 P->009ca680 上点右键 => Find out what accresses this pointer => Change Value
13. mov eax, [eax+0c] =>eax: 009ca5b0 => 009ca544 => 计算:009ca5b0-c=009ca538 => 搜索009ca538 => 0045cc18(绿色显示)
解释:这步骤的解释就和10中完全一样了 要解释的就是0045cc18(绿色显示) 绿色显示就是说这个地址是静态的(就是不会改变的地址) 英文意思就是congratulations
14. 编辑列表项 P->009ca680,添加指针项,Pointer: 0045cc18, Offset:c => OK
最后,将数值改为5000,本步教学终于算是完成了。
15.最后 血=[[[[[[[四级基址(就是绿色的)+四级偏移]]+三级偏移]]+二级偏移]]+一级偏移]
能力值:
( LV2,RANK:10 )
8 楼
这个我一次行通过,没什么意思
能力值:
( LV2,RANK:10 )
9 楼
看了5,6篇9关英文终于搞过去了
能力值:
( LV2,RANK:10 )
10 楼
Step 8的指针寻址过程,用汇编描述就是下面的样子:
mov eax, [00460C20h] ;一个常量地址,是固定不变的
mov eax, [eax+0ch]
mov eax, [eax+14h]
mov eax, [eax]
mov eax, [eax+18h] ;执行完这一条指令后,eax就是具体的数值了
我是顺着一层一层的指针找上去的,每次都查谁访问了这个指针,这样就找到了这个指针的上一层,一直找到顶。