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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

160个Crackme044

發布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 160个Crackme044 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 尋找切入點
    • 算法分析
      • 基礎校驗
      • 第一部分
      • 第二部分
      • 校驗部分
    • 寫出注冊機
    • 校驗結果

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

【軟件大小】:178KB

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

【加殼方式】:無殼

【保護方式】:Name/Serial

【編譯語言】:Delphi

【調試環境】:W7 32

【使用工具】:OD + IDA

【破解日期】:2019年5月21日

【破解目的】:純屬興趣

尋找切入點

首先搜索關鍵字符串,根據這個地址對應到IDA可以很快找到函數頭部00421B84,從這里開始分析整個算法

算法分析

隨便輸入一個用戶名和序列號,開始分析整個注冊算法

基礎校驗

首先是基礎校驗部分,在IDA中如圖,下面開始詳細講解每一步

  • 獲取用戶名

  • 2. 將用戶名全部轉為小寫

  • 獲取輸入的序列號
  • 比較用戶名長度是否大于等于6
  • 至此基礎校驗部分結束,開始計算注冊碼。真正的注冊碼分為兩部分,首先解釋第一部分

    第一部分

    第一部分的算法根據用戶名的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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。