2013-04-16 2 views
3

Я работаю над программой для оптимизации посткомпиляции. Поскольку я заметил, что есть несколько особых случаев, которые gcc просто не оптимизирует, даже при -O3.Как я могу программно редактировать двоичный файл (x86)?

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

+1

Разберите, редактировать разобранный код с любыми инструментами вам нравится, а затем собрать? – nrz

+3

Не можете ли вы вместо gcc вывести asm (опция -S), отредактировать этот файл и скомпилировать отредактированный файл .s? Или еще лучше, патч gcc, чтобы он работал лучше? Кстати, есть ли в gcc's bugzilla запись об этих пропущенных оптимизациях? –

+1

См. Objdump и его код. –

ответ

0

Предполагается, что вы смотрите на исполняемый формат ELF. Скажите, если вы больше думаете о PE или Mach-O.

Вы действительно можете найти несколько библиотек или инструментов для редактирования формата ELF и его изменения. Среди прочего, здесь есть небольшой список таких инструментов:

Смежные вопросы