逆向 EasyBase64
首先,我們在cmd中打開運用,如下圖
然后我們可以看到然后我們可以看到輸出了一個wrong,ok,那么下一步就變成了找到wrong字符串和user這些字符串的位置?,那么我們打開ida,打開程序,看到下面的界面
?點擊Strings或者你直接shift f12也不是問題,然后得到下面的界面
那么現在,我們點擊wrong username,我們來到了下面這個界面
?然后點擊黃色部分,跳轉到函數界面(右鍵有個new window,點擊那個)
?如下圖
?ok,那我們第一步先解決wrong username的問題往上回溯,可以看到避開wrong username的路徑是黃色區域
?那么我們基本就可以斷定上面的比較函數應該就是對比user是否正確的了
通過對比,我基本判斷出了左邊的函數應該是輸出的函數,右邊的函數應該是輸入的函數?,那么到目前為止,我們就確定了Str中存的有可能是我們的username,Str1中存儲的可能是我們的password
那么這個時候,我們再看這一段,基本就可以確認,Str2中存儲的應該是用戶名,現在我們輸入試一下?
?現在,我們的猜測是對的那么繼續往下,我們找到了wrong的位置以及它所屬的函數,如下
?ok,那么我們現在的分析目標就變成了下面這個塊了ok那么讓我們回憶一下,我們前面提到過Str1中存儲的是我們輸入進去的password,,而很巧合的是這里也出現了一比較函數,那么我們可以大膽猜測下,byte_14001E270應該就是我們要找的password,既然如此,我們給它重名下
然后我們點擊Str1上方的password,我們會驚奇的發現,這里啥都沒有.,這合理嗎?這不合理.......
難道答案是0D0h?我試過,不對,所以我們還要再往上找,我們會發現,password在和Str1比較前,它的下面還有個函數????我眉頭一皺,覺得事情沒有那么簡單.
那么我們現在重頭梳理一遍,loc_1400120D0這個函數,我們通過一些思考,可以反應過來,這里Str實際上就是個定值,那么我們跳進去看看,嗯.........發現了很長一段........
?不過我們不用理會,這里我們就要提一下了,前面lea修飾符把password的地址給了rcx,而這里又用到了rcx,所以基本可以確定,這里可能就是把password現場寫入的函數這就解釋了為什么我們當時看password的時候,里面啥都沒有
既然如此,我們就不用和它客氣了,直接動態調試(ps:其實我本來看到password全空我就直接動調了,純粹是因為不理解,只是在這里我想思考的全面點,所以補充了合適的邏輯鏈)
好了,現在會重新上面的操作不過這次我們需要回到下面這個界面來設置斷點,點擊
左邊的藍色小圈圈,得到下面這個界面,然后動調?
此時,我們得到下圖
可以直接可以直接盲猜它們應該用的ascii碼,所以得到password:c2lwYw==,然后我們輸入驗證一下
?
成功,
就此結束 (ps:如果一直打不開下斷點的那個界面而一直顯示函數界面,把函數界面全部關了試試)
總結
以上是生活随笔為你收集整理的逆向 EasyBase64的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有关于java的final修饰符
- 下一篇: java垃圾回收机制(简述)