Как извлечь массив из исполняемого файла?

Я хочу выполнить обратный этот вопрос.

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

Кажется, что objcopy может быть полезен здесь, но я еще не придумал правильное заклинание.

(Правка: уточните вопрос, я каким-то образом убрал суть при редактировании изначально...)


person bstpierre    schedule 27.04.2010    source источник
comment
Что значит обратный? - этот вопрос заключается в том, как встроить файл в исполняемый файл в виде массива.   -  person Stephen    schedule 27.04.2010
comment
Я не уверен, что полностью понимаю вопрос, но не будет ли это печатать массив по байтам в файл?   -  person tiftik    schedule 27.04.2010
comment
tiftik: я хочу извлечь встроенный файл, не запуская исполняемый файл.   -  person bstpierre    schedule 27.04.2010


Ответы (2)


Если вы поместите встроенный файл в свой собственный раздел, я думаю, вы можете использовать objcopy для извлечения этого раздела в необработанный выходной файл. Посмотрите в gcc __attribute__((section("embedded_file") )) Или, если вы получаете файл в exe каким-то другим способом, используя компоновщик, вы должны иметь возможность поместить его в другой раздел другим способом, но я не знаком с этим.

person nategoose    schedule 27.04.2010
comment
Спасибо. Я тоже смотрел на это немного, я попробую. - person bstpierre; 29.04.2010

Поместите узнаваемый шаблон в начало массива, чтобы помочь вам найти данные в файле.

Если вы создаете исполняемый файл Windows, поместите данные в двоичный ресурс в исполняемом файле, а не просто закодируйте их в массив — тогда вы сможете использовать обычные функции ресурсов Windows (FindResource, LoadResource и т. д.), чтобы получить данные (хотя это немного сложнее, чтобы правильно работать, чем кажется на первый взгляд вроде должно быть).

person Jerry Coffin    schedule 27.04.2010
comment
Это исполняемый файл Linux (elf32-powerpc). Я ищу что-то более надежное, чем поиск шаблонов. - person bstpierre; 27.04.2010
comment
@bstpierre: несколько человек реализовали проекты по добавлению ресурсоподобных возможностей в исполняемые форматы Unix. Вы можете посмотреть один пример: taniwha.com/~paul/res. . - person Jerry Coffin; 27.04.2010