天天看點

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧

解題連結: http://ctf5.shiyanbar.com/crack/3/ 

解題工具:IDA_pro 連結:https://www.52pojie.cn/thread-675251-1-1.html

注意:IDA普通版db不直接顯示文字内容,pro版效果如下:

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

步驟:

一、進入解題連結,下載下傳crackme1.zip,解壓得到crackme1.exe檔案

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

二、安裝好IDA_Pro工具(本測試使用IDA_pro32位)

注意:安裝的目錄路徑最好要全英文,我測試的時候中文會出問題

三、進入IDA_pro,點選file->open下載下傳的crackme1.exe檔案

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

附:可用bash檢視檔案具體類型,本實驗預設條件即可

四、根據解壓後得到的crackme1.exe,任意輸入後得以下提示

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 
ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

五、進入IDA_pro後,得到下列界面,可根據上面注冊時的提示資訊搜尋到密鑰相關代碼區域。

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

六、搜尋

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 
ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

七、輕按兩下搜尋結果到相關代碼區域

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 
ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

八、右鍵點選graph view,便于觀察邏輯關系圖

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

九、根據邏輯關系圖可初步判斷sub_4011D0是密鑰的判斷函數,按F5檢視詳細代碼。

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

輕按兩下sub_4011D0進入程式僞代碼,可觀察到下列代碼片段。

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/ 

十、第一個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[放入注冊機中測試。

ctf逆向工程:該題不簡單 [題目源自實驗吧]描述:無語了,想給你們制造點懸念都沒有了,哎!直接去做題吧解題連結: http://ctf5.shiyanbar.com/crack/3/