作者:kkmomo
來源:
備註:如果作者不希望被轉帖到此處,請告知,小弟會馬上刪帖。
-------------------------------------------------------------------------------------
CRC轉ICS(三)-1
150.2
早上剛好在維修沒辦法拍CE的圖
這裡來教用CE內建功能的做法
首先移到CRC要改的位址004EC443右鍵"Select current function"
它會自動幫你反白整個副程式區塊
雖然有時也有例外要自己判斷
不過大部分都正確
找到副程式的頭後,在該行右鍵"Break and trace instructions"
會跳出的小視窗,一般用預設值就好,或是自己增減最大跟蹤數、加停止條件
OK後會跳出另一個視窗
一開始可能都沒東西,表示還沒有引發事件執行到這區塊
既然名稱叫物品定位,就回遊戲中做一些跟這相關的事
一處發後,CE就會自動幫你紀錄下來
接著從004EC443往上找把+號一個一個打開來看有沒有call ptr
結果發現一個比較近的
004EC3DC - E8 B4F3FFFF - call 004EB795
在上一篇中有提到,因為在level 1中的call直接看不確定會不會執行到所以先不予考慮
如果確定一定會經過的話選擇這個比較佳
不過為了配合上一篇,還是以同一個點來做說明
首先看到
004EC3A7 - E8 B0F2FFFF - call 004EB65C
把他底下的節點展開到要的call ptr就好
然後點004EC3A7看他esp的值
這裡是esp=0028C684
接著點
004EB639 - FF 50 04 - call dword ptr [eax+04]
左邊看到ptr下層的第一個位址006F65B8
右邊看到esp=0028C674及ptr 00C22D88
得到這幾個位址就差不多完工了
offset = [level 0 call的esp] - [call ptr的esp] = 0028C684 - 0028C674 = +10
至於00C22D88及006F65B8,就是ptr的位址
在代碼中是
[disable]
00C22D88:
DD 006F65B8
沒有留言:
張貼留言