160个Crackme044
文章目錄
- 尋找切入點
- 算法分析
- 基礎校驗
- 第一部分
- 第二部分
- 校驗部分
- 寫出注冊機
- 校驗結果
【軟件名稱】:Dope2112.1.exe
【軟件大小】:178KB
【下載地址】:自行搜索下載
【加殼方式】:無殼
【保護方式】:Name/Serial
【編譯語言】:Delphi
【調試環境】:W7 32
【使用工具】:OD + IDA
【破解日期】:2019年5月21日
【破解目的】:純屬興趣
尋找切入點
首先搜索關鍵字符串,根據這個地址對應到IDA可以很快找到函數頭部00421B84,從這里開始分析整個算法
算法分析
隨便輸入一個用戶名和序列號,開始分析整個注冊算法
基礎校驗
首先是基礎校驗部分,在IDA中如圖,下面開始詳細講解每一步
2. 將用戶名全部轉為小寫
至此基礎校驗部分結束,開始計算注冊碼。真正的注冊碼分為兩部分,首先解釋第一部分
第一部分
第一部分的算法根據用戶名的ASCII值循環六次計算出來一個結果,算法和IDA反匯編出來的偽代碼是一致的,這里就不多做說明了。
第二部分
接下來是第二部分,這一部分在IDA反匯編的偽代碼中是沒有的。
首先計算出用戶名長度乘以0x4A7E的結果,
接著將計算的結果轉為字符串
然后再將第一部分用戶名計算的結果轉為字符串
校驗部分
將兩個部分的注冊碼拼接
接著將輸入的序列號和兩部分拼接的字符串進行比較,根據比較的結果提示是否注冊成功
寫出注冊機
這個注冊機也是好寫的不行啊,直接把IDA的代碼拷下來稍微改改就行了,代碼如下:
#include <iostream> #include <windows.h>int main() {char username[20] = { 0 };printf("請輸入用戶名:");scanf_s("%s", username, 20);int usernameLen = strlen(username);if (usernameLen<6){printf("用戶名長度必須大于等于6");}//大寫轉小寫for (int i=0;i<usernameLen;i++){if (username[i]>='A'&&username[i]<='Z'){username[i] += 32;}}int v13 = 0;int TotalSum = 0;int i = 0; // i初始化為零do{switch ((username[i- 1]))// 根據username[i]的值給v13賦值{case 0x61u:v13 = 0x18;break;case 0x62u:v13 = 0x25;break;case 0x63u:v13 = 0x42;break;case 0x64u:v13 = 0xC;break;case 0x65u:v13 = 0xD;break;case 0x66u:v13 = 6;break;case 0x67u:v13 = 0x36;break;case 0x68u:v13 = 0x2B;break;case 0x69u:v13 = 0x17;break;case 0x6Au:v13 = 0x2F;break;case 0x6Bu:v13 = 0x13;break;case 0x6Cu:v13 = 0x82u;break;case 0x6Du:v13 = 0x9Bu;break;case 0x6Eu:v13 = 0x92u;break;case 0x6Fu:v13 = 3;break;case 0x70u:v13 = 0x63;break;case 0x71u:v13 = 0x21;break;case 0x72u:v13 = 0x42;break;case 0x73u:v13 = 0x5C;break;case 0x74u:v13 = 0x29;break;case 0x75u:v13 = 0xC7u;break;case 0x76u:v13 = 0x66;break;case 0x77u:v13 = 0x58;break;case 0x78u:v13 = 0xA;break;case 0x79u:v13 = 0x28;break;case 0x7Au:v13 = 0x50;break;default:v13 = 0x5D;break;}TotalSum += v13; // 循環累加v13的值++i;//這里記得超出范圍清掉高位if (TotalSum>0xFF){TotalSum &= 0x00FF;}} while (i != 6);printf("%d-%d\n", TotalSum,0x4A7E*usernameLen);system("pause");return 0; }校驗結果
輸入用戶名和計算的序列號,提示成功,破解完成
最后,需要相關文件可以到我的Github下載:https://github.com/TonyChen56/160-Crackme
總結
以上是生活随笔為你收集整理的160个Crackme044的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 160个Crackme041之无源码修改
- 下一篇: 开源一个ShellCode生成框架