Создайте новый EXE из C - PullRequest
       20

Создайте новый EXE из C

0 голосов
/ 30 октября 2009

Я работаю в VC ++ 2008 (экспресс), и я хотел бы написать что-то на C, которое создает "пустой" exe-файл, который я позже могу вызвать LoadLibrary и использовать BeginUpdateResource, UpdateResource, EndUpdateResource изменить содержимое.

Просто запись 0-байтового файла не позволяет мне открыть его с помощью LoadLibrary, потому что это не ресурс.

Ответы [ 3 ]

4 голосов
/ 30 октября 2009

Вы можете скомпилировать пустой файл .exe, например,

int main() { return 0; }

и используйте его как шаблон. (Или пустой .dll, что угодно)

3 голосов
/ 30 октября 2009

"Создание" исполняемого файла - это то, что компилятор очень хорошо умеет . Так почему бы не заставить компилятор создать нужный исполняемый файл и использовать этот файл (или двоичное представление его содержимого) для копирования?

3 голосов
/ 30 октября 2009

.EXE формат - это сложный формат файла. У него есть набор необходимых заголовков, чтобы описать его основные свойства выполнения (16-битный, 32-битный или 64-битный, а также режимы DOS / Win16 / Win32 / Win64 и EXE или DLL). После этого у него должна быть правильная таблица для перемещения адресов. Это не тривиально, и вы должны провести некоторое исследование в формате .EXE, чтобы сделать это правильно.

...