我們要做的工作就是這些殭屍出現 , 我們搜尋未知的浮點數
殭屍移動 , 搜尋變動的數值
殭屍沒移動 , 搜尋未變動的數值 , 發現搜尋完了之後 , 還是有好多數值 , 我們換條思路縮小範圍
設定ce搜尋的起始位址 為陽光的的位址 因為運氣好, 所以我沒有將位址改在 11ff3ac8之前 , 應該要分段搜尋(陽光值和殭屍座標值位址在同乙個段) 其實殭屍的int型別也有乙個x座標 , 和這個float型別的一樣 , 但是int型別的座標是讀取float型別的位址 . 修改它,無效
x座標有了 , y座標呢? 對殭屍x座標欄, ctrl+b開啟記憶體視窗 , 設定顯示型別 , 可以看到殭屍x座標位址+4 , 有個250 , 修改一下他
修改成功 , 但是殭屍會被拉回原y座標 , 我想殭屍還存有乙個 對應列表的數值
將資料型別改成4位元組10進製顯示 , 發現120(x) 1(y) , 2 , 修改一下他,改成5
殭屍就跑到了草坪外面了 , 哈哈 , 看來x,y座標附近 , 就是殭屍的結構體 , 大家自行研究 float型別 , 不同版本的ce可能識別的不一樣 , 我的是ce 7.0 , 如果單浮點數勾選了簡單值,那麼將更快找到....
我們使用截圖工具看一下殭屍對於,植物大戰殭屍視窗的座標(這一步無法截圖)發現殭屍的座標大概是 window_x + 20+ 殭屍x 就是drawwindow_x , window_y+標題欄的y 就是殭屍y獲取殭屍數量 , 分析結構可能更方便 , 這裡不寫(我也不會),思路是跟蹤**
出現乙隻殭屍 , 就搜尋int 1 ,兩隻就2,如此往復....ce對殭屍座標欄 , f5 , 查詢誰訪問了他
0052d9e1 - d9 41 2c - fld dword ptr [ecx+2c] , 轉到0052d9e1位址
找出這條指令訪問了誰
出現第二隻殭屍 , 出現了新的位址 , 這個位址就是第二隻殭屍x座標 , 我們要做的就是hook 0052d9e1這個位址 , 讀取位址ecx+0x2c存放的值 , 開始寫**
讀取殭屍座標 , easyhook是我瞎寫的乙個跨程序hook庫 , 沒有程序通訊的功能,故讀取殭屍的位址變動快的話, 我的座標跟不上 , 關於hook , 確保程式正確執行就行
讀取殭屍的座標
繪製殭屍方框**
效果圖: 因為畫布沒有清除 , 所以出現一堆我是殭屍 , 但是網上說的 易語言imgui, 閃爍 , 繪製不上的問題沒有出現
不爽的話 , 在繪製殭屍的**後 ,新增清除函式
效果圖: 這樣的**仍需優化(如殭屍死後,依舊繪製 , 大家可以判斷x是否變化 , 也可以換個位址進行hook(誰改寫了他)我們的**是誰訪問了他) 同時 , easyx建立的視窗,畫布大小也需改變.......
原始碼鏈結
提取碼:0000
C 編寫植物大戰殭屍外掛程式
最近閒來無事發現周圍的朋友都在玩 植物大戰殭屍 的遊戲!於是動了製作這遊戲工具的念頭!雖然在網上同類工具很多 但是用c 寫的我幾乎看不到!所以我想用c 寫乙個!首先用ce或者od或者其他反彙編工具找出遊戲的記憶體基址!遊戲記憶體基址 base 0x006a9ec0 至於如何獲取這些位址不在我們這論壇...
Python做遊戲 植物大戰殭屍 1繪製場景
利用pygame模組開發 專案迭代開發 步驟 1.初始化pygame 2.設定窗體大小 3.程式標題名稱 4.背景圖更換 5.渲染 6.退出事件 具體實現 import pygame,sys from plants.peashooter import peashooter 這初始化 pygame.i...
coco2d x 植物大戰殭屍(2)金幣板得監聽
結著寫了 建立乙個金幣展示板層,在dollardisplaylayer.h中 pragma once include e cocos2d x cocos2d x 2.2 cocos2d x 2.2 cocos2dx layers scenes transitions nodes cclayer.h ...