Reversing.Kr上的第一個題目---Easy_CrackMe調試
1.先打開程序看看:字符串
一個標準的輸入框和一個按鈕,試着輸入‘123456’而後點擊按鈕,看看有什麼反應......io
果真,它easily彈出一個錯誤框,顯示‘Incorrect Password’。看到此處我試着把它放進IDA。循環
2.IDA分析:引用
經過View->String我看到了彈窗顯示的字符串,直接雙擊跟到代碼窗口,程序
此處能夠看到‘Incorrect Password’與‘Congratulation!!’均被引用,Ctrl+x跟蹤上去。im
跟蹤到彈出錯誤消息框處,發現有4處可到達彈出錯誤消息框,此處跟蹤上去看太勞神,返回看當作功消息框的調用,總結
發現只有一處能調用彈出成功消息框。此時能夠大膽猜想一下,程序的關鍵邏輯是判斷輸入的Password是否知足條件,不知足則直接跳轉到彈出錯誤消息框,知足則順下繼續判斷...最後全部的條件都知足了則直接彈出成功消息框。word
3.嘗試OD動態調試:img
大體清楚程序邏輯後,將它放入OD動態調試。首先Ctrl+G轉到401135(IDA中可知)下斷點,而後F9運行,輸入‘123456’並按下按鈕,斷點起效。
跟蹤左側紅線直達調用處
看到jnz跳轉指令之上還有GetDlgItemTextA用於獲取咱們輸入的‘123456’。說明從GetDlgItemTextA以後就是對咱們的輸入內容進行對比(與正確的Password),通過分析獲得下圖......
4.總結:
由此,咱們獲得Password爲‘Ea5yR3versing’,程序首先判斷第二個字符是不是‘a’(0x61),其次在判斷二三字符是否爲‘5y’,接下來循環判斷後面的字符是否爲‘R3versing’,最後判斷第一個字符是否爲‘E’(0x45)。