Здарова всем, сегодня мы будем делать проверку активации на вашей подписке. Ее вы могли видеть в разных лицензионных программах. Будем делать все просто, без сирийников и MD5. Обойдемся только именем компутера и XOR. Сразу скажу о минусах этой подписки: Ее легко обойти, сделав у компьютера имя уже активированного пользователя. Начнем! #include <windows.h> Code #include <windows.h> TCHAR buffer[MAX_COMPUTERNAME_LENGTH + 1]; Code TCHAR buffer[MAX_COMPUTERNAME_LENGTH + 1]; Создали буффер, с размером 15 + 1. Зачем прибавлять 1? Затем, что есть еще и ноль, который используется, как маркер конца строки. DWORD len = MAX_COMPUTERNAME_LENGTH; //Тут уже не нужен +1 GetComputerName(buffer, &len); Code DWORD len = MAX_COMPUTERNAME_LENGTH; //Тут уже не нужен +1 GetComputerName(buffer, &len); Берем и достаем имя компьютера и записываем в переменную buffer. Дальше нужно зашифровать наше имя, чтобы не сразу люди сломали нашу подписку. Делать мы будем это с помощью xor, а точнее шифровать им каждую ячейку массива. for (int i = 0; i < lstrlen(buffer); ++i) { buffer[i] ^= 23; } Code for (int i = 0; i < lstrlen(buffer); ++i) { buffer[i] ^= 23; } Почему buffer[i] ^= 23; Code buffer[i] ^= 23; тут написано 23? 23 - ключ шифрования, например 1 ^ 2 = 3, а 1 ^ 6 = 7. Думаю понятно. Далее делаем проверку, если вы умелец, вы можете сделать на хостинге проверку, то есть на хостинг закинуть файл и с помощью функции internetreadfile прочитать содержимое файла и проверить. Но я обойдусь только If и else if (lstrcmp(L"ZACOFOYE", buffer) == 0) { return true; } else { return false; } Code if (lstrcmp(L"ZACOFOYE", buffer) == 0) { return true; } else { return false; } Это все моя функция типа bool, поэтому возвращается true или false, в Main.cpp есть проверка возвратного значения. ZACOFOYE - имя компьютера моего, только под другим XOR Почему идет проверка на ноль с функцией lstrcmp? - https://msdn.microsoft.com/en-us/library/windows/desktop/ms647488(v=vs.85).aspx пункт "Return value", последнее предложение. Потому что, когда строки одинаковы возвращает 0. Вот и все. #МояСтатья RaysMorgan
тут лучше не посылать , а уже дописать раз взялся , что strcmp() - метод компаратор и когда строчки равны , то функция возвращает ноль.