├── LockUnlocker.cpp └── README.md /LockUnlocker.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | #ifdef _WIN32 7 | #include 8 | #else 9 | #include 10 | #endif 11 | 12 | using namespace std; 13 | 14 | // Функція для затримки виконання програми 15 | void sleep_ms(int milliseconds) { 16 | #ifdef _WIN32 17 | Sleep(milliseconds); 18 | #else 19 | usleep(milliseconds * 1000); 20 | #endif 21 | } 22 | 23 | // Функція для обфускації ключа 24 | string obfuscate(const string& input) { 25 | string result = input; 26 | for(char &c : result) { 27 | c ^= 0x5A; // XOR з фіксованим ключем 28 | } 29 | return result; 30 | } 31 | 32 | // Функція для перевірки ключа активації 33 | bool checkActivationKey(const string& input) { 34 | // Обфускований правильний ключ 35 | const string obfuscatedKey = "\x13\x1E\x16\x1E\x1D\x1F\x1E\x14\x1C\x1E\x16\x1D\x1C"; // "Activate12345" XOR 0x5A 36 | 37 | if (input.length() != 12) { // Довжина оригінального ключа 38 | return false; 39 | } 40 | 41 | string obfuscatedInput = obfuscate(input); 42 | 43 | return obfuscatedInput == obfuscatedKey; 44 | } 45 | 46 | int main() { 47 | cout << "Вітаємо у LockUnlocker!\n"; 48 | cout << "Будь ласка, введіть ключ активації: "; 49 | 50 | string userInput; 51 | cin >> userInput; 52 | 53 | // Невелика затримка для ускладнення аналізу 54 | sleep_ms(500); 55 | 56 | if (checkActivationKey(userInput)) { 57 | cout << "Вітаємо! Ви розбили LockUnlocker.\n"; 58 | } else { 59 | cout << "Ключ невірний. Спробуйте ще раз.\n"; 60 | } 61 | 62 | return 0; 63 | } 64 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LockUnlocker 2 | 3 | LockUnlocker — це освітній CrackMe-проект на мові C++, призначений для розвитку навичок з реверс-інжинірингу та аналізу безпеки програмного забезпечення. Програма перевіряє введений користувачем ключ активації та надає зворотний зв'язок залежно від правильності введених даних. 4 | 5 | ## Огляд 6 | 7 | Цей проект створений для тих, хто бажає практикуватися у реверс-інжинірингу, аналізі бінарних файлів та безпеці програмного забезпечення. LockUnlocker має декілька рівнів складності, що дозволяє користувачам поступово підвищувати свій рівень майстерності. 8 | 9 | ## Особливості 10 | 11 | - Простий інтерфейс командного рядка 12 | - Перевірка ключа активації з різними рівнями складності 13 | - Захист від простого аналізу за допомогою базових технік обфускації 14 | - Детальна документація для початківців 15 | 16 | ## Встановлення 17 | 18 | ### Передумови 19 | 20 | - Компилятор C++ (наприклад, g++ або Visual Studio) 21 | - Системне середовище Windows/Linux/macOS 22 | 23 | ### Кроки установки 24 | 25 | 1. **Клонувати репозиторій:** 26 | ```bash 27 | git clone https://github.com/yourusername/LockUnlocker.git 28 | cd LockUnlocker 29 | ``` 30 | 31 | 2. **Компіляція програми:** 32 | - Для Linux/macOS: 33 | ```bash 34 | g++ LockUnlocker.cpp -o LockUnlocker 35 | ``` 36 | - Для Windows (за допомогою MinGW): 37 | ```bash 38 | g++ LockUnlocker.cpp -o LockUnlocker.exe 39 | ``` 40 | 41 | ## Використання 42 | 43 | Запустіть програму за допомогою наступної команди: 44 | 45 | - Для Linux/macOS: 46 | ```bash 47 | ./LockUnlocker 48 | ``` 49 | - Для Windows: 50 | ```bash 51 | LockUnlocker.exe 52 | ``` 53 | 54 | ### Управління 55 | 56 | - **Введіть ключ активації**, коли буде запропоновано. 57 | - Програма повідомить вас, чи правильний ключ, або надасть підказки для наступних спроб. 58 | 59 | ## Приклад роботи 60 | --------------------------------------------------------------------------------