160个Crackme029
生活随笔
收集整理的這篇文章主要介紹了
160个Crackme029
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 查殼
- 分析程序
- 分析算法
- 寫出注冊機
- 校驗結果
查殼
這個Crackme跟027和028是同一個作者,VC6寫的,難度為一顆星
分析程序
同樣,根據字符串的錯誤提示,來到函數頭的位置,配合IDA的偽代碼分析整個算法,
分析算法
隨便輸入一個用戶名和序列號,算法的校驗過程如下。這個Crackme跟028一樣有花指令的干擾,如果想在IDA中看到F5的偽代碼,需要手動去除花指令,去除的方法請參考我的Crackme027的分析
對 沒錯 兩個算法都是直接從IDA的偽代碼中拷出來的 直接就能用
也就是說用戶名和序列號必須要滿足程序中的等式才能注冊成功
寫出注冊機
這個程序的注冊機也比較好寫,首先根據用戶名計算出中間結果,然后再根據結果反向逆推出注冊碼,代碼如下:
#include <iostream> #include <windows.h>using namespace std;int main() {char username[20] = { 0 };char result[20] = { 0 };char key[20] = { 0 };printf("請輸入用戶名 必須為全大寫:");scanf_s("%s", username, 20);int usernameLength = strlen(username);if (usernameLength <= 5){printf("用戶名長度必須大于5");}//計算中間結果for (int i=0;i<usernameLength;i++){username[i] ^= i+1;result[i] = username[i];}//根據結果逆推注冊碼for (int i = 10; i < usernameLength+10; i++){result[i-10] ^= i;key[i-10] = result[i-10];}printf("%s\n", key);system("pause");return 0; }校驗結果
輸入用戶名和計算出來的序列號
提示正確 破解成功
需要相關文件可以到我的Github下載:https://github.com/TonyChen56/160-Crackme
總結
以上是生活随笔為你收集整理的160个Crackme029的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 160个Crackme028之对抗花指令
- 下一篇: 160个Crackme030之一元一次方