9久热久爱免费精品视频在线观看_97视频在线免费播放_女人被男人桶免费软件_狠狠操夜夜操天天操_欧美最猛性xxxxx乱大交

最資訊丨Crackme逆向分析365例-001

來源: 嗶哩嗶哩 2023-05-15 06:01:07

【Crackme逆向分析365例-001】


(資料圖)

表哥是神,誤落凡塵

說明:本篇練習(xí)是表哥逆向分析365系列的第1例,所使用的CrackMe本體來自于網(wǎng)站:https://crackmes.one/,您可在此網(wǎng)站通過作者名或本體名查詢下載,也可從本貼中提供的網(wǎng)盤地址下載,其CrackMe本體信息如下所示:

?? 本體名稱:[EASY] CrackMe

?? 本體作者:endofmarconia

?? 上傳日期:2023-05-03

?? 適用平臺:Windows

?? 難度【1-6】:1.2

?? 描述:本CrackMe專門為初學(xué)者制作,請破解用戶名和密碼以便訪問程序。

1、本次練習(xí)所需軟件及下載地址:

?? 十六進制編輯器:HxD64,版本:2.5.0.0,下載地址:https://www.123pan.com/s/egPeVv-vrLQ3.html

?? PE文件信息觀察器:ExeinfoPE,版本:0.0.7.7,下載地址:https://www.123pan.com/s/egPeVv-drLQ3.html

?? 動態(tài)調(diào)試器:x32dbg/x64dbg,版本:2023-04-30,下載地址:https://www.123pan.com/s/egPeVv-TrLQ3.html

?? CrackMe本體及附件,版本:2023-05-03,下載地址:https://www.123pan.com/s/egPeVv-S8LQ3.html

2、逆向分析之前的準(zhǔn)備工作:

2.1、將下載的CrackMe本體解壓到某個空白的逆向分析文件夾下(最好是全英文路徑),并確保能夠正常運行(云盤下載已經(jīng)附帶了4個缺失的運行庫,若在您的電腦上還是不能運行,請根據(jù)提示的庫名在:https://cn.dll-files.com網(wǎng)站查詢下載并保存到與CrackMe本體相同文件夾內(nèi))。

2.2、復(fù)制CrackMe本體文件[EASY] CrackMe.exe并重新命名為CM001.exe,保證原始CrackMe本體文件的備份,逆向分析時僅針對CM001.exe。

2.3、啟動ExeinfoPE.exe,加載CM001.exe,根據(jù)ExeinfoPE的分析數(shù)據(jù),手動列出文件信息如下:

?? 文件名稱:CM001.exe

?? 殼:無殼(不需要脫殼,可直接進行分析)

?? 位數(shù):64位程序(需要使用x64dbg調(diào)試器進行分析)

?? 編譯器:Microsoft Visual C++ 2022

?? 子系統(tǒng):控制臺程序

?? 映像基地址:0x140000000

?? 重定位段:有(需要修改文件屬性標(biāo)志字段,使其運行時不再重定位)

2.4、啟動HxD64.exe,加載CM001.exe,修改文件屬性標(biāo)志字段(從PE頭偏移22個字節(jié)),將其值從0x22修改為0x23并保存文件,如圖所示:

這樣的話,映像基地址將固定在0x140000000,方便本次練習(xí)場景重現(xiàn)。

2.5、運行CM001.exe文件,隨便輸入用戶名和密碼后,程序出錯了(錯誤信息為:Wrong username or password.),如下圖所示:

3、針對CM001.exe文件進行爆破

3.1、思路:由于出現(xiàn)了錯誤信息,我們有理由相信,程序?qū)斎氲臄?shù)據(jù)進行了某種計算,并且對計算結(jié)果進行了驗證判斷,以此決定顯示正確或錯誤信息。利用此思路,以當(dāng)前出錯信息加載指令為基點,通過向上或向下來查找到正確的條件轉(zhuǎn)移指令,然后修改這條指令,使其忽略驗證結(jié)果,直接顯示正確信息。

3.2、啟動x64dbg.exe,在菜單中打開【選項】窗口,在【事件】選項中僅選擇【入口斷點】(若已經(jīng)配置好了,可省略此步驟)。

3.3、根據(jù)經(jīng)驗,出錯信息很可能以字符串的形式存儲在常量數(shù)據(jù)段中,我們需要在代碼段中定位出加載出錯信息字符串的指令地址?,F(xiàn)在點擊【打開文件】按鈕,加載CM001.exe文件,此時RIP指向了程序入口點地址:0x1400114EC,點擊【搜索字符串】按鈕,在【引用】頁面底部的搜索框中輸入:wrong username or password進行過濾后,共找到1處指令地址:0x140018795。鼠標(biāo)左鍵雙擊地址,轉(zhuǎn)到【CPU】頁面的相關(guān)位置,以此條指令為基點(lea rdx,[140023908]),向上查找最近的條件轉(zhuǎn)移指令,其指令地址為:0x140018793(在本例中,其與基點緊挨著),如圖所示:

3.4、既然基點地址(0x140018795)是顯示錯誤信息的指令分支,那么可以推測,紅線盡頭所指的地址(0x1400187DC)就是顯示正確信息的指令分支了,我們只要修改地址(0x140018793)處的指令,使其忽略條件判斷,直接轉(zhuǎn)移到地址(0x1400187DC)處,就可以完成本次的爆破過程。

3.5、鼠標(biāo)左鍵單擊地址(0x140018793),按空格鍵彈出匯編窗口,將je修改為jmp,其余信息保持不變,然后按【確定】按鈕使修改生效,如圖所示:

點擊【補丁】按鈕或Ctrl+P打開補丁窗口,點擊【修補文件】按鈕將修改另存為:CM001-已爆破.exe文件,如圖所示:

3.6、退出所有程序,運行CM001-已爆破.exe文件,看看爆破效果如何,如圖所示:

效果很明顯,同樣的輸入數(shù)據(jù),不同的輸出結(jié)果,說明爆破成功。

4、針對CM001.exe文件進行追碼

4.1、思路:在上面的爆破過程中,我們已經(jīng)定位出了顯示成功信息的指令分支地址:0x1400187DC,所以我們可以從此地址進行反推,看看有哪些轉(zhuǎn)移指令與此相關(guān),從而推斷出關(guān)鍵call,然后對這些關(guān)鍵call進行詳細(xì)分析,理解其針對輸入數(shù)據(jù)的計算邏輯以便追碼。

4.2、啟動x64dbg.exe,點擊【打開文件】按鈕,加載CM001.exe文件,此時RIP指向了程序入口點地址:0x1400114EC,按Ctrl+G打開地址轉(zhuǎn)移窗口,輸入:0x1400187DC,如圖所示:

然后按【確定】按鈕,這時可通過左側(cè)紅線觀察到指令來源路線有2條,在源頭附件還發(fā)現(xiàn)了2個call指令(地址分別為:0x140018789和0x140018772),這2個指令就是關(guān)鍵call了,分別在這2個地址上按F2鍵下執(zhí)行斷點,如圖所示:

4.3、按F9鍵運行程序,然后在程序控制臺界面上輸入用戶名(SMKB)和密碼(123456789),回到調(diào)試器界面,這時已經(jīng)中斷在第1個關(guān)鍵call上,我們先看一下函數(shù)的參數(shù)是什么(64位程序規(guī)則,前4個參數(shù)通過rcx、rdx、r8、r9傳遞,多于4個的參數(shù)通過堆棧傳遞),鼠標(biāo)右鍵點擊寄存器(rcx和rdx),選擇【在內(nèi)存窗口中轉(zhuǎn)到】(內(nèi)存1和內(nèi)存2),通過觀察內(nèi)存窗口發(fā)現(xiàn),rcx指向我們輸入的用戶名SMKB,rdx指向字符串kanyefan,(注意:其實真實指向的是某個結(jié)構(gòu)指針,但也無所謂了,因為結(jié)構(gòu)中包含了我們需要關(guān)注的字符串,能理解就行),據(jù)此推測,kanyefan可能是超級用戶,不需要判斷密碼。

4.4、按F9鍵繼續(xù)運行,中斷在第2個關(guān)鍵call上,使用同樣的操作方法觀察內(nèi)存窗口發(fā)現(xiàn),rcx指向我們輸入的密碼123456789,而rdx這次指向了堆中的一個地址:0x4376E0,再次在內(nèi)存窗口中轉(zhuǎn)到這個堆地址,發(fā)現(xiàn)字符串kanyewestlover911,我們據(jù)此大膽推測,這是一個超級密碼。

4.5、到此為止,已經(jīng)不需要具體分析匯編代碼了,可以確定:如果輸入的用戶名是kanyefan,那么密碼可以隨便了,否則,輸入的密碼必須是kanyewestlover911,在這種情況下就不會出現(xiàn)錯誤信息了,我們試一試吧,如圖所示:

果然如此,看來作者是kanye west(坎耶-維斯特)的腦殘粉啊。

PS:本貼到此結(jié)束,若轉(zhuǎn)載請保留全部信息,期待我們在下一貼再見。

標(biāo)簽:

猜你喜歡