植物大戰僵屍輔助編寫2 - 繪制方框


2D游戲輔助 - 植物大戰僵屍

2.繪制僵屍方框

  1. 獲取僵屍位置

  2. 獲取僵屍數量

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

  4. 繪制僵屍方框

我們要做的工作就是這些

獲取僵屍位置

僵屍出現 , 我們搜索未知的浮點數

image

僵屍移動 , 搜索變動的數值

image

僵屍沒移動 , 搜索未變動的數值 , 發現搜索完了之后 , 還是有好多數值 , 我們換條思路縮小范圍

image

設置CE搜索的起始地址 為陽光的的地址 因為運氣好, 所以我沒有將地址改在 11FF3AC8之前 , 應該要分段搜索(陽光值和僵屍坐標值地址在同一個段) 其實僵屍的int類型也有一個x坐標 , 和這個float類型的一樣 , 但是int類型的坐標是讀取float類型的地址 . 修改它,無效

image

X坐標有了 , Y坐標呢? 對僵屍X坐標欄, Ctrl+B打開內存窗口 , 設置顯示類型 , 可以看到僵屍X坐標地址+4 , 有個250 , 修改一下他

image

修改成功 , 但是僵屍會被拉回原Y坐標 , 我想僵屍還存有一個 對應列表的數值

image

將數據類型改成4字節10進制顯示 , 發現120(X) 1(Y) , 2 , 修改一下他,改成5

image

僵屍就跑到了草坪外面了 , 哈哈 , 看來X,Y坐標附近 , 就是僵屍的結構體 , 大家自行研究 float類型 , 不同版本的CE可能識別的不一樣 , 我的是CE 7.0 , 如果單浮點數勾選了簡單值,那么將更快找到....

image

我們使用截圖工具看一下僵屍對於,植物大戰僵屍窗口的坐標(這一步無法截圖)發現僵屍的坐標大概是 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地址

image

找出這條指令訪問了誰

image

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

image

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

image

讀取僵屍的坐標

image

繪制僵屍方框

繪制庫我用的是EasyX , 創建窗口及相關設置的代碼 ,EasyX下載地址 easyx.cn,很方便,同時也很簡陋.... 對於我來說夠用了

image

繪制僵屍方框代碼

image

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

image

不爽的話 , 在繪制僵屍的代碼后 ,添加清除函數

image

效果圖: 這樣的代碼仍需優化(如僵屍死后,依舊繪制 , 大家可以判斷X是否變化 , 也可以換個地址進行HOOK(誰改寫了他)我們的代碼是誰訪問了他) 同時 , EasyX創建的窗口,畫布大小也需改變.......

image

源碼鏈接

提取碼:0000


免責聲明!

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



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