Таблица символов в разделе .data файла ELF

Судя по вашему описанию, вы получаете не патчи, а обновленные версии файлов. Что вы можете сделать, так это сохранить текстовые файлы от ванильной установки вашего программного обеспечения в ~/sw_current с копией в ~/sw_new. Каждый раз, когда вы получаете обновление, вы должны применять его к ~/sw_new, слепо копируя файлы и создавая реальный diff патч:

diff -rupN ~/sw_current/ ~/sw_new/ > update.patch

, который создаст патч с инструкциями, в каких строках обновлять какие файлы, сохраняя при этом остальные файлы в целости и сохранности. Этот патч должен быть применён к вашим реальным установкам:

cd /path/to/software
patch < update.patch

Обратите внимание, что если вы вручную изменили определённую текстовую строку в вашей системе, а затем эта строка была обновлена, применение патча создаст конфликт, который вам придётся разрешить вручную.

После применения обновления не забудьте удалить вашу ваниль ~/sw_current и скопировать содержимое ~/sw_new в ~/sw_current.

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

2
26.03.2018, 01:44
1 ответ

Раздел .dataсодержит сами данные, , то есть четыре байта, которые содержат значение int5.Секция .symtabсодержит символы, т. е. имена, данные различным частям двоичного файла; имя символа var_global_initуказывает на четыре байта памяти в секции .data.

Вот почему вы видите только одну запись. :В таблице символов есть только один символ. Но вам нужны оба раздела, если вы хотите перейти от имени к значению :, таблица символов сообщает вам, где найти значение, соответствующее символу var_global_init, а раздел данных содержит хранилище для значения.

7
27.01.2020, 21:58

Теги

Похожие вопросы