您好,登錄后才能下訂單哦!
0x0 首先我們來安裝HT,命令如下
$ brew install ht
0x1 編寫我們的第一個macOS程序:crackme 在Project中創建一個crackme文件夾,用來存放編寫的源代碼和編譯結果。
$ cd Project
$ mkdir crackme
$ cd crackme
使用系統自帶的vim創建crackme的源代碼文件cm01.c
$ vim cm01.c
這時可以看到vim的編輯界面
在鍵盤上按a鍵進入編輯模式,輸入以下代碼
#include <stdio.h>
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可執行文件,如果出錯,你就要檢查下代碼是否輸入錯誤
測試下crackme是否運行正常
接下來開始破解,讓它在我們輸入任意值的時候都會輸出"Hello world!"
在終端啟動HT,如圖
按fn+f3選擇文件,tab鍵移動光標到cm01并回車
會出現16進制界面,我們按fn+f6切換到反匯編界面,選擇Mach-0/image
開始尋找判斷數字是否正確的關鍵跳,并對其進行修改,一個簡單的方法是我們輸入一個錯誤的數字會出現Incorrect secret num
我們利用這句作為突破口,按fn+f7開始搜索 Incorrect 這里我出現一個坑就是Incorrect的大小寫問題,會提示找不到,防止掉坑,i 改為大寫的I
mode我們選擇“display:regex”輸入Incorrect回車,光標會定位到邏輯點。可以看到"Incorrect secret num"這個字符串,那么它上面的代碼就是判斷的跳轉。代碼如下
100000ef0 ! jz loc_100000f13
開始修改關鍵跳,按ctrl+a修改,jz改為jnz ,回車后HT會列出所寫匯編代碼的機器碼,HT會幫我們選擇最合適的,直接回車即可。可以看到變紅的“85”
按fn+f2保存,開始測試crackme是否正常運行。輸入一個錯誤的數字會輸出“Hello,world” 證明我們已經破解成功了,如下圖
但是這樣的破解并不完美,想要在任何情況下都輸出Hello World,將je改為jmp即可。再測試一下
0x3 我們輸入什么都會提示成功,到這里我們第一個crackme就破解成功了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。