WinXP下 掃雷程式逆向分析 掃雷輔助 一

2021-08-11 02:35:16 字數 2524 閱讀 3945

逐步走向逆向的坑 , 慢慢的鍛鍊 也算是一種興趣愛好吧

突然起興 , (及時行樂) 就想著嘗試分析一下掃雷

這次就用 winxp自帶的掃雷試試

使用peid 直接拖進去

可以看到 是使用vc 編寫 而且 是 debug 版本

(m$ 還是比較厚道)

直接拖進 od

api 程式設計的逆向優勢在於 呼叫的 api 函式 是直接可以查詢到符號的

除非自己編寫實現同樣功能的**

所以其實 api 程式比 dos程式好分析多了

hint:

慢慢發現 著手分析乙個程式的時候思路很重要 , 不然看著冰涼的彙編 也無法下手

這次主要的目的是 實現乙個近似於一件掃雷的功能 , 那麼雷的分布 固然很重要

每次的雷的位置 又是隨機的 所以這樣 假想 使用了 rand 這個 api, 這個api 就成了要點

二話不說 先下斷

bp rand

//或者使用外掛程式進行下斷

這裡 od 已經自動的幫我們下了斷點

一路跑 , 就執行到了這裡

位元組操作:16位被除數在ax,8位除數為源運算元,結果的8位商在al中,8位餘數在ah中。表示為

(al)

(ah)

字操作:32位被除數放在dx,ax中。其中dx為高位字,16位除數為源運算元,結果的16位端在ax中,16位餘數在dx中。表示為

(ax)

(dx)

雙字操作:64位被除數在edx,eax中,其中edx為高位雙字,32位除數為源運算元,結果的32位商在eax中,32位餘數在edx中,表示為

(eax)

(edx)

idiv 之於 div 是帶符號的除法, 其他相同

這樣一看 這個意圖 就很明顯了

eax = (edx,eax) % 9 

這裡就是得到 0~8 的隨機數!

隨後 賦值給eax 作為返回值, ret 返回.

這裡把 長 寬(9*9)壓棧儲存

之後 esi+1 (eax 得到的是0~8) , 為了描述行(列)數 , 這裡把它加一

然後下面又是一次 call winmine.01003940 (就是上面的隨機函式 , 位址眼熟)

這裡不贅述 , 就是即係生成乙個隨機的 行(列)值(0~8) , 之後加一

下面我門回到 程式領空 這裡可以看到esi 和 ecx分別儲存著我們的

shl 邏輯左移指令

這裡比較重要, 就相當於把 ecx的值 乘以 0x20 (32d)

這句 ecx + esi + 0x1005340就是比較重要了, 這個 0x1005340 就是雷區的基位址

ecx 已經 左移5位 esi 沒有 所以 ,他們加起來就是

ecx * 0x20 + esi + 0x1005340

然後這裡 與 0x80 進行 test (與)

1000 0000 如果首位不是 0 就 jnz 了

這裡再把 eax左移5位

eax * 0x20 + esi + 0x1005340

注意 : 剛剛的 ecx 是由 eax inc 之後得到的 所以 這裡 有 ecx - eax == 0x20

lea (load effect address)

其實這點沒懂 為啥編譯出來乙個 lea還多請賜教

直接一樣 ds:[eax+esi+0*1005340]就好啊

or 就把資料的 最高位 置 1

(這裡就是置雷!!!)

這裡有 dec

* [0x01005330] == 9 // 每過乙個大迴圈就減一

* [0x01005338] == 9

當 其減到0 之後 說明初始化結束!(藏雷完畢!)

GTK下的掃雷程式

include struct block static struct block map 整個地雷區圖 static gint width 10 雷區的寬度 static gint height 10 雷區的高度 static gint mines 10 總共的地雷數量 static gtkwidg...

arm32下物件陣列的逆向分析

0x0 概述 最近學習arm32的逆向分析,寫了一些 對照著彙編看。下邊分析了物件陣列的彙編實現。0x1 c語言 c語言 如下 include class cnumber cnumber int m nnumber float m fnumber int main int argc,char arg...

關於編譯原理 遞迴下將分析程式

編譯原理實驗要求構造乙個地跪下將分析器,目標是能夠對表示式進行自上而下語法分析,主要是識別i i i,我編的程式感覺是能實現分析,但不能判斷是否符合語法 識別語法為 e t e t t f t f f i e 程式的源 為 include include using namespace std bo...