日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Crackme006 - 全新160个CrackMe学习系列(图文|视频|注册机源码)

發(fā)布時(shí)間:2024/9/21 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Crackme006 - 全新160个CrackMe学习系列(图文|视频|注册机源码) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

知乎:逆向驛站

原文鏈接
CrackMe006 | 難度適中適合練手 |160個(gè)CrackMe深度解析(圖文+視頻+注冊(cè)機(jī)源碼)

crackme006,依然是delphi的,而且沒(méi)殼子,條線比較清晰,算法也不難,非常適合新入門的來(lái)練習(xí).
快過(guò)年了,Crackme系列年前就停更在006吧,祝大家新年666 ,年后繼續(xù)

準(zhǔn)備

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

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

  • CrackMe006(aLoNg3x.1.exe)

  • ollydbg

  • Dededark

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

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

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

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

實(shí)戰(zhàn)圖文

最終效果展示

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

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

1.程序觀察

旁邊既然有個(gè)help,我們當(dāng)然要看了,四個(gè)彈框,有實(shí)際信息價(jià)值的是頭兩個(gè),如圖

大體意思是,這個(gè)crackme的最終目標(biāo)是隱藏ok和cancella按鈕來(lái)觀看完整的Ringzero logo。

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

3.控件ID常量搜索法,打開(kāi)入手點(diǎn)
程序開(kāi)始是ok按鈕是禁用狀態(tài),cancella按鈕是可以點(diǎn)擊的,那么我們就從cancella入手,兩個(gè)方向,你可以去找cancellaclick事件的函數(shù)入手,也可以從cancella控件ID入手,我這里選擇后者,因?yàn)樽罱K目的是cancella要被隱藏起來(lái),無(wú)論如何一定會(huì)用到控件ID

查找→所有常量→2D0(cancella按鈕控件ID),結(jié)果如下

一共有四個(gè)地方用到了這個(gè)控件ID,我們分別跟入查看哪個(gè)是我們想找的隱藏這個(gè)控件的反匯編代碼,從上至下依次如下



找到了入手點(diǎn),我們開(kāi)始上下閱讀函數(shù)塊,發(fā)現(xiàn)這正是cancellaclick事件函數(shù)

4.分析Cancellaclick中算法
在Cancellaclick函數(shù)入口處下斷點(diǎn),然后用戶名輸入123456,注冊(cè)碼輸入654321,然后開(kāi)始動(dòng)態(tài)調(diào)試分析,F8步過(guò)分析如下圖

F7跟如算法call仔細(xì)分析,如下圖

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

char szName1[128] = {0};char szCode[128] ={0} ;char szRes[256] ={0} ;int nKey = 0 ;int nlen = 0;int nTemp = 0 ;GetDlgItemText(IDC_EDIT1,szName1,128);nlen = strlen(szName1);if (nlen<=5 || nlen >10 || szName1[0] == 0x30){MessageBox("請(qǐng)輸入6-10字符長(zhǎng)度的字符串,而且第一位不能是0!","逆向驛站提示您");return ;}/************************************************************************//* cancella點(diǎn)擊事件算法,可隱藏cancella按鈕,根據(jù)輸入name推code *//************************************************************************/nKey = ((int)szName1[4])%7+2 ;nTemp = nKey ;//階乘for (int i=1;i<nTemp;i++){nKey = nKey * i;}nTemp = nKey ;nKey = 0 ;//求和for (int j =0;j<nlen ;j++){nKey = nKey + nTemp * ((int)szName1[j]);}//得出正確codenKey = nKey - 0x7a69 ;//nKey值就是code應(yīng)該輸入的值

例如我們輸入的用戶名是123456,逆推注冊(cè)碼計(jì)算如下

  • "123456"的第五個(gè)字符是"5",asc碼是53,即十六進(jìn)制0x35

  • 除以7余數(shù)是4,再加2是6

  • 6的階乘是6 * 5* 4* 3 2 1,等于720 ,即十六進(jìn)制的0x2D0

  • 123456每個(gè)字符的asc碼相加是0x31+0x32+0x33+0x34+0x35+0x36,結(jié)果是0x135

  • 0x135 乘以0x2D0是0x36510

  • 0x36510比注冊(cè)碼的十六進(jìn)制形態(tài)大0x7A69

  • 即注冊(cè)碼是0x36510-0x7A69 = 0x2EAA7 ,即十進(jìn)制是191143

算出了注冊(cè)碼,我們來(lái)測(cè)試一下,如下動(dòng)圖

Cancella按鈕消失

5.分析OK按鈕中算法
有了如上的過(guò)程作為經(jīng)驗(yàn),我們"依葫蘆畫(huà)瓢",來(lái)進(jìn)行ok按鈕中的算法分析,依然是okClick事件入口下斷,F8動(dòng)態(tài)分析,結(jié)果如下

F7跟如算法call仔細(xì)分析,如下圖

分析后發(fā)現(xiàn),這個(gè)算法是根據(jù)已經(jīng)算出的注冊(cè)碼,再次要求用戶名合規(guī),算法并不難,而且很敏感的看到0x41,0x41對(duì)應(yīng)的asc字符是大寫字母A,而0x41加上的數(shù)字的取值范圍是0-0x19,即十進(jìn)制0-25,那一看就知道,就是26個(gè)大寫字母范圍內(nèi)了,這時(shí)候你可以變態(tài)的暴力枚舉也行,當(dāng)然這個(gè)也是可以逆推出來(lái),我們還是選擇逆推吧。源碼如下

/************************************************************************//* ok點(diǎn)擊事件算法,可隱藏ok按鈕,根據(jù)code推name *//************************************************************************/sprintf(szCode,"%d",nKey);nlen =strlen(szCode);szName1[nlen]='\0';//循環(huán)處理后,szName1就是要求的namefor (int k =nlen-1;k>=0;k--){szName1[k] = ((int)szCode[k] * (int)szCode[k] * (k+1))%0x19+0x41;}sprintf(szRes,"1.請(qǐng)?jiān)赾ode處輸入%d,然后點(diǎn)擊cancella按鈕\r\n\r\n", nKey);sprintf(szRes+strlen(szRes),"2.cancella按鈕消失后,請(qǐng)?jiān)趎ame處輸入%s,然后點(diǎn)擊ok按鈕\r\n\r\n", szName1);sprintf(szRes+strlen(szRes),"3.ok按鈕消失,注冊(cè)成功");SetDlgItemText(IDC_EDIT2,szRes);

我們剛輸入的注冊(cè)碼是191143,逆推出用戶名應(yīng)該是"BXDEUG",驗(yàn)證如下動(dòng)圖

OK按鈕消失,至此全部搞定, 是不是感覺(jué)不難,去網(wǎng)盤中下載,試試吧

補(bǔ)充知識(shí)點(diǎn)

再CancellaClick事件算法中,有個(gè)階乘計(jì)算,函數(shù)內(nèi)部反匯編代碼如下,可以作為知識(shí)點(diǎn)積累,下次看到這個(gè)第一時(shí)間就能反應(yīng)過(guò)來(lái),提高效率,逆向的老手往往是這種知識(shí)碎片很多,而且腦部搜索算法很精準(zhǔn)

最后,喜歡這里的請(qǐng)推薦給你身邊的朋友吧(滲透測(cè)試、逆向破解、病毒分析、信息安全等)


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

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

相關(guān)文章

● CrackMe-005精解(下)

● CrackMe-005精解(上)

● CrackMe-004精解

● CrackMe-003精解

● CrackMe-002精解

● CrackMe-001精解

本期標(biāo)簽:dededark|delphi反匯編|crackme|crackme6|crackme06

轉(zhuǎn)載于:https://www.cnblogs.com/nxyz/p/10334737.html

總結(jié)

以上是生活随笔為你收集整理的Crackme006 - 全新160个CrackMe学习系列(图文|视频|注册机源码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。