您好,欢迎访问三七文档
ce查找:搜索当前血量218OD查找:OD附加,先点运行让它跑起来。CTRL+G,00456448.来到00456448血的地址是ESI+25C,搜索左面[]中ESI的值,不要搜索右面EDX。向上查找ESI。ESI是从ECX来的,在这里按F2下断。看看对不对,要是对血值发生变化会被自动断下。成功断下后在命令:后面添加ddecx+25c(因为血是ESI+25C,ESI是从ECX来的所以ESI+25C=ECX+25C)。回车。来到当前血量。DA十六进制换成十进制是218.证明ECX是对的,继续找ECX的值。向上查找。两段代码之间会出现NOP。在高级语言中这两段代码叫做函数。NOP将2个函数分开,一般在OD中函数以PUSH开始RETN结束。因为在本段代码没有找到ECX,在向上找就是其他函数代码了,那样找起来会很麻烦,所以来到本段代码头部,看看还没有CALL.点击004563A0(代码头部)发现有个CALL,右键前往这个CALL。如果这里没有CALL,在CALL这个位置下端,运行OD,让血值发生变化自己断下,看看返回值,然后记录下来在排除查找!前往这个CALL,来到!向上查找。来到EAX发现是个跳转,所以要往回跳。右键点击跳回!跳到00454B71。一直向上来到头部没找到ECX,发现EAX这里有个调用,不过没有CALL,所以在这里下断,运行,到游戏里动一下让它自动断下。取消断点,要不在这个断点又被断下了,看到了返回到……这个调用。在第一个返回到,点右键,点在反汇编窗口中跟随。然后运行OD。让游戏动一下。没被断下,继续向上查找ECX,发现ECX是的值是从EAX来的。向上找EAX,没找到,发现函数代码中部有个CALL。进入这个CALL看看。命令:DD[EAX+24]+25C在[EAX+24]这行代码下端。在命令行按回车。发现当前血是对的,取消断点在让OD运行起来。向上dd[[ecx+8]+24]+25c在这行下断,在命令行回车。发现血值还是对的。取消断点,运行OD。会到刚才地址在小键盘上按-号。直到退出这个CALL。一直向上找,没有ECX,来到头部下端。到游戏里动下一,取消断点。返回到。让游戏跑起来。查找ECX。一直向上找,直到找到基址,每找到上一级,dd命令,检查对错,遇CALL,返回,没CALL下断,返回,进CALL找基地。最后CE设置检查对错。ce+odODCTRL+G00456448ESI+25CESI=ECX前往CALL步骤同1,一直找到数组那里。下断MOVECX,EAX,没有ECX的值所以找EAX。按F8单步走一下,看看ECX和EAX的值是否一样。一样CE查找这个值1找一个下HR断点能断下来的地址。到OD里检查一下。断下来了,HD清除断点。找EAX的值。公式找ECX。返回。找到ECX的值,CE查找。看看断在什么位置,取消断点,还有看看那个寄存器存放的这个值。发现是EDI这个寄存器存放的这个值。向上到EDI,继续完成公式。直到找到常量。HR断点方法。内存访问CE
本文标题:找基址五种方法2
链接地址:https://www.777doc.com/doc-3246999 .html