Jarvis OJ - 軟件密碼破解-1 -Writeup
轉載請標明出處http://www.cnblogs.com/WangAoBo/p/7243801.html
記錄這道題主要是想記錄一下動態調試的過程
題目:
分析:
剛開始拿到這道題目還是想用IDA靜態分析,但無奈函數太多找不到關鍵函數,看別人Writeup也只是說關鍵函數為sub_401BB0但不知道怎么找到的,歡迎知道的表哥留言告知。
於是嘗試拿OD動態調試,用OD打開,中文搜索引擎 -> 搜索UNICODE,可以在搜索到的字符串中找到你贏了
雙擊定位到對應匯編
向上翻,不遠處就能看到關鍵判斷和跳轉
因此推測再向上邊幾行為關鍵代碼,下斷點動態調試逐句分析可得:
整個邏輯即為:
將輸入與CTF100.005777F8亦或,再把亦或后的結果與給定的值進行比較
在mov ecx, CTF100.005777FB上右鍵 -> 數據窗口中跟隨 -> 立即數即可看到CTF100.005777F8的值
因此可得到如下解題腳本:
1 l1 = [0x28, 0x57, 0x64, 0x6B, 0x93, 0x8F, 0x65, 0x51, 0xE3, 0x53, 0xE4, 0x4E, 0x1A, 0xFF] 2 l2 = [0x1B, 0x1C, 0x17, 0x46, 0xF4, 0xFD, 0x20, 0x30, 0xB7, 0x0C, 0x8E, 0x7E, 0x78, 0xDE] 3 4 ans = '' 5 for i, j in zip(l1, l2): 6 ans += chr(i ^ j) 7 8 print ans
運行得到flag
於是flag即為3Ks-grEaT_j0b!