1. 程式人生 > 其它 >植物大戰殭屍輔助編寫2 - 繪製方框

植物大戰殭屍輔助編寫2 - 繪製方框

2D遊戲輔助 - 植物大戰殭屍

2.繪製殭屍方框

  1. 獲取殭屍位置

  2. 獲取殭屍數量

  3. HOOK存放殭屍位置的地址

  4. 繪製殭屍方框

我們要做的工作就是這些

獲取殭屍位置

殭屍出現 , 我們搜尋未知的浮點數

殭屍移動 , 搜尋變動的數值

殭屍沒移動 , 搜尋未變動的數值 , 發現搜尋完了之後 , 還是有好多數值 , 我們換條思路縮小範圍

設定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,如此往復....

HOOK存放殭屍位置的地址

CE對殭屍座標欄 , F5 , 查詢誰訪問了他

0052D9E1 - D9 41 2C - fld dword ptr [ecx+2C] , 轉到0052D9E1地址

找出這條指令訪問了誰

出現第二隻殭屍 , 出現了新的地址 , 這個地址就是第二隻殭屍X座標 , 我們要做的就是HOOK 0052D9E1這個地址 , 讀取地址ecx+0x2c存放的值 , 開始寫程式碼

讀取殭屍座標 , EasyHOOK是我瞎寫的一個跨程序HOOK庫 , 沒有程序通訊的功能,故讀取殭屍的地址變動快的話, 我的座標跟不上 , 關於HOOK , 確保程式正確執行就行

讀取殭屍的座標

繪製殭屍方框

繪製庫我用的是EasyX , 建立視窗及相關設定的程式碼 ,EasyX下載地址 easyx.cn,很方便,同時也很簡陋.... 對於我來說夠用了

繪製殭屍方框程式碼

效果圖: 因為畫布沒有清除 , 所以出現一堆我是殭屍 , 但是網上說的 易語言Imgui, 閃爍 , 繪製不上的問題沒有出現

原始碼連結

提取碼:0000