游戲輔助外gua篇:如何Dump內(nèi)存獲得游戲的輔助

轉(zhuǎn)載請(qǐng)標(biāo)明出處:
https://dujinyang.blog.csdn.net/article/category/9267855
本文出自:【奧特曼超人的博客】

本篇邀請(qǐng)了 “阿七” 做個(gè) 外掛輔助入門篇 分享,之前公眾號(hào)也分享過了。


最近女朋友都在玩游戲,晚上還不理人,剛好近期對(duì)游戲輔助制作很感興趣,打算搞個(gè)輔助讓她失去玩游戲的信心,所以在接下來的幾天里逛了一些論壇、教程 ( 在此膜拜下輔助大神 )。 大致了解到輔助的種類,作為入門新兵,先從動(dòng)作式 ( 所謂動(dòng)作式,就是指用API發(fā)命令給窗口或API控制鼠標(biāo)、鍵盤等 ) 輔助學(xué)起吧,那么就需要找一款合適的簡(jiǎn)單網(wǎng)絡(luò)小游戲 ( 很多網(wǎng)絡(luò)游戲有各種保護(hù)什么的 ) 作為入門學(xué)習(xí)了。

先來看下最終的效果圖:

外掛公眾號(hào)python2048效果圖

有人可能會(huì)說入門為什么不擼單機(jī)的?

外掛公眾號(hào)python2048

呃... 單機(jī)的擼出來怎么在玩家面前裝X !!! 用輔助不就是為了在對(duì)局中輕松獲勝的那種舒爽嘛!!! 不就是為了 “你確實(shí)很厲害,但我永遠(yuǎn)不會(huì)輸” 的暢快嘛!!! (靈魂三連)

好吧,其實(shí)只是我女朋友不玩單機(jī)游戲……

外掛黑客python2048公眾號(hào)

都說輔助毀游戲,那么目標(biāo) :女友的Xx連連看

Let’s Go!!!

前期準(zhǔn)備:
游戲:xx連連看
工具:VS2019,CE,spy++
環(huán)境:win10

本文只是把xx連連看拿來練手學(xué)習(xí)下如何從內(nèi)存中dump些東西, 所以我們要明白步驟是怎么玩的,下面我們就來拆解下:

玩法機(jī)制,只要將相同的兩張牌用三根以內(nèi)的直線連在一起消除即可。
游戲可能是一個(gè)11*19的二維字節(jié)數(shù)組。
每個(gè)數(shù)組下標(biāo)對(duì)應(yīng)一個(gè)值,值相同,那么牌型就相同。

空著的位置值可能是0。

每個(gè)棋子的寬高一致 ,如果能確定A,B下標(biāo)可消除,那么鼠標(biāo)怎么定位到A,B下標(biāo)的位置,然后點(diǎn)擊呢?

有人很好奇,為什么是1119的二維字節(jié)數(shù)組,因?yàn)橹皇遣孪?,你也可?020,只是要明白是個(gè)二維字節(jié)數(shù)組就好。

其它的一頓想當(dāng)然的腦補(bǔ)... (還好已經(jīng)驗(yàn)證,不然絕對(duì)翻車..)

那么核心就是能找到第一個(gè)下標(biāo)的內(nèi)存基址,推出整個(gè)棋盤的數(shù)據(jù),然后通過算法找到相同的數(shù)據(jù),模擬點(diǎn)擊消除即可。

首先,創(chuàng)建房間進(jìn)入練習(xí)模式,前期可能會(huì)翻車,大家先打開CE工具,附加到游戲進(jìn)程,這一步慢慢來,通過不停的搜變化的值、為0的值、大于0的值 (CE搜索教程請(qǐng)自行百度,這里就不敘述了),最終找到第一個(gè)下標(biāo)的內(nèi)存地址。

怎么查看內(nèi)存區(qū)域呢,大家看下面的圖:


連連看外掛python2048

Push、Mov、sub這些不懂的下一篇會(huì)出個(gè)簡(jiǎn)單的知識(shí)圖譜。

可以看出,前面的分析是正確的,相同的牌型,對(duì)應(yīng)的值是一樣的,空著的地方對(duì)應(yīng)的值為0。棋牌確實(shí)是11*19的字節(jié)數(shù)組。

內(nèi)存地址找到了,那么開始編寫輔助,代碼方面就不詳細(xì)貼了,畢竟寫的也不好。

首先我們需要一個(gè)11*19二維數(shù)組棋盤,還有每個(gè)棋子的屬性,那么,我們就需要定義一個(gè)棋子類,棋子類屬性包含 x坐標(biāo),y坐標(biāo),指針,行,列。

通過spy++定位出第一個(gè)下標(biāo)的x值, y值, 和之前已經(jīng)拿到第一個(gè)棋子的內(nèi)存地址去比較,棋子大小不變,是固定的,那么我們通過第一個(gè)棋子的數(shù)據(jù),可以推斷出整個(gè)二維數(shù)組棋盤數(shù)據(jù),當(dāng)然前提是得匹配得上啦。

話不多說,看代碼:


外掛公眾號(hào)python2048

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

黑客公眾號(hào)python2048

模擬點(diǎn)擊兩個(gè)棋子的x,y坐標(biāo),實(shí)現(xiàn)消除

python2048公眾號(hào)外掛

這里的鼠標(biāo)點(diǎn)擊是模擬發(fā)送,其實(shí)和輔助性能類的差不多,大致做了個(gè)界面出來,效果圖如下:


游戲外掛python2048公眾號(hào)

Tips: 這幾個(gè)小按鈕,都是控制的消除速度index,這里我們需要用Sleep(index) 函數(shù)去控速,不然會(huì)有點(diǎn)危險(xiǎn),如果是0的話大概就能秒消了。

小插曲: 本著不想太奔放的緣故,之前默認(rèn)是一秒消除一對(duì),測(cè)試一段時(shí)間后發(fā)現(xiàn),大概率拿不到第一,連連看大神們是能干過每秒消除一對(duì)的輔助的 (大神的手眼速度讓萌新瑟瑟發(fā)抖~~), 這樣就造成刷分的緩慢,最后只能修改成只要對(duì)手中有人剩余棋子數(shù)小于10,那么這邊index設(shè)置0,實(shí)現(xiàn)秒消,拿第一。

當(dāng)然,這里不是為了刷分啊,我們只是為了學(xué)習(xí)如何dump內(nèi)存而已…


游戲dump內(nèi)存數(shù)據(jù)

自動(dòng)測(cè)試掛了幾天后,勝率從25%刷到了81%,積分從幾千到幾十萬,默默的卸載了此游戲,基本穩(wěn)定,自此連連看輔助就告一段落了。

值得一提的是, 后來女友再也沒玩過這個(gè)游戲了(呵呵噠)。

然鵝...也再也沒有理我了 …

游戲外掛女朋友不理我了

本文申明:本文僅供學(xué)習(xí)與參考之用,請(qǐng)勿用作商業(yè)用途,轉(zhuǎn)載請(qǐng)聯(lián)系作者。

python2048微信公眾號(hào)

作者:奧特曼超人Dujinyang

來源:CSDN

原文:dujinyang.blog.csdn.net/

版權(quán)聲明:本文為博主杜錦陽原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容