掃雷程序外掛分析記錄

2021-02-26 看雪學院

所謂遊戲外掛,是一種遊戲輔助程序,可以協助玩家自動產生遊戲動作、修改遊戲網絡數據包以及修改遊戲內存數據等。能實現的功能一般包括:自動戰鬥、自動行走、自動練級、自動補血、加速、不遇敵、原地遇敵、快速增加經驗值等。

在看雪上看到很多人說他們第一個外掛就是掃雷,於是我也找來了掃雷遊戲練手,程序小,簡單,成功以後可以增加新手的自信心。

外掛掃雷,有兩個目標點。

第一,去除時間走動。

第二,自動找出所有的雷,一鍵掃雷。

 

一, 時間

這是一個windows窗體程序,我們需要對消息機制,窗體創建有一個了解。具體參見windows 核心編程。RegisterClassA(W), RegisterClassAEX(W), 會註冊窗體類,它接受一個_In_  const WNDCLASSEX *lpwcx  參數。


可以知道第三個參數是註冊的窗口消息處理函數的指針。用OD打開目標程序: 掃雷.exe,在RegisterClassAEX 系列函數下斷點,可以找到向系統註冊的自定義窗口回調函數。


看到這麼多case,猜測是對不同消息的不同處理。找到我們感興趣的:


猜測每次時間走動和這個消息有關係,下斷點,點擊一次窗體以後什麼也不幹,果然每一秒鐘就會斷一次。說明,確實是在這個消息裡面處理的時間。

斷點下來:

看時間是53秒,開打Cheat Engine,採用如圖參數搜尋。


可以看見我們exe模塊只有一個byte的值是53.為了確保這個地址確實就是我們存放時間的地址,讓OD繼續執行到時間為54。


我們發現這個內存地址發生了變化,從53變化到了54,確實就是存放時間的地址。為了找到修改這個地址的代碼,我們利用od下內存寫斷點。具體方法:在OD查看內存的地方,ctrl+G,輸入地址100579c 


右鍵內存write point 


然後f9,跑起來,會斷在修改這個byte內存的地方


可以看到對100579c這個地方的int變量每次增加1.有兩個辦法去掉時間增加:一個是修改pe文件,將這行指令用od nop掉,然後保存;一個是記錄下地址,在注入dll的時候把內存修改為nop。

二. 自動掃雷

從用戶行為開始分析,掃雷遊戲,右鍵是插旗幟,左鍵按下,抬起是踩下去。從上面的用戶註冊的消息回調開始,找到:


這是左鍵按下的消息。我們通過windows核心編程知道,按鍵發生的消息如下:


 消息處理函數的第四個參數是按在窗體上距離原點(左上角)的x,y偏移,在1001fb1的地方調用了一個函數,用坐標作為第一個參數,我們猜測是邏輯處理,跟進去,結果發現裡面只是處理了一個繪製信息,好失望。出來,接著跟。一路f8,跟到:


發現圖標由微笑的臉變成了


 哈哈,標註下來,找到一個系統call。說不定以後有用,可以直接調用這個系統call。接著f8,找到了:


傳入的兩個參數為格子的坐標(x,y),直接f8跳過這個函數,發現變成了灰色,猜測這裡做了邏輯處理。重新執行到這個函數,並且跟進去。


找到一個可疑函數跟進去。然後發現跟進去也沒看出個所以然來。

怎麼辦,這個時候思考一下,從哪個角度入手。無聊隨便亂按掃雷的雷區,發現左鍵按下保持,可以移動,當移動到一個位置,左鍵抬起,這個左鍵抬起的位置才會出現數字和判斷是否是雷。於是考慮從左鍵抬起信號地方入手。又回到註冊的消息回調函數,就調用了這一個函數,跟進去:


參數是坐標信息,猜測是用坐標信息做什麼處理,然後得到結論。


果然看到了row * 32 + col + 1005340 用來索引坐標。

打開遊戲自定義,查看高級的自定義,最多是30 * 16,猜測有邊界沒有使用。即使是初級9*9,也是使用的30 * 16的大的二維數組,其他的地方沒有使用。使用od,查看二維數組內存1005340



很有規律的10  8f  0f,還是一些42,什麼的。

突然我發現了一個42!!!!這不是ascii碼的2麼


測被點開的數字用ascii碼表示。

接下來的任務就是弄清這一堆數字表示的意思是什麼,10  8f  0f,怎麼辦呢,對比法。用簡單模式9*9,沒有點擊的時候內存如下:


根據這個公式row * 32 + col + 1005340,我們發現,內置的每一行有32個方塊(最高級模式為30*16),結合內存看,有11個10(簡單模式為9*9),我們猜測在9*9的數組外圍有一層牆,用0x10標識,那麼在第二行第一個,也就是(2-1)*32,應該是0x10,5340+0x20應該是0x10,好。我們知道了0x10是邊界,那麼就只剩下0xf 0x8f。

我們點開所有的雷:


運氣真好,點了兩下就中雷了。這個時候查看內存。


圖中多了幾個字符 0x8a  0x41  0xcc,結合兩張圖看



發現 5361 由由0f編程了8a  5366及還有得其他地方由8f變成了8a,  5384由8f變成了41(『1』),表示周圍有一個雷,當然就是這裡的5385的cc。

猜測,最原始的0x0f表示沒有被踩過的非雷方塊,0x8f表示沒有踩過的雷方塊。當點擊一個方塊,它周圍有雷,就計算出雷的個數,並顯示字符。當點擊一個雷,點中的這個雷由8f變成cc(int 3中斷了?哈哈),其他沒有點中的雷變成8a。由此可知,從1005340開始所有8f的地方就是雷。

三.注入

注入方法不再說了(採用遠程線程注入),直接上源碼。(壓縮包,下載)。這裡說Dll的寫法。

通過Cheat Engine 前後比較拿到遊戲設定的行列數,地址如下:

const int GameRow = *(int*)0x1005338;

const int GameCol = *(int*)0x1005334;

計算二維數組內存地址範圍:

unsigned char* start_base = (unsigned char*)0x1005340;

unsigned char* stop_base  = (unsigned char*)(0x1005340 + GameRow * GameCol + 100); //多出100,偷懶+保險

static const unsigned char BOND_FLAG = 0x8f;  //雷的標識,start_base stop_base範圍內找雷,並且存到vector<point> 裡面。

class point {

public:

int row;

int col;

};

找到所有的雷的行列坐標以後怎麼實現一鍵掃雷呢?

有一個思路是把所有不是雷的地方都點擊一下,這樣遊戲就勝利了。

SendMessage(hwnd, WM_LBUTTONUP, MK_LBUTTON, MAKELONG(x, y)); 

重點在於point.x point.y如何轉化為窗口的x,y。

我的做法是找來了QQ截圖軟體,觀察出像素點信息為,二維數組的棋盤起始偏移為(7,55) 方塊之間的空格為4,方塊為12*12.則 (row, col)對應的窗體偏移為:

X = 7 + 4 * row + 12 * (row - 1) + 6; // 6是點擊方塊的中間

Y = 50 + 4 * col + 12 * (col - 1) + 6

化簡:x = 1 + 16 * row; y = 44 + 16 * col; 窗體的x和y和正常坐標系是反過來的。所以模擬點擊代碼:


四.結束

截圖一張:


   

微信ID:ikanxue

看雪學院,致力於安全研究16年!

看雪眾測:http://ce.kanxue.com 第二期項目已發布,10萬獎金等你拿!

看雪閱讀:http://book.kanxue.com 付費閱讀新模式

相關焦點

  • 【案例分析】IOS雷霆戰機無極外掛
    功能描述IOS平臺雷霆戰機遊戲出現一款名為無極的外掛,該外掛在非越獄環境中可使用,外掛有無限暴走、無限衝、模擬按鍵等功能,下面將詳細分析外掛相關功能實現方式
  • [系統安全] 一.什麼是逆向分析、逆向分析應用及經典掃雷遊戲逆向
    系統安全系列作者將深入研究惡意樣本分析、逆向分析、攻防實戰等,通過在線筆記和實踐操作的形式分享給大家,希望能與您一起進步。第一篇文章先帶領大家學習什麼是逆向分析,然後詳細講解逆向分析的典型應用,接著通過OllyDbg工具逆向分析經典的遊戲掃雷,再通過Cheat Engine工具複製內存地址獲取,實現一個自動掃雷程序。
  • 詳細解讀用C語言編寫的 「掃雷」程序
    用C語言編寫的掃雷程序編寫前首先得有大致的思路吧,就是第一步幹啥第二部幹啥
  • 【外掛分析】八門神器定製輔助功能
    分析目的我叫MT2目前外網存在八門神器定製輔助工具(如圖1所示),功能惡劣(攻擊方攻擊必定爆擊、防守方攻擊必定MISS、技能無CD、技能攻擊必定擊中
  • 逆向學習:掃雷遊戲輔助
    本文所用程序:    目標1:一鍵自動標記雷的位置     猜測&分析要標記雷的位置,首先就得知道雷是怎麼來的,雷會出現在哪裡,根據我屈指可數的逆向經驗,這種時候要進行猜測。目前掃雷遊戲可以進行精確掃描的數值有三個:寬度、高度、雷數。
  • 你玩的「掃雷」是遊戲,他們的掃雷卻是挑戰生命
    對大多數人來說「掃雷」只是那個Windows中自帶的小遊戲點到「地雷」爆炸了還能再開一局但對這一群人來說掃雷卻是一種對生命的挑戰這樣的一幕幕,在進行掃雷任務的每一天都有可能發生。「和地雷打交道一定要膽大心細,一次粗心就可能失去生命。」
  • 掃雷與數學
    說到掃雷,本文講一講windows經典遊戲——掃雷與數學的關係。(一)掃雷的起源掃雷最原始的版本可以追溯到1973年一款名為「方塊」的遊戲。1985年,「方塊」被改寫成了遊戲「Rlogic」。(二)掃雷的成績排名隨著掃雷的發展,掃雷玩家們發現可以按完成的速度進行排名。目前主要是兩大排行榜:國際掃雷排行榜和中國掃雷網排行榜(據說韓國也有類似的排行榜)。前者由曾排名世界第三的Damien Moore建立,是目前全球掃雷玩家公認的最權威的世界排行。
  • wedo2.0第十八期--掃雷車
    前段時間在朋友圈裡看到老師發的EV3掃雷車作品,想著可以用wedo實現復刻,最後做的效果還行。掃雷車系裝有掃雷器的坦克裝甲車輛,用於在地雷場中為部隊開闢安全的道路。作品主要實現掃雷車的前進以及掃雷裝置的工作,當掃雷裝置在探測過程中檢測到地雷後,掃雷車停止運動並發出警報。結構上主要是將馬達的動力分為兩股,一股驅動車輪,另一股驅動掃雷裝置來回掃雷。
  • 脫下軍裝,掃雷老兵泣不成聲……
    2017年11月27日,中越邊境雲南段第三次大面積掃雷行動在暫停11個月後再次展開。這一次,我們跟隨掃雷部隊一起記錄在雷區刨食的村民現狀,目擊南部戰區陸軍雲南掃雷大隊在這裡冒險排雷的艱辛,直面雷區生活的殘酷,記錄村民對大規模掃雷之後安寧生活的憧憬。11月29日,隊長宣布退役和轉業名單後,給退役的李應興、楊樹茂、孟令衝、丁洪俊摘去了領章、戴上了紅花。
  • 新作與二期的動畫熱浪,2014年7月新番掃雷(3)
    第2季加入了槍械和光劍,武器設定接近《星球大戰》。從OP可以看出我們親愛的桐人……不,桐子將使出絕地武士一般的光劍技法,將對著「她」打槍的敵人一一斬掉。反正《刀劍神域》是必看的了。掃雷評分:9掃雷點評:這次的妹子略少
  • 《CS:GO》再出新反作弊系統,外掛和反外掛的鬥爭仍在繼續
    不止是玩家討厭外掛,官方看著外掛也急。外掛與反外掛之間的鬥爭,如今早已不是什麼新鮮事。
  • 微信小程序—跳一跳,Android遊戲助手(外掛)使用教程
    後來經過仔細閱讀README,加上摸索,和查看源碼,才慢慢走上正途;下面記錄一下,以備你查看: 文章出處: 星光小站 掘金成果原因是:我和朋友討論認為是:微信出了新防外掛舉措,隨機檢測屏幕按壓是模擬按壓還是真實按壓,模擬按壓將不能上傳成績。另有人說是做了時間間隔測試,點擊查看,由於未見過源碼,不好下結論,這裡暫且說是因為模擬按壓。答疑解惑:那麼我是怎麼把成績上傳的呢?
  • 《使命召喚:戰區》封號無數確依然無法阻止外掛蔓延,為什麼外掛如此猖獗?
    隨後,開發商動視的微博發布了一條已永久封鎖5萬多非法使用外掛程序的玩家,並在微博表示:不歡迎開掛玩家,對於開掛玩家的零容忍。而且官方採取24小時監控等多道程序以保證及時處理這種開掛行為.,一個鍵盤,甚至不需要滑鼠就可以完成外掛開發,而且開發獲取的利潤高,當初CSOL神槍手外掛的開發者「一槍爆你頭」在2011年4月1日重慶榮昌被抓獲,該作者通過販賣外掛已獲得高達91萬人民幣的非法資金。
  • 紅色故紙堆:923型遠洋掃雷母艦(上)
    而且當時紅海軍也已經敏銳地察覺,遠海海域掃雷作業離不開探雷作業效率更高、部署更加靈活的掃雷專用直升機裝備,所有提出的這型遠洋掃雷母艦必須具備艦載直升機母艦功能,可以維持一定數量搭載掃雷直升機的正常運作。經過前蘇聯多家軍事研究單位的前期調研和預研工作,1966年由「西部」設計局牽頭給出了一種新一代遠洋掃雷母艦的概念設計方案。
  • 中國外掛產業:每天進帳過萬,不愁沒有買家
    據熟悉遊戲編程的HRC介紹,目前的外掛主要分為兩類,程序外掛和硬體外掛,而本地外掛就是程序外掛的一種。所有的客戶端遊戲,都可以通過本地外掛,來達到作弊的目的。其原理是使用暴力計算工具,將遊戲公司加密的程序進行解算,從而達到修改遊戲數值作弊的目的。本地外掛對FPS類遊戲(First-Person Shooting,即第一人稱射擊類遊戲)「殺傷力」最大。
  • 外掛兩枚飛彈氣場直逼直20:這才是我們曾經想要的海軍直升機
    圖片解讀:NH-90外掛兩枚Marte-ER反艦飛彈,射程超過100公裡,反艦火力得到極大提升,氣場直逼直20,聯想到這是我們曾經想要的海軍直升機,顏值還是可圈可點的圖片解讀:NH-90外掛兩枚Marte-ER反艦飛彈,圖中還可以看到座艙下方的搜索雷達,機頭前方還有光電傳感器,後艙採用坡道模式,能進出一些大型設備
  • 全球最會「掃雷」的一半在中國!想知道紙牌、空當接龍有沒有世界盃!
    不過,你有想過把掃雷當成一項「特長」嗎?真的有這麼一群人,他們不僅痴迷掃雷,還搞起了掃雷大賽、掃雷世界排名榜……更叫人想不到是,世界女子掃雷排行榜的前十位已經被中國姑娘們全部佔領!今天,就讓我們走進科學,哦不,探索發現,帶你領略別樣的掃雷世界。掃雷是什麼,還用我說嗎?
  • 【媒體聚焦】探秘高鐵「掃雷車」和「掃雷人」
    在西成高鐵上有這樣的一位掃雷師,為了保證第二天的鐵路行駛的安全,他們要通宵達旦的工作。       同期聲:凌晨2時45分,西南最大動車基地,成都動車段內寒氣逼人,燈火通明,90後隨車機械師孫欣來到派班室,準備出乘5時8分,成都東開往西安北的動車。
  • 我的掃雷戰友,剛剛被炸沒了雙眼雙手
    同時,它也可在縱深戰鬥及防禦戰鬥中掃除「敵」方機動布設的雷群,還可用於戰後掃雷。類似這樣的掃雷裝備還有很多,我們就不一一列舉了……先進掃雷裝備如此多,中越邊境為何依然要用人工排雷?中越邊境掃雷作業,是在亞熱帶山嶽叢林地帶進行。
  • 越是中國人,越喜歡開外掛?
    官方說大部分外掛來自中國一個很有意思的現象是,韓國網遊只要引進國內後,總會淪為外掛的天堂。韓國的遊戲製作人普遍是策劃、美術出身,團隊層面對於程序的重視程度不足,導致韓國網遊在安全性上的先天孱弱。前兩年韓國國會還通過了一條修正案:製造和傳播外掛直接判定違法,將面臨5年監禁和5千萬韓元的罰款。