一個簡單的程序
程序功能是決定用戶輸入,如果是“burning”,則輸出“success”,否則輸出“fail”。
程序代碼如下:#include<;#include<;#include<;int main(){ char buff[1024]; char *password = "burning"; scanf("%s",buff); if (strncmp(password,buff,strlen(password)) == 0){ printf("success\n"); } else{ printf("fail\n"); } return 0;}
可執(zhí)行文件生成過程
預(yù)處理過程
主要處理源文件中以“#”開頭的預(yù)編譯指令,經(jīng)過預(yù)編譯處理后,得到的是預(yù)處理文件(如,) ,它還是一個可讀的文本文件 。
gcc –E –o
編譯
將預(yù)處理后得到的預(yù)處理文件(如 )進(jìn)行詞法分析、語法分析、語義分析、優(yōu)化后,生成匯編代碼文件。經(jīng)過編譯后,得到的匯編代碼文件(如 )還是可讀的文本文件,CPU無法理解和執(zhí)行它。
gcc -S -o
匯編過程
匯編程序(匯編器)用來將匯編語言源程序轉(zhuǎn)換為機(jī)器指令序列(機(jī)器語言程序)。匯編結(jié)果是一個可重定位目標(biāo)文件(如 ),其中包含的是不可讀的二進(jìn)制代碼,必須用相應(yīng)的工具軟件來查看其內(nèi)容。
gcc –c –o
預(yù)處理、編譯和匯編三個過程針對一個模塊(一個.c文件)進(jìn)行處理,得到對應(yīng)的一個可重定位目標(biāo)文件(一個.o文件)。
鏈接過程
將多個可重定位目標(biāo)文件合并以生成可執(zhí)行目標(biāo)文件。
一步到位
直接將.c文件轉(zhuǎn)化為可執(zhí)行目標(biāo)程序(ELF)。
gcc -o test
破解test程序
運(yùn)行程序
程序破解
如果輸入任何內(nèi)容,都顯示success,則說明test程序破解成功。
Radare2
Radare2在逆向方面是可以比肩IDA Pro的,從學(xué)習(xí)的角度來說,更建議使用Radare2。因?yàn)镮DA的F5功能具有反匯編的功能可以直接把匯編代碼翻譯成C語言,這樣反倒不會關(guān)注匯編語言了,同時在Linux下,IDA破解版也不太好用。
在這里對Radare2進(jìn)行簡單的介紹。
查看程序信息
使用如下 rabin2-I test命令查看test程序信息。
通過 rabin2-z test 查看來自數(shù)據(jù)段的字符串。
破解之旅
- 打開Radare2。 r2-w test
- 分析信息。 aa
- 查看所有的flag。Radare2會將所有有用的信息和特定的名字綁定在一起,比如區(qū)段、函數(shù)、符號、字符串,這些都被稱作 'flags', flags 被整合進(jìn) ,一個 flag 是所有類似特征的集合。 fs
- 查看字符串引用 1. fs strings;f 輸出結(jié)果是:0x000008ef 8 2. axt@@ 'axt' 命令用來在 data/code段里找尋某個地址相關(guān)的引用
- 地址跳轉(zhuǎn) s0x81c
- 查看匯編代碼 pdf
- 進(jìn)入可視化頁面,查看流程圖。 v
- 通過流程圖,很容易看出存在條件跳轉(zhuǎn),如果能夠讓所有的條件都走success流程,那么程序就算破解成功了。
- 修改 jne0x82a 為 jne0x81c,則無論怎樣,都會走success流程而不會走fail的流程。
- 跳轉(zhuǎn)到 jne0x82a。 s0x0000081a
- 修改指令,所有流程都走0x81c。 wx7500
- 查看修改內(nèi)容。 pd3
- 退出。 q
驗(yàn)證
運(yùn)行test程序,無論輸入什么內(nèi)容,都是會輸出success的!?。?!
Rasm2
rasm2 is an inline assembler/disassembler。在上面修改代碼的時候,是通過 wx7500來讓所有的流程都走success流程的,這個機(jī)器碼7500是怎么來的?通過如下的命令就可以獲得,其中的0x02是0x81c和0x82a的偏移。
rasm2 -a x86 -b 32 "jne 0x02"
web頁面
Radare2自帶了內(nèi)嵌的Web服務(wù)器,服務(wù)器提供了純html/js接口可發(fā)送ajax請求??梢允褂孟旅娴拿钸M(jìn)行啟動:
r2 -c=H test
界面效果如下:
公眾號
更多內(nèi)容,歡迎關(guān)注我的公眾號:無情劍客。
1.《怎么看自己破沒破解版?我來告訴你答案軟件破解入門》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《怎么看自己破沒破解版?我來告訴你答案軟件破解入門》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實(shí),對其原創(chuàng)性、真實(shí)性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/gl/3206129.html