描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧
解題連結: http://ctf5.shiyanbar.com/crack/3/
解題工具:IDA_pro 連結:https://www.52pojie.cn/thread-675251-1-1.html
注意:IDA普通版db不直接顯示文字内容,pro版效果如下:
步驟:
一、進入解題連結,下載下傳crackme1.zip,解壓得到crackme1.exe檔案
二、安裝好IDA_Pro工具(本測試使用IDA_pro32位)
注意:安裝的目錄路徑最好要全英文,我測試的時候中文會出問題
三、進入IDA_pro,點選file->open下載下傳的crackme1.exe檔案
附:可用bash檢視檔案具體類型,本實驗預設條件即可
四、根據解壓後得到的crackme1.exe,任意輸入後得以下提示
五、進入IDA_pro後,得到下列界面,可根據上面注冊時的提示資訊搜尋到密鑰相關代碼區域。
六、搜尋
七、輕按兩下搜尋結果到相關代碼區域
八、右鍵點選graph view,便于觀察邏輯關系圖
九、根據邏輯關系圖可初步判斷sub_4011D0是密鑰的判斷函數,按F5檢視詳細代碼。
輕按兩下sub_4011D0進入程式僞代碼,可觀察到下列代碼片段。
十、第一個if可初步判斷為使用者名擷取,第2個if則可判定為密鑰驗證過程。
将代碼改寫為python,或者c語言代碼(由第一個if可猜測作業為使用者名不少于5個字元,測試的username可修改,lstrcatA函數百度可得:字元串連接配接)
username = "abcdee"
counter = 0;
password = "[email protected]"
for i in username:
password = password + chr((counter + counter * ord(i) * ord(i)) % 0x42 + 33)
counter = counter + 1
print(password)
'''
v1 = 0;
if ( strlen(String) != 0 )
{
do
{
*(&String2 + v1) = (v1 + v1 * String[v1] * String[v1]) % 0x42 + 33;
++v1;
}
while ( v1 < strlen(String) );
}
'''
十一、将生成的[email protected]!D#H5[放入注冊機中測試。