看雪WiFi萬能鑰匙CTF-第一題 WannaLOL

  簡單刷完韓國人的《逆向工程核心原理》以後,以爲本身須要投入到Crack-Me CTF中的淬鍊當中,因此準備把看雪2017年中CFT的題目拿來鍛鍊一下,話很少說,先看看第一題WananLOL的面目吧。算法

    

    PS:注意要點,它的標題以及消息框中的文字,還有Register按鈕的短暫禁用。函數

  1.     先放入IDA,概覽一下                            其中有兩處顯示窗口的回調函數(WindowProc和DialogProc),在sub_401000(WindowProc)處沒有Register消息的處理,                            而在 DialogFunc處有EnableWindow的痕跡,明顯可以看出來,EnableWindow的先後兩次調用,分別是Register按鈕的禁用和啓用,那麼有關key的compare函數也就在他們之間。                             點進loc_4011F4處,果真看見MessageBox的調用,在loc_4011F4處的靠前部分還有GetDlgItemText,用於得到輸入的文本,天然下面就是compare的過程。                            
  2. compare處找到了,咱們來看看它的相關算法。首先祭出F5大法,惋惜出師不利                             程序經過一些jmp方式跳過一些特殊字節,起到了模糊靜態反編譯的效果。經過將0x401262和0x4012AA處的指令nop掉,使得反編譯成功。按下P(Create Function)後再按F5反編譯。                                  Python模擬驗證函數爲
  3. 終極簡化就是(key[2]-0.2)*key[3]=24.0,求解得key[2]=key[3]=5,即key=「1555」                                                                 (若有錯誤,敬請指出~)
相關文章
相關標籤/搜索