最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

新160個(gè)CrackMe分析-第2組:11-20(上)

2022-09-08 11:35 作者:rkvir逆向工程學(xué)院  | 我要投稿

作者:selph

目錄:

??011-wocy.11

??012-ACG-crcme12

??013--Acid_burn3

??014-Splish4

??015-BradSoblesky.15

??016-fly_crkme36

??017-Cabeca7

??018-crackme_00068

??019-Acid_Byte.39

??020-cosh.310

016-020請看下期

1.??????011-wocy.1

???????????算法難度:?

???????????爆破難度:?

信息收集

運(yùn)行情況:



??????????

查殼與脫殼:

MFC程序,無殼



??????????

查字符串:

提示字符串:Registed



??????????

調(diào)試分析

老樣子,從關(guān)鍵提示字符串入手,交叉引用查校驗(yàn)函數(shù)

這里函數(shù)里不知道這個(gè)[esi+60h]和[esi+64h],通過動(dòng)態(tài)調(diào)試執(zhí)行可知,這里是分別獲取的用戶名和ID號(hào),然后驗(yàn)證邏輯就很簡單了,用戶名和ID號(hào)需要是倒序的即可



??????????

結(jié)果:

??????????


2.??????012-ACG-crcme1

???????????算法難度:??

???????????爆破難度:?

信息收集

運(yùn)行情況:

?????

?????

查殼與脫殼:

無殼

?

?????????

查字符串:

有很多看不懂的提示語,還有個(gè)文件名

??????????


調(diào)試分析

抄起IDA直接干,用戶函數(shù)就3個(gè),這么簡潔這應(yīng)該是純匯編寫的程序吧(猜的),從start開始分析



??????????

首先打開一個(gè)文件,讀取其中的內(nèi)容,該內(nèi)容應(yīng)該長度是12字節(jié):


??????????

然后就像下面這樣,對12個(gè)字節(jié)的每個(gè)字節(jié)進(jìn)行一個(gè)運(yùn)算,逐一校驗(yàn)結(jié)果


??????????

然后接下來就是,如果驗(yàn)證全部通過,就彈窗提示ok,否則就直接啟動(dòng)窗口

????????????暴力破解

把所有判斷跳轉(zhuǎn)都nop掉即可

????????????算法分析

序列號(hào)運(yùn)算的核心是異或,異或是可逆的,所以可以反著把序列號(hào)生成出來:

?????#include

int main()
{
??? int arr[12] = { 0x168,0x160,0x170,0xec,0x13c,0x1cc,0x1f8,0xec,0x164,0x1f8,0x1a0,0x1bc };
??? int serial[12] = { 0 };
??? for (int i = 0; i < 12; i++)
??? {
??????? serial[i] ^= arr[i];
??????? serial[i] >>= 2;
??????? serial[i] = serial[i]&0x000000FF ^ 0x1b;
??? }
??? for(char var : serial)
??? {
??????? printf("%c",var);
??? }
}

計(jì)算結(jié)果是:ACG The Best

執(zhí)行結(jié)果:






??????????

總結(jié)

很簡單無腦的一次算法分析

3.??????013--Acid_burn

???????????算法難度:??

???????????爆破難度:?

信息收集

原160個(gè)CM的第一個(gè),以前做過一遍,老費(fèi)勁了,現(xiàn)在再來一遍看看

?暴力破解已經(jīng)懶得介紹了,看得懂完整分析也肯定知道該改哪里了

運(yùn)行情況:

啟動(dòng)的時(shí)候有Nag:


??????????

?提供了兩種注冊方法:用戶名+序列號(hào),序列號(hào)

??????????


?查殼與脫殼:

?無殼:Delphi程序

??????????

調(diào)試分析

分析Delph GUI程序借助IDR輔助方便查看窗口事件(IDA分析的話,查字符串交叉引用定位也能找到這些函數(shù)

?首先是啟動(dòng)窗口:窗口啟動(dòng)的時(shí)候調(diào)用FromCreate函數(shù)里,執(zhí)行流MessageBox,這就是所謂的NAG,煩人彈窗



??????????

然后是序列號(hào)驗(yàn)證:



??????????

接下來是用戶名+序列號(hào)驗(yàn)證:

首先對用戶名4個(gè)字節(jié)進(jìn)行一頓處理,然后把值保存起來,用戶名必須大于等于4個(gè)字符

這里開頭往[431750]賦了個(gè)初始值:0x29







接下來計(jì)算序列號(hào),然后跟用戶輸入比對



??????????

?去除NAG

去除Nag只需要修改該函數(shù)直接返回即可:



??????????

算法分析

序列號(hào)驗(yàn)證:硬編碼驗(yàn)證,輸入Hello Dude!即可


??????????

用戶名+序列號(hào)驗(yàn)證,序列號(hào)可以寫出注冊機(jī):

?????#include

int main()
{
??? int res = 0x29;
??? char name[20] = {0};

??? std::cin >> name;
??? res = name[0] * res * 2;

??? std::cout <<"CW"<<"-" << res << "-" <<"CRACKED";
}


??????????

總結(jié)

以前做半天,現(xiàn)在分析起來很快啊,對于特定語言的逆向,如果能有對應(yīng)的工具幫助識(shí)別函數(shù)功能,那簡直是幫大忙了

?PS:用戶名+序列號(hào)驗(yàn)證這里先校驗(yàn)了用戶名長度,校驗(yàn)的時(shí)候計(jì)算了一堆中間值,真的一點(diǎn)用沒有?。。?/p>

4.??????014-Splish

???????????算法難度:??

???????????爆破難度:?

信息收集

?運(yùn)行情況:

開始有個(gè)啟動(dòng)屏幕,然后進(jìn)入程序主界面

?按照說明,目標(biāo)是禁用啟動(dòng)屏幕,完成硬編碼校驗(yàn),寫用戶名序列號(hào)注冊機(jī)




?

查殼與脫殼:


無殼:

??????????

調(diào)試分析

?用戶函數(shù)比較少,直接從起點(diǎn)硬剛:

?這個(gè)call應(yīng)該就是程序的入口了



這個(gè)call里面就進(jìn)入窗口消息循環(huán)了,在那之前調(diào)用了幾個(gè)用戶函數(shù):


有一個(gè)是對參數(shù)進(jìn)行處理的,有一個(gè)call的參數(shù)是實(shí)例句柄,很可疑,進(jìn)入查看

、





這里頭是創(chuàng)建了一個(gè)窗口,然后延時(shí)關(guān)閉,要去除NAG,直接把這個(gè)函數(shù)處理了就好:




然后找到一個(gè)函數(shù)貌似是消息處理函數(shù):這里根據(jù)參數(shù)的Msg號(hào)進(jìn)行跳轉(zhuǎn)執(zhí)行


??????????

?往下找,發(fā)現(xiàn)硬編碼check分支:將用戶輸入和硬編碼:HardCoded進(jìn)行比對,一致了跳轉(zhuǎn)



??????????

?一致了跳轉(zhuǎn)的最終位置是,說明這里硬編碼已經(jīng)找到了:



??????????

?接下來找找用戶名序列號(hào)驗(yàn)證:

?驗(yàn)證會(huì)進(jìn)行三次計(jì)算,首先是計(jì)算用戶名得到一個(gè)結(jié)果:





??????????

然后計(jì)算序列號(hào)得到一個(gè)結(jié)果:



??????????

最后將兩個(gè)運(yùn)算結(jié)果進(jìn)行比對:

???

???????

算法分析

拿用戶名計(jì)算一個(gè)結(jié)果,跟序列號(hào)計(jì)算一個(gè)結(jié)果進(jìn)行比對的驗(yàn)證邏輯,寫注冊機(jī)的話則是先用用戶名計(jì)算一個(gè)結(jié)果,然后用這個(gè)結(jié)果反推序列號(hào)

?????#include

int main()
{
??? const char* num = "2345678901";
??????? char serial[20] = { 0 };
??? char name[20] = { 0 };
??? char name_res[20] = { 0 };
??? int len = 0;

??? std::cin >> name;
??? len = strlen(name);
??? //std::cin >> serial;

??? for (int i = 0; i < len; i++)
??? {
??????? name_res[i] = name[i] % 0xA;
??????? name_res[i] ^= i;
??????? name_res[i] += 2;
??????? if (name_res[i] > 0xA)name_res[i] -= 0xA;
??? }

??? //for (int i = 0; i < len; i++)
??? //{
??? //? serial_res[i] = serial[i] % 0xA;
??? //}

??? for (int i = 0; i < len; i++)
??? {
??????? serial[i] = num[name_res[i]];
??? }

??? std::cout << serial << std::endl;
}

???????????結(jié)果:

???



???????

總結(jié)

算是個(gè)編寫注冊機(jī)的練習(xí),這個(gè)cm中練習(xí)了匯編轉(zhuǎn)C的操作

5.??????015-BradSoblesky.1

???????????算法難度:?

???????????爆破難度:?

信息收集

運(yùn)行情況:

?序列號(hào)驗(yàn)證:

??????????

查殼與脫殼:

MFC程序,無殼:

?????

?????

?查字符串:

存在提示信息:

????

??????

調(diào)試分析

硬編碼字符串和用戶輸入字符串比對,沒啥好說的


??????????

結(jié)果:


新160個(gè)CrackMe分析-第2組:11-20(上)的評論 (共 條)

分享到微博請遵守國家法律
新宾| 宣威市| 都江堰市| 天柱县| 奇台县| 开江县| 宜阳县| 万宁市| 奉贤区| 浪卡子县| 长岭县| 措美县| 邳州市| 乐清市| 遂昌县| 廊坊市| 泾川县| 全南县| 同仁县| 中西区| 林芝县| 舒城县| 石屏县| 诸城市| 广饶县| 陈巴尔虎旗| 兴安县| 德格县| 峨边| 新源县| 四平市| 务川| 万全县| 烟台市| 乌苏市| 蓬溪县| 古浪县| 镇康县| 柳州市| 达日县| 奉化市|