如何在Cheat Engine中找到多级指针并自动执行汇编指令?
打开Tutorial-i386.exe程序,之前我们在CE中找到了第2关打我CALL的位置:
Tutorial-i386.exe.text+130B82 - mov eax,[ebp-04]
Tutorial-i386.exe.text+130B85 - call Tutorial-i386.exe.text+8DC50
Tutorial-i386.exe.text+130B8A - mov esp,ebp
Tutorial-i386.exe.text+130B8C - pop ebp
Tutorial-i386.exe.text+130B8D - ret
eax传递的参数是可变的(程序重启以后会变),现在查找参数基址,在程序重启以后也能得到参数临时值。
在Tutorial-i386.exe.text+130B85下断点,点击‘打我’得到eax的临时地址01716688(每次重启程序后都会变),搜索01716688(16进制),得到结果列表1。
"Tutorial-i386.exe"+1721E0是绿色的,也就是一个基址。
继续查找另外的基址,右击结果列表1中的016E8540(你的电脑显示不一样的值),找出是什么访问了这个地址,点击‘打我’,出现两条访问记录,双击任意一条。
继续查找双击弹出的对话框出现的016E8530, 最后发现这个分支找不到基址(或者难找),则换一个分支查找。
从结果列表1中0175DFAC开始,找出是什么访问了这个地址,点击‘打我’,出现两条访问记录,双击任意一条。
再搜索0175DF70(在弹出的对话框中有提示),即可找个3个绿色的基址,选择其中一个进行拼接,可以得到指向01716688的基址[["Tutorial-i386.exe"+172160]+3C],
以上是一种通用的查找基址的方法,还有指针扫描的查找方式,以后我们再继续讲。
现在用这个基址调用作为传递参数调用call,在CE自动汇编中调用:
alloc(mem,1024)
mem:
mov eax,"Tutorial-i386.exe"+172160
mov eax,[eax]
add eax,3C
mov eax,[eax]
call Tutorial-i386.exe.text+8DC50
ret
createthread(mem)