做者:逆向驛站
微信公衆號:逆向驛站
知乎:逆向驛站
算法
crackme007,是006的升級版,程序開發者給出的難度是3星,多是迷惑有點多?我的以爲條線仍是比較清晰,難度也不大,依然適合新手
【環境和工具】安全
【學習層次】微信
最終效果展現
程序驗證流程邏輯圖
動態分析
1.程序觀察
crackme006的升級版,最終目標是一致的,均是要求給下方的藍色logo無遮蓋的顯示出來,也就是說要給這個區域的控件所有隱藏,程序界面以下圖
網絡
同時可見開發crackme的和學習crackme的目標和標準是一致的,path的方式是不被承認的,即不可爆破,crackme如果個美貌女子,則應徵服其心,切不可霸王硬上弓。函數
2.控件ID,事件函數信息
依然老規矩,既然是delphi的程序,咱們就先用dededark給控件信息和事件函數信息蒐集出來
工具
3.控件ID常量搜索法,打開入手點
程序開始只有一個Register按鈕,對應上圖,其控件ID是2CC,那麼咱們依然就從2CC常量出發
查找→全部常量→2CC(Register按鈕控件ID),結果以下
跟入第一個,根據以前的對dephi程序逆向的經驗,應該能夠一眼看出,這裏的反彙編代碼,功能是:dl的值0是隱藏,1是顯示,以下圖
能夠看出,如果程序如期執行到這裏,則隱藏Register按鈕,並顯示Again按鈕,那麼咱們在這個代碼的函數塊入口處下斷點,來動態分析這個函數塊的邏輯流程,以下圖
能夠看到,這個函數實際就是點擊Register按鈕的事件函數,首先會對code進行驗證,如果純數字則跳到下方,不然彈框報錯,並給[0x445830]賦值,看似畫蛇添足,實則是必須過程,緣由後面會提到,若是輸入的是純數字,則執行如下流程,如圖
在這裏咱們看到了算法函數,算法函數須要三個參數(用戶名、code、[0x445830]的值),算法函數如果合規,則隱藏Register按鈕,顯示Again按鈕。那麼咱們就F7跟入算法函數去研究算法學習
4.分析算法
在分析算法前,須要對[0x445830]這個全局變量值作一個說明區塊鏈
咱們來分析算法,如圖
可見核心算法是測試
//code輸入AAAAAA給[0x445830]賦的值 int nKey = 0x1686; char szRes[1024] = {0}; char szName[32] = {0}; int nCode = 0; int nTemp = 0; GetDlgItemText(IDC_EDIT1,szName,31); if (strlen(szName)!=5) { MessageBox("請輸入5字符長度的字符串","逆向驛站提示您"); } else { //根據name字符串計算 for (int i =1;i<=5;i++) { for (int j =5;j>=1;j--) { nTemp = nTemp + (int)szName[i-1] * (int)szName[j-1] * nKey; } } } //取模 nTemp = nTemp%0xA2C2A ; //反推code nCode = (0x50 - ((nTemp -1)*0x59 % 0x50))+(nTemp-1) * 0x59 ; sprintf(szRes,"1.把註冊機的五字符長度用戶名輸入nome處\r\n\r\n"); sprintf(szRes+strlen(szRes),"2.請在code處輸入AAAAAA,而後點擊Register按鈕,彈框確認關閉便可\r\n\r\n"); sprintf(szRes+strlen(szRes),"3.請在code處輸入%d,而後點擊Register按鈕\r\n\r\n", nCode); sprintf(szRes+strlen(szRes),"4.Register按鈕消失,again按鈕出現\r\n\r\n"); sprintf(szRes+strlen(szRes),"5.請再次在code處輸入AAAAAA,而後點擊again按鈕,彈框確認關閉便可\r\n\r\n"); sprintf(szRes+strlen(szRes),"6.請再次在code處輸入%d,而後點擊again按鈕,按鈕消失,註冊成功\r\n\r\n", nCode); SetDlgItemText(IDC_EDIT2,szRes);
crackme註冊機的完整源碼均在網盤
5.分析Again按鈕事件函數
咱們如今已經成功的隱藏了Register按鈕,可是又出來了一個Again按鈕,有了如上的過程做爲經驗,咱們"依葫蘆畫瓢",對Again按鈕進行分析,結果發現,其實驗證流程徹底是重複了一遍Regsiter按鈕,Again按鈕點擊事件逆向代碼以下
spa
能夠看到,給[0x445830]賦值的隱藏算法和最後的合規核心算法,均自動顯示出來了中文標籤,這就是習慣作標籤的好處,之因此會顯示出來,那證實跟上方的Regsiter部分的兩個算法均調用的相同的算法函數,參數相同,算法相同,那麼結果必定相同了。
因此Again按鈕消失的方法是跟Register如出一轍的,只是他消失後,再也不顯示其餘按鈕而已,至此註冊成功,Crackme007的標題也溫順的變成了Crackme by "your name"了。
是否是有如開頭所說的征服美女的快感?去網盤中下載,試試吧
文章中涉及軟件、課件、源碼等均在網盤,爲避免網盤連接失效,公衆號中回覆:網盤
歡迎關注微信公衆號:逆向驛站
相關文章
標籤:逆向|破解|反彙編|olldbg|滲透測試|病毒分析|網絡安全|區塊鏈本期標籤:dededark|delphi反彙編|crackme|crackme7|crackme07