Как получить плоский двоичный файл из исполняемого файла в C

Как получить блок двоичного файла из раздела .text в исполняемом файле?

Я знаю, что objcopy может помочь, используя:

objcopy --only-section=.text --output-target binary a.out a.out.bin

Но было бы намного лучше, если бы я мог реализовать ту же цель в вызове функции, используя библиотеку BFD. Есть ли способ вызвать objcopy с помощью вызовов функций?


person zhoubot    schedule 04.02.2014    source источник
comment
Каково ваше определение плоского двоичного кода, то есть для чего вы собираетесь его использовать?   -  person PlasmaHH    schedule 04.02.2014
comment
Я уверен, что это возможно с BFD, но, по моему беглому взгляду, я не думаю, что это простая задача. Что делает objcopy, так это копирует содержимое раздела.   -  person Mats Petersson    schedule 04.02.2014
comment
Плоский двоичный файл — это двоичный файл без заголовков ELF. Я собираюсь выполнить статический анализ двоичного файла, для которого требуется только двоичный блок из раздела .text.   -  person zhoubot    schedule 05.02.2014


Ответы (1)


Вероятно, вы ищете функцию в binutils/bfd libs. Вы можете найти документ по адресу http://www.delorie.com/gnu/docs/binutils/bfd_toc.html и я думаю, что функция, которую вы ищете, это:

boolean bfd_get_section_contents (bfd *abfd, asection *section,
    PTR location, file_ptr offset,
    bfd_size_type count);

чей документ можно найти по адресу http://www.delorie.com/gnu/docs/binutils/bfd_57.html

person hivert    schedule 04.02.2014