info
1、软件名称:CrackMe V3.0
2、压缩包名:Cruehead-CrackMe-3.rar
3、编程语言:Assembler
4、星级评定:算 法:★★ 爆 破:★★
查壳
界面
Start
通过这个发现了一个文字,这个难度应该和 abexcm5 差不多
- 4020F9 变量是一个 DWORD,用来存放 key
- 加密方法的过程中会改变 key,并且方法运行后 key 还要在 xor 12345678 一遍
- 最后读取文件前18个字符的后4个字符和key做对比。如果一样就 Win 了。
加密方法怎么做的懒得说了,贴张图自己和注册机的 Encryption(char *pass)
对着看吧。
注册机
#include <Windows.h>
#include <fstream>
#include <iostream>
#include <string>DWORD key = 0; // 4020F9void Encryption(char *pass) {char bl = 0x41;do {pass[0] ^= bl;key += pass[0];pass++;bl++;if (pass[0] == '\0') {break;}} while (bl != 0x4F);
}int main() {char input[15] = {0}, input_bak[15] = {0};std::cout << "Please enter 14 characters: ";std::string temp;std::getline(std::cin, temp);if (temp.length() != 14) {std::cout << "Error: You entered more than 14 characters.\n";return 1;}temp.copy(input, 14);input[14] = '\0';std::copy(input, input + 15, input_bak);Encryption(input);key ^= 0x12345678;std::ofstream outFile("CRACKME3.KEY", std::ios::binary);if (!outFile) {std::cerr << "Failed to create file!" << std::endl;return 1;}outFile.write(input_bak, 14);outFile.write(reinterpret_cast<const char *>(&key), sizeof(key));outFile.close();std::cout << "over!!!" << std::endl;return 0;
}