實驗目標:通過遍歷陽光產生的時間,尋找陽光產生的本地Call,使用代碼注入器注入,自定義生成陽光
陽光CALL遍歷技巧:
進入植物大戰僵屍-> 當出現陽光后->馬上搜索未知初始數值
返回游戲-> 馬上切回CE-> 搜索減少的數值 -> 掉一點搜一點
最后排查出它的掉落地址-> 鎖定1即可實現無限掉落
1.首先CE打開游戲,然后進入植物大戰僵屍,當出現陽光后我們暫停游戲,並馬上搜索未知初始數值。
2.返回游戲,讓陽光下落一點點, 馬上切回CE,搜索減少的數值 -> 掉一點搜一點。
3.經過我的不斷排查,最后排查出以下結果,我們將其加入到地址列表中,依次將我們找到的這幾個地址鎖定為1,看是否有反映。
4.此處我已經找到了。
5,我們直接在找到的地址上右鍵,選擇找出是誰訪問了這個地址,或選中這一行按下【F5】也可以,如下我們需要記下【00413BCB】這個內存地址,然后直接關閉CE,接下來我們要使用OD調試了。
6.打開OD直接附加植物大戰僵屍進程,【F9】讓程序跑起來,按下【Ctrl + G】輸入【00413BCB】,定位代碼,然后在該位置按下【F2】下一個斷點。
此時往上找,有一個JNZ的跳轉指令,我們雙擊在此處下一個【F2】斷點,然后運行游戲,此時會斷下,此處的JNZ如果成功跳轉則不會生成陽光,那么我們把此處NOP掉看看會出現啥結果。
7.如上圖,如果我們將其NOP掉的話,回到游戲會發現無限的出現陽光了,也就是說陽光的CALL就在他跳過的這些指令當中。
8.觀察它跳過的代碼片段,我們找一下有沒有陽光生成的CALL,如下我發現了一些帶有參數傳遞的CALL,這可能就是陽光的生成CALL了。
9.在PUSH的位置上下【F2】斷點,然后運行程序並等待陽光生成,生成后會斷下【F8】單步跟隨,將其中的寄存器參數記錄下來。
10.使用代碼注入器測試效果,默認的PUSH參數是4出現的是正常的陽光,如果我們將其改成6則會出現一個大的陽光。
11.如果將注入的參數改為 push 1 和push 3 那么屏幕上將出現鑽石。
也可以下鑽石雨!很漂亮但很危險,容易崩潰!
詳細分析筆記,猛戳這里:https://blib.cn/post/4ed8.html