Как сохранить исполняемый двоичный файл c внутри источника c?

Мне нужно добавить двоичный код одной из моих программ c в другой двоичный код из программы c. Как мне это сделать? Мне нужно добавить двоичный контент в мой источник c. И использовать этот источник c для добавления этого двоичного содержимого к существующему двоичному файлу.

Это может быть Проблема XY. Вам следует редактировать свой вопрос и немного подробнее объяснить, чего вы пытаетесь достичь фактически.

Jabberwocky 02.05.2018 08:51

По крайней мере, неясно, нужен ли вам двоичный файл в качестве данных для некоторой обработки или вы хотите использовать его функции, поэтому ссылка на сайт это. Да, отредактируйте этот вопрос, пожалуйста.

user2371524 02.05.2018 08:57

Возможно, ваша проблема не связана с C, вы можете посмотреть stackoverflow.com/a/4158997

dvhh 02.05.2018 10:20
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
57
2

Ответы 2

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

Я также уверен, что исполняемый файл может получить доступ к ресурсу и записать его, назвать его исполняемым файлом ОС (Windows / Linux / Mac), а затем запустить его.

(A complete solution would depend on the OS)

ну это Linux

Saheen Shoukath 02.05.2018 11:25

В Unix-подобных (включая Linux) вы можете использовать xxd:

xxd -i program

Это генерирует файл заголовка с содержимым файла в виде массива символов, встраивая его в вашу программу.

В Windows вы можете встроить программу как ресурс. В вашем .rc, используя 200 в качестве идентификатора ресурса:

200 RDCDATA "program.exe"

Тогда в вашей программе:

HANDLE resinfo = FindResource(instance, MAKEINTRESOURCE(200), RT_RCDATA);
HANDLE reshandle = LoadResource(instance, resinfo);
void *data = LockResource(reshandle);
DWORD datasz = SizeOfResource(instance, resinfo);

В любом случае вам нужно будет записать файл в какое-то место, чтобы запустить его. Не забудьте установить исполняемый бит в Unix.

Другие вопросы по теме