LINUX.ORG.RU

Добавить таблицу секций к пострипаному файлу

 ,


0

2

В общем по определённой надобности есть необходимость добавить секцию с кастомными данными к пожатому upx бинарнику. upx как парни правильные - итоговый результат стрипают от всего ненужного.

Вроде бы всё должно быть просто: objcopy --add-section .mysection=./data.bin --set-section-flags .mysection=strings,readonly binary.compressed binary.copy

А вот хрен там, как выяснилось ни гнутые ни ллвмнутые утилиты не умеют создавать таблицу секций в пострипаном файле. гнутый objcopy валится с ошибкой, ллвмнутый просто тихо ничего не делает.

Вот и вопрос: я что-то упускаю и это можно сделать доступными утилитами, или продолжать душить змею и лепить кастомный скрипт модифицирующий elf?

Патчить upx не предлагать.

UPD: В итоге решил просто дописывать блоб в конец файла, оказалось быстрее в реализации.

★★★★★

Последнее исправление: Dark_SavanT (всего исправлений: 2)

Ответ на: комментарий от anonymous

Мне этот патч тогда с ненулевой вероятностью придётся тащить в апстрим, а заниматься этим совсем неохота, да и нужно, судя по тому, что этого там нет, кроме меня никому.

Dark_SavanT ★★★★★
() автор топика
Ответ на: комментарий от Dark_SavanT

А objdump -h их тоже не показывает? Что он выводит?

Я думал речь про стрип который команда strip делает а upx видимо делает больше.

А, ну и ещё: а ты уверен что даже если ты добавишь секцию - она после запуска и upx-распаковки останется на месте?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от firkax

strip выносит только символы, емнип. upx же работает по-другому, он пакует исходный бинарь и снаружи навешивает свой elf заголовок и распаковочный код. Так что там таблицы секций изначально нет, скорее всего.

Dark_SavanT ★★★★★
() автор топика
Ответ на: комментарий от firkax

А, ну и ещё: а ты уверен что даже если ты добавишь секцию - она после запуска и upx-распаковки останется на месте?

Мне секция нужна на бинарнике, я её читать буду сам, что там будет в памяти после распаковки не особо важно.

Dark_SavanT ★★★★★
() автор топика
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от Dark_SavanT

Если сам читать то просто допиши блобом в конец с какой-нить сигнатурой чтоб не перепутать.

Я не видел как файлы пожатые upx выглядят но возможно там и правда некуда секцию вставить.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от dataman

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

Видимо всё таки просто буду дописывать кусок в конец и оттуда читать, сломать нчиего не должно по идее.

Dark_SavanT ★★★★★
() автор топика
Ответ на: комментарий от firkax

Я не видел как файлы пожатые upx выглядят но возможно там и правда некуда секцию вставить.

не умеют создавать таблицу секций в пострипаном файле

Там нет таблицы секций вообще.

Если сам читать то просто допиши блобом в конец с какой-нить сигнатурой чтоб не перепутать.

Этот вариант я оставлял «на потом».

Dark_SavanT ★★★★★
() автор топика

Возможно сейчас глупость скажу, давно линкеры не смотрел и не вникал в детали треда. Но если нужно что-то сильно кастомизировать, то может быть проще сначала разобрать весь файл по секциям, а потом собрать обратно как надо через linker script?

snizovtsev ★★★★★
()
Последнее исправление: snizovtsev (всего исправлений: 1)