轉載請標明出處:
https://dujinyang.blog.csdn.net/article/category/9267855
本文出自:【奧特曼超人的博客】
本篇邀請了 “阿七” 做個 外掛輔助入門篇 分享,之前公眾號也分享過了,
最近女朋友都在玩游戲,晚上還不理人,剛好近期對游戲輔助制作很感興趣,打算搞個輔助讓她失去玩游戲的信心,所以在接下來的幾天里逛了一些論壇、教程 ( 在此膜拜下輔助大神 ), 大致了解到輔助的種類,作為入門新兵,先從動作式 ( 所謂動作式,就是指用API發命令給視窗或API控制滑鼠、鍵盤等 ) 輔助學起吧,那么就需要找一款合適的簡單網路小游戲 ( 很多網路游戲有各種保護什么的 ) 作為入門學習了,
先來看下最終的效果圖:

有人可能會說入門為什么不擼單機的?

呃... 單機的擼出來怎么在玩家面前裝X !!! 用輔助不就是為了在對局中輕松獲勝的那種舒爽嘛!!! 不就是為了 “你確實很厲害,但我永遠不會輸” 的暢快嘛!!! (靈魂三連)
好吧,其實只是我女朋友不玩單機游戲……

都說輔助毀游戲,那么目標 :女友的Xx連連看
Let’s Go!!!
前期準備:
游戲:xx連連看
工具:VS2019,CE,spy++
環境:win10
本文只是把xx連連看拿來練手學習下如何從記憶體中dump些東西, 所以我們要明白步驟是怎么玩的,下面我們就來拆解下:
玩法機制,只要將相同的兩張牌用三根以內的直線連在一起消除即可,
游戲可能是一個11*19的二維位元組陣列,
每個陣列下標對應一個值,值相同,那么牌型就相同,
空著的位置值可能是0,
每個棋子的寬高一致 ,如果能確定A,B下標可消除,那么滑鼠怎么定位到A,B下標的位置,然后點擊呢?
有人很好奇,為什么是1119的二維位元組陣列,因為只是猜想,你也可以2020,只是要明白是個二維位元組陣列就好,
其它的一頓想當然的腦補... (還好已經驗證,不然絕對翻車..)
那么核心就是能找到第一個下標的記憶體基址,推出整個棋盤的資料,然后通過演算法找到相同的資料,模擬點擊消除即可,
首先,創建房間進入練習模式,前期可能會翻車,大家先打開CE工具,附加到游戲行程,這一步慢慢來,通過不停的搜變化的值、為0的值、大于0的值 (CE搜索教程請自行百度,這里就不敘述了),最終找到第一個下標的記憶體地址,
怎么查看記憶體區域呢,大家看下面的圖:

Push、Mov、sub這些不懂的下一篇會出個簡單的知識圖譜,
可以看出,前面的分析是正確的,相同的牌型,對應的值是一樣的,空著的地方對應的值為0,棋牌確實是11*19的位元組陣列,
記憶體地址找到了,那么開始撰寫輔助,代碼方面就不詳細貼了,畢竟寫的也不好,
首先我們需要一個11*19二維陣列棋盤,還有每個棋子的屬性,那么,我們就需要定義一個棋子類,棋子類屬性包含 x坐標,y坐標,指標,行,列,
通過spy++定位出第一個下標的x值, y值, 和之前已經拿到第一個棋子的記憶體地址去比較,棋子大小不變,是固定的,那么我們通過第一個棋子的資料,可以推斷出整個二維陣列棋盤資料,當然前提是得匹配得上啦,
話不多說,看代碼:

通過遍歷整個棋盤,找到相同的兩個值,通過尋路演算法查看是否可以消除,如果可以消除

模擬點擊兩個棋子的x,y坐標,實作消除

這里的滑鼠點擊是模擬發送,其實和輔助性能類的差不多,大致做了個界面出來,效果圖如下:

Tips: 這幾個小按鈕,都是控制的消除速度index,這里我們需要用Sleep(index) 函式去控速,不然會有點危險,如果是0的話大概就能秒消了,
小插曲: 本著不想太奔放的緣故,之前默認是一秒消除一對,測驗一段時間后發現,大概率拿不到第一,連連看大神們是能干過每秒消除一對的輔助的 (大神的手眼速度讓萌新瑟瑟發抖~~), 這樣就造成刷分的緩慢,最后只能修改成只要對手中有人剩余棋子數小于10,那么這邊index設定0,實作秒消,拿第一,
當然,這里不是為了刷分啊,我們只是為了學習如何dump記憶體而已…

自動測驗掛了幾天后,勝率從25%刷到了81%,積分從幾千到幾十萬,默默的卸載了此游戲,基本穩定,自此連連看輔助就告一段落了,
值得一提的是, 后來女友再也沒玩過這個游戲了(呵呵噠),
然鵝...也再也沒有理我了 …

本文申明:本文僅供學習與參考之用,請勿用作商業用途,轉載請聯系作者,

作者:奧特曼超人Dujinyang
來源:CSDN
原文:dujinyang.blog.csdn.net/
著作權宣告:本文為博主杜錦陽原創文章,轉載請附上博文鏈接!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/62178.html
標籤:其他
上一篇:python機器學習——感知器
下一篇:強化學習簡介及馬爾科夫決策程序
