Инструмент для простой модификации файла elf?

В моих встроенных проектах есть этап постобработки, который заменяет значение в исполняемом файле CRC (некоторых разделов) флэш-памяти. Этот шаг может быть выполнен только после связывания, поскольку это первая возможность CRC изображения. В прошлом формат файла был COFF, и я создал специальный инструмент для исправления.

Средство разработки переключено на ELF, поэтому мне нужно повторно внедрить патчер CRC. Прежде чем я это сделал, я подумал, что поищу для этого уже существующий инструмент. Компилятор основан на gcc, но я не вижу какой-либо комбинации ld и nm и readelf , которые могут выполнить эту работу. Поиск в Google не дал результатов.

Мой нынешний инструмент использует нм , чтобы найти адрес для исправления, и вызывает средство исправления с адресом, ожидаемым значением (для предотвращения перезаписи неправильных данных) и новым значением CRC. CRC вычисляется в "шестнадцатеричном" формате исполняемого файла (который я также исправляю), поэтому, к счастью, мне не нужно переделывать эту часть.

Я могу реализовать это с помощью libelf и пользовательского кода снова , но прежде чем я это сделаю, он уже существует?

Есть ли лучший способ достичь моей цели - поместить CRC исполняемого файла в исполняемый файл, чтобы он был доступен для приложения?

6
задан Doug Currie 1 October 2010 в 20:40
поделиться