0x0 首先我們來安裝HT,命令如下
創(chuàng)新互聯(lián)建站是專業(yè)的西夏網(wǎng)站建設(shè)公司,西夏接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行西夏網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!$ brew install ht
0x1 編寫我們的第一個macOS程序:crackme 在Project中創(chuàng)建一個crackme文件夾,用來存放編寫的源代碼和編譯結(jié)果。
$ cd Project
$ mkdir crackme
$ cd crackme
使用系統(tǒng)自帶的vim創(chuàng)建crackme的源代碼文件cm01.c
$ vim cm01.c
這時可以看到vim的編輯界面
在鍵盤上按a鍵進(jìn)入編輯模式,輸入以下代碼
#include
int main() {
int secret = 0;
printf("Please enter the secret num:");
scanf("%d", &secret);
if (secret != 123) {
printf("Incorrect secret num.\n");
return 0;
}
printf("Hello world!\n");
return 0;
}
完成后按esc鍵退出編輯模式,輸入:wq保存并退出vim
然后用clang編譯
$ clang cm01.c
如果沒出錯就會生成cm01可執(zhí)行文件,如果出錯,你就要檢查下代碼是否輸入錯誤
測試下crackme是否運(yùn)行正常
接下來開始破解,讓它在我們輸入任意值的時候都會輸出"Hello world!"
在終端啟動HT,如圖
按fn+f3選擇文件,tab鍵移動光標(biāo)到cm01并回車
會出現(xiàn)16進(jìn)制界面,我們按fn+f6切換到反匯編界面,選擇Mach-0/image
開始尋找判斷數(shù)字是否正確的關(guān)鍵跳,并對其進(jìn)行修改,一個簡單的方法是我們輸入一個錯誤的數(shù)字會出現(xiàn)Incorrect secret num
我們利用這句作為突破口,按fn+f7開始搜索 Incorrect 這里我出現(xiàn)一個坑就是Incorrect的大小寫問題,會提示找不到,防止掉坑,i 改為大寫的I
mode我們選擇“display:regex”輸入Incorrect回車,光標(biāo)會定位到邏輯點(diǎn)??梢钥吹?Incorrect secret num"這個字符串,那么它上面的代碼就是判斷的跳轉(zhuǎn)。代碼如下
100000ef0 ! jz loc_100000f13
開始修改關(guān)鍵跳,按ctrl+a修改,jz改為jnz ,回車后HT會列出所寫匯編代碼的機(jī)器碼,HT會幫我們選擇最合適的,直接回車即可??梢钥吹阶兗t的“85”
按fn+f2保存,開始測試crackme是否正常運(yùn)行。輸入一個錯誤的數(shù)字會輸出“Hello,world” 證明我們已經(jīng)破解成功了,如下圖
但是這樣的破解并不完美,想要在任何情況下都輸出Hello World,將je改為jmp即可。再測試一下
0x3 我們輸入什么都會提示成功,到這里我們第一個crackme就破解成功了。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。