實驗目標:通過遍歷尋找召喚殭屍的call,通過呼叫call出現自定義的殭屍,加速殭屍的出現。
殭屍call的遍歷技巧:
我們可以通過殭屍出現在螢幕中的個數來遍歷尋找殭屍出現的call
首先開啟ce->進入遊戲開始新的遊戲-> 直接搜尋未知初始化資料
等待出現第乙個殭屍 ->ce搜尋-增加的數值 -> 回到遊戲中
等待出現第二個殭屍 -> ce搜尋增加的數值 ->然後殺死乙個殭屍-> 搜尋減少的數值
ce中直接選擇介於兩者之間的 -> 輸入 0 - 10 這個範圍 -> 進一步篩查
按照上面的步驟依次篩查 ,最終會看到兩個數值!
1.首先開啟ce工具,等待開始遊戲以後,我們直接【搜尋未知初始值】,因為結果太大所以位址列不會顯示。
2.當螢幕上出現第一只殭屍以後,我們直接切回ce修改器,【搜尋增加的數值】。
3.等待出現第二隻殭屍以後,我們再次【搜尋增加的數值】,經過二次排查以後,位址列的位址變得更少了。
3.等待出現第三隻殭屍以後,再次回到ce【搜尋增加的數值】,經過第三次排查,位址又變小了很多。
4.等待小推車自動的殺死乙個殭屍,或手動殺死乙隻,(我是等待小推車推死的),然後回到ce【搜尋減少的數值】。
5.接著搜尋未變動的數值,此時ce會顯示連個位址,我們加入下方位址列。
6.在ce資料視窗選中第乙個位址,右鍵選擇是什麼改寫了它,然後等待出現殭屍,會發現一條彙編**,我們記下位址【00471b57】
接著在第二個位址上同樣的操作,然後記下位址【0041de07】。
7.我們直接od載入吧,載入以後執行起來,然後到程式領空,並在【00471b57】,【0041de07】兩個地指處下兩個【f2】斷點。
8.回到遊戲等待出現殭屍,觀察發現第乙個位址【00471b57】並不是出現殭屍的位址,我們取消這個斷點,然後按下【f9】讓遊戲跑起來。
接著回到遊戲,再次等待出現殭屍,觀察(如下)位址發現,只要出現了殭屍遊戲就會被斷在【0041de07】位址處,那就非常肯定這就是關鍵位址了。
上方**,一般情況下應該不會有呼叫函式,因為這裡是只是計數器,那麼這個函式的作用應該僅僅只是乙個殭屍計數函式,所以我們要返回到上一層。
經過我的測試,上面的引數經過不同程度的修改確實可以控制殭屍的出現位置,和殭屍的型別,但這裡傳遞的引數還是過多,而且很多引數我們都用不到,那麼我們直接出這個call,去外層看一下。
9.我們在以下位置直接下【f2】斷點,等待出現殭屍od會直接斷下,我們經過單步除錯然後記下這些位址引數。
上圖的edi是乙個動態位址,因為他是殭屍物件,所以每次程式執行都會發生變化,如果想用**注入器注入**的話,則需要找到edi的基位址,接下來我們將使用ce搜尋edi的基址和偏移。
10.這裡我們使用x32dbg偵錯程式,因為od預設無法脫離程序,導致無法使用ce下斷點,直接使用x32dbg附加遊戲程序然後執行,並在的位置下乙個【f2】斷點,回到遊戲等待出現殭屍,然後x32dbg會自動斷下,我們單步【f8】並記下【esi暫存器】引數。
如上我們只需要記下【143df008】然後,選擇檔案,選擇脫離程序即可。
13.此處我們已經發現了基位址,我們直接記下來吧 【006a9f38】偏移是指向的就是殭屍的物件位址。
14.使用**注入器測試一下效果。
轉到召喚殭屍call:[00413055] 執行到返回出call
在004140c9的地方直接給mov eax,1
植物大戰殭屍
c code using system using system.drawing using system.text using system.windows.forms namespace plantsvszombiestool private void form1 load object sen...
植物大戰殭屍新植物殭屍(上)
速度 慢,同普通殭屍 西瓜投手殭屍傷害力巨大,西瓜砸碎時3 3範圍的植物全部都會受到傷害,和西瓜投手相同。魅惑無效,照樣投向植物,最好用必殺植物,地刺也能砸到 攻擊 80 3 3格仔 生命 200 出現在草地 泳池 屋頂 室內。弱點 蘿蔔保護傘 背景 一天晚上,一群殭屍劫持了西瓜投手,它們對西瓜投手...
1565植物大戰殭屍
description input output 僅包含乙個整數,表示可以獲得的最大能源收入。注意,你也可以選擇不進行任何攻擊,這樣能源收入為0。sample input 3 210 0 20 0 10 0 5 1 0 0 100 1 2 1 100 0 sample output hint 在樣例...