Я хочу добавить файлы EXE в мое консольное приложение EXE. Когда мое консольное приложение запускается, все EXE-файлы должны быть разархивированы в нужное мне место. Как я могу это сделать? Как и TeamViewer.exe, программа сама копирует файлы в C: \ Program Files (x86) \ или C: \ Users \% USERNAME% \ AppData \ Roaming \ TeamViewer.
Вы можете просто добавить дополнительные байты (полезную нагрузку) в конец файла.
Например, вы можете добавить ZIP-файл с зависимостями.
У вас есть крошечный учебник Вот.
Затем вы должны кодировать извлечение, как вы хотите. Давайте назовем loader частью вашей программы, которая должна извлечь и установить зависимости, а затем запустить оригинальную основную функцию. Если вы не можете запустить exe-файл без уже установленных зависимостей, вам нужно создать внешний загрузчик без каких-либо зависимостей и добавить основной exe-файл в качестве зависимости (внутри zip-файла).
Если файл подписан, это может оказаться полезным вопрос.
Вы можете поместить содержимое файла в массив. Просто создайте инструмент, который читает файл, который вы хотите встроить, и генерирует следующие два файла:
// exefile.c
const char exefile[] = {0xff, 0xff, 0xff,....};
а также
// exefile.h
extern const char exefile[123456];