摘要:所以按鈕消失的方法是跟一模一樣的,只是他消失后,不再顯示其他按鈕而已,至此注冊成功,的標(biāo)題也溫順的變成了了。
作者:逆向驛站
微信公眾號:逆向驛站
知乎:逆向驛站
crackme007,是006的升級版,程序開發(fā)者給出的難度是3星,可能是迷惑有點多?個人覺得條線還是比較清晰,難度也不大,依然適合新手準(zhǔn)備
【環(huán)境和工具】
win7/xp虛擬機(jī)環(huán)境
CrackMe007(aLoNg3x.2.exe)
ollydbg
Dededark
【學(xué)習(xí)層次】
逆向分析程序驗證流程邏輯
解密算法,寫注冊機(jī)
積累Delphi程序逆向特點經(jīng)驗
實戰(zhàn)圖文最終效果展示
程序驗證流程邏輯圖
動態(tài)分析
1.程序觀察
crackme006的升級版,最終目標(biāo)是一致的,均是要求給下方的藍(lán)色logo無遮蓋的顯示出來,也就是說要給這個區(qū)域的控件全部隱藏,程序界面如下圖
同時可見開發(fā)crackme的和學(xué)習(xí)crackme的目標(biāo)和標(biāo)準(zhǔn)是一致的,path的方式是不被認(rèn)可的,即不可爆破,crackme若是個美貌女子,則應(yīng)征服其心,切不可霸王硬上弓。
2.控件ID,事件函數(shù)信息
依然老規(guī)矩,既然是delphi的程序,我們就先用dededark給控件信息和事件函數(shù)信息搜集出來
3.控件ID常量搜索法,打開入手點
程序開始只有一個Register按鈕,對應(yīng)上圖,其控件ID是2CC,那么我們依然就從2CC常量出發(fā)
查找→所有常量→2CC(Register按鈕控件ID),結(jié)果如下
跟入第一個,根據(jù)之前的對dephi程序逆向的經(jīng)驗,應(yīng)該可以一眼看出,這里的反匯編代碼,功能是:dl的值0是隱藏,1是顯示,如下圖
可以看出,若是程序如期執(zhí)行到這里,則隱藏Register按鈕,并顯示Again按鈕,那么我們在這個代碼的函數(shù)塊入口處下斷點,來動態(tài)分析這個函數(shù)塊的邏輯流程,如下圖
可以看到,這個函數(shù)實際就是點擊Register按鈕的事件函數(shù),首先會對code進(jìn)行驗證,若是純數(shù)字則跳到下方,否則彈框報錯,并給[0x445830]賦值,看似多此一舉,實則是必須過程,原因后面會提到,如果輸入的是純數(shù)字,則執(zhí)行以下流程,如圖
在這里我們看到了算法函數(shù),算法函數(shù)需要三個參數(shù)(用戶名、code、[0x445830]的值),算法函數(shù)若是合規(guī),則隱藏Register按鈕,顯示Again按鈕。那么我們就F7跟入算法函數(shù)去研究算法
4.分析算法
在分析算法前,需要對[0x445830]這個全局變量值做一個說明
初始值是0
經(jīng)過動態(tài)分析(請自行動手)得出,對它賦值的觸發(fā)條件是,需要code輸入至少6個英文字母,然后點擊Regsiter按鈕
輸入AAAAAA,它會被賦值固定值0x1686
既然是這種輸入輸出都可控的全局變量值,我們就不去糾結(jié)其算法什么的了,當(dāng)然如果你想去研究分析,那也是值得提倡得
然而為什么非得多此一舉得對他賦值呢?因為后面得核心算法中,它的值將作為一個乘數(shù),若是0的話,那么算法的最終結(jié)果無論如何都會是0,0是無法完成算法合規(guī)的,簡單的說,若是這個值是0,則不可能完成注冊,所以要對他進(jìn)行這種看似多此一舉的隱藏賦值。是不是類似開啟隱藏奶牛關(guān),呵呵!
后面得所有分析中我們都按照,code輸入AAAAAA后[0x445830]被賦值0x1686為準(zhǔn)
我們來分析算法,如圖
可見核心算法是
首先要求用戶名要大于4個字符,為了防止溢出,我寫的注冊機(jī)就硬性規(guī)定為5個字符
根據(jù)輸入的用戶名,經(jīng)過兩次嵌套循環(huán),和[0x445830]的值,即我們控制其值為0x1686,共同計算出一個值,暫時記為nTemp
nTemp = nTemp % 0xA2C2A
第二次輸入的注冊碼要求是純數(shù)字,純數(shù)字作為10進(jìn)制的數(shù)字型值,記為nCode
則公式是nCode/0x59+nCode%0x50+1 = nTemp
這種不是摘要hash的,是直接可以逆推計算出注冊碼,根據(jù)以上分析,寫出逆推注冊碼的源碼,如下
//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 { //根據(jù)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.把注冊機(jī)的五字符長度用戶名輸入nome處 "); sprintf(szRes+strlen(szRes),"2.請在code處輸入AAAAAA,然后點擊Register按鈕,彈框確認(rèn)關(guān)閉即可 "); sprintf(szRes+strlen(szRes),"3.請在code處輸入%d,然后點擊Register按鈕 ", nCode); sprintf(szRes+strlen(szRes),"4.Register按鈕消失,again按鈕出現(xiàn) "); sprintf(szRes+strlen(szRes),"5.請再次在code處輸入AAAAAA,然后點擊again按鈕,彈框確認(rèn)關(guān)閉即可 "); sprintf(szRes+strlen(szRes),"6.請再次在code處輸入%d,然后點擊again按鈕,按鈕消失,注冊成功 ", nCode); SetDlgItemText(IDC_EDIT2,szRes);
crackme注冊機(jī)的完整源碼均在網(wǎng)盤
5.分析Again按鈕事件函數(shù)
我們現(xiàn)在已經(jīng)成功的隱藏了Register按鈕,但是又出來了一個Again按鈕,有了如上的過程作為經(jīng)驗,我們"依葫蘆畫瓢",對Again按鈕進(jìn)行分析,結(jié)果發(fā)現(xiàn),其實驗證流程完全是重復(fù)了一遍Regsiter按鈕,Again按鈕點擊事件逆向代碼如下
可以看到,給[0x445830]賦值的隱藏算法和最后的合規(guī)核心算法,均自動顯示出來了中文標(biāo)簽,這就是習(xí)慣做標(biāo)簽的好處,之所以會顯示出來,那證明跟上方的Regsiter部分的兩個算法均調(diào)用的相同的算法函數(shù),參數(shù)相同,算法相同,那么結(jié)果一定相同了。
所以Again按鈕消失的方法是跟Register一模一樣的,只是他消失后,不再顯示其他按鈕而已,至此注冊成功,Crackme007的標(biāo)題也溫順的變成了Crackme by "your name"了。
是不是有如開頭所說的征服美女的快感?去網(wǎng)盤中下載,試試吧
文章中涉及軟件、課件、源碼等均在網(wǎng)盤,為避免網(wǎng)盤鏈接失效,公眾號中回復(fù):網(wǎng)盤
歡迎關(guān)注微信公眾號:逆向驛站
相關(guān)文章
● CrackMe-006精解
● CrackMe-005精解(下)
● CrackMe-005精解(上)
● CrackMe-004精解
● CrackMe-003精解
● CrackMe-002精解
● CrackMe-001精解
標(biāo)簽:逆向|破解|反匯編|olldbg|滲透測試|病毒分析|網(wǎng)絡(luò)安全|區(qū)塊鏈
本期標(biāo)簽:dededark|delphi反匯編|crackme|crackme7|crackme07
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/11456.html
摘要:作者逆向驛站微信公眾號逆向驛站知乎逆向驛站上篇說了具體方法,下篇來發(fā)逆向分析過程,看看老夫是如何得到上篇的具體方法的準(zhǔn)備環(huán)境和工具虛擬機(jī)環(huán)境專用脫殼器學(xué)習(xí)層次爆破,但是這個作者聲明了,爆破他是不認(rèn)可的解密流程,寫注冊機(jī)積累程序逆向特點經(jīng)驗詳 作者:逆向驛站微信公眾號:逆向驛站知乎:逆向驛站showImg(https://segmentfault.com/img/bVbnHJT?w=11...
摘要:作者逆向驛站微信公眾號逆向驛站知乎逆向驛站依然是的,而且沒殼子,條線比較清晰,算法也不難,非常適合新入門的來練習(xí)快過年了,系列年前就停更在吧,祝大家新年年后繼續(xù)準(zhǔn)備環(huán)境和工具虛擬機(jī)環(huán)境學(xué)習(xí)層次逆向分析程序驗證流程邏輯解密算法,寫注冊機(jī)積累程 作者:逆向驛站微信公眾號:逆向驛站知乎:逆向驛站showImg(https://segmentfault.com/img/bVbnUo0?w=11...
閱讀 1999·2021-11-22 14:44
閱讀 1741·2021-11-02 14:46
閱讀 3827·2021-10-13 09:40
閱讀 2674·2021-09-07 09:58
閱讀 1779·2021-09-03 10:28
閱讀 1716·2019-08-29 15:30
閱讀 1040·2019-08-29 15:28
閱讀 1535·2019-08-26 12:20