Как встроить и выполнить программу внутри другой, чтобы добавить ключевое лицензирование на C++C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как встроить и выполнить программу внутри другой, чтобы добавить ключевое лицензирование на C++

Сообщение Anonymous »


У меня есть старая программа, которую я создал несколько лет назад, и я потерял исходный код, и теперь мне нужно ее продать, и мне нужно создать какую-то оболочку, которая проверяет лицензионный ключ, проблема не в этом. Проблема заключается в его внедрении и выполнении. Я попробовал пару вещей: сначала я внедрил исполняемый файл в массив байтов, извлеченный с помощью функции экспорта HxD.

Я попробовал скопировать программу прямо в память и выполнить ее оттуда, очевидно, это самое сложное, поскольку испортились все зависимости, а в Windows существует строгая политика выполнения из памяти

Предполагая, что байты хранятся в unsigned char programBytes[];, а весь код находится внутри int main() и внутри блока проверки ключа, это для теперь это не имеет значения, поэтому рассмотрим этот пример

bool KEY_VALID = true; if (KEY_VALID){ /* код... */ } Это версия памяти, она не работала, поэтому я ее выбросил.

DWORD old_protect; size_t executableSize = sizeof (programBytes); LPVOID executable_area = VirtualAlloc(NULL, executableSize, MEM_RESERVE, PAGE_READWRITE); VirtualProtect(executable_area, executableSize, PAGE_EXECUTE_READWRITE, &old_protect); memcpy (executable_area, programBytes, executableSize); пустота (* функция) (); func = (void(*)())executable_area; функция(); //
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»