成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

CrackMe007 | 難度適當(dāng)提高 |160個(gè)CrackMe深度解析(圖文+視頻+注冊(cè)機(jī)源碼)

jone5679 / 1423人閱讀

摘要:所以按鈕消失的方法是跟一模一樣的,只是他消失后,不再顯示其他按鈕而已,至此注冊(cè)成功,的標(biāo)題也溫順的變成了了。

作者:逆向驛站
微信公眾號(hào):逆向驛站
知乎:逆向驛站

crackme007,是006的升級(jí)版,程序開(kāi)發(fā)者給出的難度是3星,可能是迷惑有點(diǎn)多?個(gè)人覺(jué)得條線(xiàn)還是比較清晰,難度也不大,依然適合新手
準(zhǔn)備

【環(huán)境和工具】

win7/xp虛擬機(jī)環(huán)境

CrackMe007(aLoNg3x.2.exe)

ollydbg

Dededark

【學(xué)習(xí)層次】

逆向分析程序驗(yàn)證流程邏輯

解密算法,寫(xiě)注冊(cè)機(jī)

積累Delphi程序逆向特點(diǎn)經(jīng)驗(yàn)

實(shí)戰(zhàn)圖文
最終效果展示

程序驗(yàn)證流程邏輯圖

動(dòng)態(tài)分析

1.程序觀(guān)察
crackme006的升級(jí)版,最終目標(biāo)是一致的,均是要求給下方的藍(lán)色logo無(wú)遮蓋的顯示出來(lái),也就是說(shuō)要給這個(gè)區(qū)域的控件全部隱藏,程序界面如下圖

同時(shí)可見(jiàn)開(kāi)發(fā)crackme的和學(xué)習(xí)crackme的目標(biāo)和標(biāo)準(zhǔn)是一致的,path的方式是不被認(rèn)可的,即不可爆破,crackme若是個(gè)美貌女子,則應(yīng)征服其心,切不可霸王硬上弓。

2.控件ID,事件函數(shù)信息
依然老規(guī)矩,既然是delphi的程序,我們就先用dededark給控件信息和事件函數(shù)信息搜集出來(lái)

3.控件ID常量搜索法,打開(kāi)入手點(diǎn)
程序開(kāi)始只有一個(gè)Register按鈕,對(duì)應(yīng)上圖,其控件ID是2CC,那么我們依然就從2CC常量出發(fā)
查找→所有常量→2CC(Register按鈕控件ID),結(jié)果如下

跟入第一個(gè),根據(jù)之前的對(duì)dephi程序逆向的經(jīng)驗(yàn),應(yīng)該可以一眼看出,這里的反匯編代碼,功能是:dl的值0是隱藏,1是顯示,如下圖

可以看出,若是程序如期執(zhí)行到這里,則隱藏Register按鈕,并顯示Again按鈕,那么我們?cè)谶@個(gè)代碼的函數(shù)塊入口處下斷點(diǎn),來(lái)動(dòng)態(tài)分析這個(gè)函數(shù)塊的邏輯流程,如下圖

可以看到,這個(gè)函數(shù)實(shí)際就是點(diǎn)擊Register按鈕的事件函數(shù),首先會(huì)對(duì)code進(jìn)行驗(yàn)證,若是純數(shù)字則跳到下方,否則彈框報(bào)錯(cuò),并給[0x445830]賦值,看似多此一舉,實(shí)則是必須過(guò)程,原因后面會(huì)提到,如果輸入的是純數(shù)字,則執(zhí)行以下流程,如圖

在這里我們看到了算法函數(shù),算法函數(shù)需要三個(gè)參數(shù)(用戶(hù)名、code、[0x445830]的值),算法函數(shù)若是合規(guī),則隱藏Register按鈕,顯示Again按鈕。那么我們就F7跟入算法函數(shù)去研究算法

4.分析算法
在分析算法前,需要對(duì)[0x445830]這個(gè)全局變量值做一個(gè)說(shuō)明

初始值是0

經(jīng)過(guò)動(dòng)態(tài)分析(請(qǐng)自行動(dòng)手)得出,對(duì)它賦值的觸發(fā)條件是,需要code輸入至少6個(gè)英文字母,然后點(diǎn)擊Regsiter按鈕

輸入AAAAAA,它會(huì)被賦值固定值0x1686

既然是這種輸入輸出都可控的全局變量值,我們就不去糾結(jié)其算法什么的了,當(dāng)然如果你想去研究分析,那也是值得提倡得

然而為什么非得多此一舉得對(duì)他賦值呢?因?yàn)楹竺娴煤诵乃惴ㄖ?,它的值將作為一個(gè)乘數(shù),若是0的話(huà),那么算法的最終結(jié)果無(wú)論如何都會(huì)是0,0是無(wú)法完成算法合規(guī)的,簡(jiǎn)單的說(shuō),若是這個(gè)值是0,則不可能完成注冊(cè),所以要對(duì)他進(jìn)行這種看似多此一舉的隱藏賦值。是不是類(lèi)似開(kāi)啟隱藏奶牛關(guān),呵呵!

后面得所有分析中我們都按照,code輸入AAAAAA后[0x445830]被賦值0x1686為準(zhǔn)

我們來(lái)分析算法,如圖


可見(jiàn)核心算法是

首先要求用戶(hù)名要大于4個(gè)字符,為了防止溢出,我寫(xiě)的注冊(cè)機(jī)就硬性規(guī)定為5個(gè)字符

根據(jù)輸入的用戶(hù)名,經(jīng)過(guò)兩次嵌套循環(huán),和[0x445830]的值,即我們控制其值為0x1686,共同計(jì)算出一個(gè)值,暫時(shí)記為nTemp

nTemp = nTemp % 0xA2C2A

第二次輸入的注冊(cè)碼要求是純數(shù)字,純數(shù)字作為10進(jìn)制的數(shù)字型值,記為nCode

則公式是nCode/0x59+nCode%0x50+1 = nTemp

這種不是摘要hash的,是直接可以逆推計(jì)算出注冊(cè)碼,根據(jù)以上分析,寫(xiě)出逆推注冊(cè)碼的源碼,如下

//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("請(qǐng)輸入5字符長(zhǎng)度的字符串","逆向驛站提示您");
    }
    else
    {
        //根據(jù)name字符串計(jì)算

        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.把注冊(cè)機(jī)的五字符長(zhǎng)度用戶(hù)名輸入nome處

");
    sprintf(szRes+strlen(szRes),"2.請(qǐng)?jiān)赾ode處輸入AAAAAA,然后點(diǎn)擊Register按鈕,彈框確認(rèn)關(guān)閉即可

");
    sprintf(szRes+strlen(szRes),"3.請(qǐng)?jiān)赾ode處輸入%d,然后點(diǎn)擊Register按鈕

", nCode);
    sprintf(szRes+strlen(szRes),"4.Register按鈕消失,again按鈕出現(xiàn)

");
    sprintf(szRes+strlen(szRes),"5.請(qǐng)?jiān)俅卧赾ode處輸入AAAAAA,然后點(diǎn)擊again按鈕,彈框確認(rèn)關(guān)閉即可

");
    sprintf(szRes+strlen(szRes),"6.請(qǐng)?jiān)俅卧赾ode處輸入%d,然后點(diǎn)擊again按鈕,按鈕消失,注冊(cè)成功

", nCode);

    SetDlgItemText(IDC_EDIT2,szRes);
crackme注冊(cè)機(jī)的完整源碼均在網(wǎng)盤(pán)

5.分析Again按鈕事件函數(shù)
我們現(xiàn)在已經(jīng)成功的隱藏了Register按鈕,但是又出來(lái)了一個(gè)Again按鈕,有了如上的過(guò)程作為經(jīng)驗(yàn),我們"依葫蘆畫(huà)瓢",對(duì)Again按鈕進(jìn)行分析,結(jié)果發(fā)現(xiàn),其實(shí)驗(yàn)證流程完全是重復(fù)了一遍Regsiter按鈕,Again按鈕點(diǎn)擊事件逆向代碼如下

可以看到,給[0x445830]賦值的隱藏算法和最后的合規(guī)核心算法,均自動(dòng)顯示出來(lái)了中文標(biāo)簽,這就是習(xí)慣做標(biāo)簽的好處,之所以會(huì)顯示出來(lái),那證明跟上方的Regsiter部分的兩個(gè)算法均調(diào)用的相同的算法函數(shù),參數(shù)相同,算法相同,那么結(jié)果一定相同了。
所以Again按鈕消失的方法是跟Register一模一樣的,只是他消失后,不再顯示其他按鈕而已,至此注冊(cè)成功,Crackme007的標(biāo)題也溫順的變成了Crackme by "your name"了。

是不是有如開(kāi)頭所說(shuō)的征服美女的快感?去網(wǎng)盤(pán)中下載,試試吧

文章中涉及軟件、課件、源碼等均在網(wǎng)盤(pán),為避免網(wǎng)盤(pán)鏈接失效,公眾號(hào)中回復(fù):網(wǎng)盤(pán)

歡迎關(guān)注微信公眾號(hào):逆向驛站

相關(guān)文章

● CrackMe-006精解

● CrackMe-005精解(下)

● CrackMe-005精解(上)

● CrackMe-004精解

● CrackMe-003精解

● CrackMe-002精解

● CrackMe-001精解

標(biāo)簽:逆向|破解|反匯編|olldbg|滲透測(cè)試|病毒分析|網(wǎng)絡(luò)安全|區(qū)塊鏈
本期標(biāo)簽:dededark|delphi反匯編|crackme|crackme7|crackme07

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/11456.html

相關(guān)文章

  • CrackMe005-下篇 | 逆向破解分析 | 160個(gè)CrackMe視頻+圖文深度解析系列

    摘要:作者逆向驛站微信公眾號(hào)逆向驛站知乎逆向驛站上篇說(shuō)了具體方法,下篇來(lái)發(fā)逆向分析過(guò)程,看看老夫是如何得到上篇的具體方法的準(zhǔn)備環(huán)境和工具虛擬機(jī)環(huán)境專(zhuān)用脫殼器學(xué)習(xí)層次爆破,但是這個(gè)作者聲明了,爆破他是不認(rèn)可的解密流程,寫(xiě)注冊(cè)機(jī)積累程序逆向特點(diǎn)經(jīng)驗(yàn)詳 作者:逆向驛站微信公眾號(hào):逆向驛站知乎:逆向驛站showImg(https://segmentfault.com/img/bVbnHJT?w=11...

    jeyhan 評(píng)論0 收藏0
  • CrackMe006 | 160個(gè)crackme精解系列(圖文+視頻+冊(cè)機(jī)源碼

    摘要:作者逆向驛站微信公眾號(hào)逆向驛站知乎逆向驛站依然是的,而且沒(méi)殼子,條線(xiàn)比較清晰,算法也不難,非常適合新入門(mén)的來(lái)練習(xí)快過(guò)年了,系列年前就停更在吧,祝大家新年年后繼續(xù)準(zhǔn)備環(huán)境和工具虛擬機(jī)環(huán)境學(xué)習(xí)層次逆向分析程序驗(yàn)證流程邏輯解密算法,寫(xiě)注冊(cè)機(jī)積累程 作者:逆向驛站微信公眾號(hào):逆向驛站知乎:逆向驛站showImg(https://segmentfault.com/img/bVbnUo0?w=11...

    Barry_Ng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<