日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

160个Crackme047

發(fā)布時(shí)間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 160个Crackme047 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 校驗(yàn)步驟
      • 條件一
      • 條件二
      • 條件三
      • 條件四
      • 條件五
    • 注冊(cè)機(jī)的編寫

【軟件名稱】:Dope2112.2.exe

【軟件大小】:12.0 KB

【下載地址】:自行搜索下載

【加殼方式】:無(wú)殼

【保護(hù)方式】:Keyfile

【編譯語(yǔ)言】:MASM

【調(diào)試環(huán)境】:W7 32

【使用工具】: OD

【破解日期】:2019-6-15

【破解目的】:純屬興趣

校驗(yàn)步驟

條件一

用OD載入后直接往下拉就能看到CreateFile函數(shù),我們?cè)谶@下個(gè)斷點(diǎn)

該函數(shù)以讀寫的方式打開due-cm2.dat文件,為了通過校驗(yàn),我們需要在同路徑下創(chuàng)建一個(gè)名為due-cm2.dat的文件,并在文件內(nèi)填充任意內(nèi)容

接著讀取0x46個(gè)字節(jié)的文件內(nèi)容到緩沖區(qū)

這里重點(diǎn)關(guān)注pBytesRead實(shí)際讀取到的字節(jié)數(shù)

然后會(huì)比較[0x402173]的位置的值是否小于0x12,這個(gè)地址就是實(shí)際讀取的字節(jié)數(shù),所以我們得出

條件1:due-cm2.dat文件內(nèi)容不能小于0x12個(gè)字節(jié)

條件二

接著到了一個(gè)循環(huán),這個(gè)循環(huán)會(huì)讀取文件的每一個(gè)字節(jié),并且和1比較,如果內(nèi)容為1,則esi++。然后再循環(huán)結(jié)束之后,會(huì)比較esi是否小于2。所以我們得出:

條件二:文件內(nèi)容的ASCII必須有至少兩個(gè)0x1

條件三

繼續(xù)往下,我們暫時(shí)先將esi的值修改為2

接著又是一輪循環(huán),這一次將上輪循環(huán)的esi和ebx清零之后,依舊是循環(huán)讀取文件內(nèi)容到al,如果al的值為1則比較esi是否為0x1D5,接著會(huì)根據(jù)比較的結(jié)果決定是否跳轉(zhuǎn)。所以我們得出:

條件三:在第一個(gè)0x1之前的文件內(nèi)容的ASCII值之和必須為0x1D5

條件四

繼續(xù)跟蹤,這里先暫時(shí)通過修改零標(biāo)志位讓程序通過條件三的驗(yàn)證

這里還是循環(huán)讀取文件內(nèi)容,不同的是這一次ebx的值沒有被清零,ebx的值是條件三的循環(huán)次數(shù)。這里將進(jìn)行循環(huán)異或然后將異或的結(jié)果保存,保存的結(jié)果最終將顯示為成功注冊(cè)的用戶名

條件五

這里同樣沒有把ebx清零,也是讀取文件內(nèi)容,將文件內(nèi)容的ASCII值累加到esi,如果遇到文件內(nèi)容為1則跳過循環(huán)。最后循環(huán)結(jié)束之后比較esi的值是否為0x1B2,如果相等則校驗(yàn)通過,所以我們得出

條件四:文件內(nèi)容的ASCII值(除去0x1)累加必須等于0x1B2

注冊(cè)機(jī)的編寫

看到這么繁瑣的校驗(yàn)我就腦闊疼。這個(gè)程序分析出了注冊(cè)條件還得自己去推注冊(cè)機(jī)!直接從吾愛拷了一個(gè)過來。。。。代碼如下:

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <windows.h> using namespace std; int main() {const char * path = "E:\\due-cm2.dat";FILE * keyfile;char * youkey = new char[40]; //輸入用戶名memset(youkey, 0, 40);unsigned char * writekey = new unsigned char[40];memset(writekey, 0, 40); //存入文件的內(nèi)容cout << "Enter your name:";scanf_s("%s",youkey,40);if (strlen(youkey) >= 8)cout << "用戶名最多支持13位,其余部分將被截?cái)?" << endl;int now = 0;writekey[0] = 0xEA;writekey[1] = 0xEB;writekey[2] = 0x01;for (unsigned int x = 0; x < 13 && x < strlen(youkey); x++){writekey[x + 3] = youkey[x] ^ writekey[x];}if (strlen(youkey) >= 13)now = 16;elsenow = strlen(youkey) + 3;writekey[now] = 0x01;writekey[now + 1] = 0xD9;writekey[now + 2] = 0xD9;errno_t err = fopen_s(&keyfile, path, "w+b");if (err != 0){cout << "file open or create failed!" << endl;system("pause");return -1;}rewind(keyfile);fwrite(writekey, sizeof(byte), 40, keyfile);fclose(keyfile);cout << "write file over!" << endl;delete[] youkey;delete[] writekey;system("pause");return 1; }

設(shè)置好文件路徑,然后輸入用戶名

就會(huì)將用戶名和密碼寫入到文件,然后再次打開程序

顯示注冊(cè)成功 KO!

需要相關(guān)文件的可以到我的Github下載:https://github.com/TonyChen56/160-Crackme

總結(jié)

以上是生活随笔為你收集整理的160个Crackme047的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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