黑夜的狼

沮丧吗,那就是一种无病呻吟!留恋它就是一种高度近视!目光应该放得更远一点! 别不想飞,只是要一步跨过太平洋!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

CE查找基址的原理
             author:anncesky

学外挂制做或不学的人都知道CE
就是Cheat Engine,用这个玩意找基址(当然找基址也不是一定用CE,熟悉逆向的人也用调试器)
用CE找基址是非常方便的,也知道怎么找,但是却不知道为什么这么找,那些个教程也没怎么说
就说怎么找
在这我随便说说

比如,我要查找角色坐标的基址

什么是基址,简单的说,只要这个应用程序不变,那么这个地址就不会变
(比如全局变量,这个变量在编译就确定的它的地址了,编译成汇编后这个地址就直接拿来用了)

动作:CE中查坐标值
比如找到存放这个坐标值的内存地址是 1111 (有可能是基址,在这里假如不是基址)

那么就有 [1111]==坐标

动作:查找访问这个地址的代码
比如:mov [eax+8],edi

那么就有eax+8==1111; [eax+8]==[1111]==坐标; eax==1111-8==1103

然后大家会再去查找1103
为什么再去找这个eax的值(1103)?
为什么重覆的这样找下去就能找到基址(如果选择的访问代码正确的话)?

因为这个1103(也就是eax的值)不可能打娘胎时就在eax里,(就算在娘胎里混也要先播种吧)

最起码也要一句 mov eax,1103 这样才能到eax里,如果你在找访问该地址的代码时找到
 mov eax,1103 恭喜你,请重新找,你找错了, 不可能找到这样的访问地址的代码

重新讲上一回

1103只有可能在内存
由 mov eax, dword ptr [1103的内存地址]
这样的形式送给eax,就像上个世纪40年代送孩子一样
当然可能不会直接 mov eax dword ptr [1103的内存地址] 这样送给eax
可能 mov ebx, dword ptr [1103的内存地址]
     mov eax,ebx
或其它,反正最后才到eax手中了


所以我们才再在找内存中有1103的数的地址
再找访问1103的地址的代码
看看1103的地址是哪个混蛋+偏移形成的

一般会再遇到像 mov eax dword ptr [esi+10] 这样加偏移的代码

再找esi的地址
找访问地址的代码

假如走狗屎运马上遇到

mov eax dword ptr [立即数]

这回真要恭喜发财,基址捡到了

 

posted on 2010-04-10 21:54  anncesky  阅读(2165)  评论(0编辑  收藏  举报