做者:逆向驛站
微信公衆號:逆向驛站
知乎:逆向驛站算法
crackme006,依然是delphi的,並且沒殼子,條線比較清晰,算法也不難,很是適合新入門的來練習.
快過年了,Crackme系列年前就停更在006吧,祝你們新年666 ,年後繼續
【環境和工具】安全
【學習層次】微信
最終效果展現
程序驗證流程邏輯圖
動態分析
1.程序觀察函數
旁邊既然有個help,咱們固然要看了,四個彈框,有實際信息價值的是頭兩個,如圖
大致意思是,這個crackme的最終目標是隱藏ok和cancella按鈕來觀看完整的Ringzero logo。工具
2.控件ID,事件函數信息
依然老規矩,既然是delphi的程序,咱們就先用dededark給控件信息和事件函數信息蒐集出來學習
3.控件ID常量搜索法,打開入手點
程序開始是ok按鈕是禁用狀態,cancella按鈕是能夠點擊的,那麼咱們就從cancella入手,兩個方向,你能夠去找cancellaclick事件的函數入手,也能夠從cancella控件ID入手,我這裏選擇後者,由於最終目的是cancella要被隱藏起來,不管如何必定會用到控件ID測試
查找→全部常量→2D0(cancella按鈕控件ID),結果以下
一共有四個地方用到了這個控件ID,咱們分別跟入查看哪一個是咱們想找的隱藏這個控件的反彙編代碼,從上至下依次以下
找到了入手點,咱們開始上下閱讀函數塊,發現這正是cancellaclick事件函數spa
4.分析Cancellaclick中算法
在Cancellaclick函數入口處下斷點,而後用戶名輸入123456,註冊碼輸入654321,而後開始動態調試分析,F8步過度析以下圖
F7跟如算法call仔細分析,以下圖
這種不是摘要hash的,是直接能夠逆推計算出註冊碼,根據以上算法的反彙編分析,寫出逆推註冊碼的源碼,以下調試
例如咱們輸入的用戶名是123456,逆推註冊碼計算以下事件
算出了註冊碼,咱們來測試一下,以下動圖
Cancella按鈕消失
5.分析OK按鈕中算法
有了如上的過程做爲經驗,咱們"依葫蘆畫瓢",來進行ok按鈕中的算法分析,依然是okClick事件入口下斷,F8動態分析,結果以下
F7跟如算法call仔細分析,以下圖
分析後發現,這個算法是根據已經算出的註冊碼,再次要求用戶名合規,算法並不難,並且很敏感的看到0x41,0x41對應的asc字符是大寫字母A,而0x41加上的數字的取值範圍是0-0x19,即十進制0-25,那一看就知道,就是26個大寫字母範圍內了,這時候你能夠變態的暴力枚舉也行,固然這個也是能夠逆推出來,咱們仍是選擇逆推吧。源碼以下
咱們剛輸入的註冊碼是191143,逆推出用戶名應該是"BXDEUG",驗證以下動圖
OK按鈕消失,至此所有搞定, 是否是感受不難,去網盤中下載,試試吧
補充知識點
再CancellaClick事件算法中,有個階乘計算,函數內部反彙編代碼以下,能夠做爲知識點積累,下次看到這個第一時間就能反應過來,提升效率,逆向的老手每每是這種知識碎片不少,並且腦部搜索算法很精準
最後,喜歡這裏的請推薦給你身邊的朋友吧(滲透測試、逆向破解、病毒分析、信息安全等)
文章中涉及軟件、課件、源碼等均在網盤,爲避免網盤連接失效,公衆號中回覆:網盤
歡迎關注微信公衆號:逆向驛站
相關文章
本期標籤:dededark|delphi反彙編|crackme|crackme6|crackme06