植物大戰僵屍:實現游戲內自動收集陽光


1.首先我們找出陽光的動態地址,找到之后我們雙擊這個地址,將其加入到地址列表中,陽光的查找技巧相信你已經能夠掌握了,這里就不再羅嗦了。

 

2.接着我們選擇最下方的地址列表,然后按下【F6鍵】,也就是下一個硬件寫入斷點,然后回到游戲等待陽光出現並點擊陽光,此時CE會出現以下代碼,我們只需要記下【00430A11】這個內存地址,然后直接關閉CE吧,短期內用不到了。

 

3.打開OD,然后我們直接附加植物大戰僵屍的游戲進程,點擊【文件】然后點擊【附加】選擇植物大戰僵屍進程就好。

 

4.附加完成后,我們的游戲會被OD暫停運行,此時我們直接按下【F12】讓游戲正常的運行,默認情況下會停在系統領空,我們直接按下【Ctrl + G】輸入【00401000】來到程序領空。

 

5.接着我們按下【Ctrl + G】輸入【00430A11】跳轉到剛才找到的代碼位置,過去以后直接【F2】下一個斷點

 

6.緊接着我們回到游戲,然后等待陽光的出現,當陽光出現后我們點擊陽光,OD會自動斷在00430A11的位置,其中ecx就是要增加的陽光數。

上圖並沒有CALL調用,應該是在外部,我們直接回朔到上一層【Ctrl+F9】執行到返回,【F8】直接出CALL.

 

7.我們在JNZ和CALL的兩處位置下斷點,然后運行程序,當我們點擊陽光時會斷在JNZ的位置,如果把JNZ用NOP填充的話,會發現當我們再次點擊陽光的時候陽光會迅速的被回收沒有了動畫。

也就是說,JNZ如果成立的話則會有回收陽光的動畫,當不成立的時候則會執行【call 004309d0】顯然這就是回收陽光的關鍵CALL,但我們可猜測,再回收陽光的時候一定會判斷是否回收,所以回收的判斷應該在上一層。

 

8.首先我們回到游戲,等待出現陽光然后點擊陽光,OD會斷下,斷下后我們取消這兩處的斷點,然后跟着OD單步【F8】向下走,直接出這個CALL,出CALL后會看到如下代碼,我們直接下三個斷點。

 

9.下好斷點,回到游戲等待陽光下落我們回收,此時OD會斷下,我們運行OD發現會一直被斷在【0043158F】只要陽光沒有收回就會一直斷下,此處的跳轉並沒有實現,因為我們沒有去點擊陽光,這里可以得出如果點擊了陽光JNZ則會跳轉成立,否則不成立等待用戶點擊回收陽光。

 

10.我們取消所有的斷點,然后嘗試把JNZ跳轉改成JMP無條件跳轉,讓其只要一出現陽光就自動的觸發回收的CALL試試。

 

改完以后我們回到游戲,會發現只要陽光出現了會被立即回收,再配合第三課學習的內容,簡直就是吸光狂魔啊。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM