Я хотел бы изменить глобальные структуры в файле ELF. Сначала я хотел бы узнать, является ли глобальная переменная структурой или нет? Но единственная информация, которую я вижу, - это имя и размер переменной.Как найти тип переменной в файле ELF?
ответ
Вы не можете найти его. Формат ELF имеет очень ограниченную информацию о типе (и не знает, является ли какая-либо глобальная переменная struct
или int
, она знает в основном переменную sizeof
). См. elf(5).
Однако, если вы скомпилируете свою программу (и библиотеки, которые она использует) для поддержки отладки (например, с помощью g++ -Wall -g
). то файл ELF содержит дополнительные разделы отладки, часто используя формат DWARF. Эта информация может быть удалена из файла ELF с помощью команды strip
. См. strip(1) & readelf(1) & objdump(1).
Но вы действительно хотите использовать source code. Так что получите источник программы (так как Linux в основном состоит из free software, это вообще возможно) и перекомпилируйте его (и, конечно, изучите исходный код программы). Возможно, вы хотите (но это требует нескольких недель работы) для настройки вашего компилятора (например, путем написания собственного плагина GCC или использования GCC MELT или настройки вашего компилятора Clang) и использовать его для перекомпиляции кода (и обрабатывать конкретно все объявления глобальных переменных).
- 1. Поиск .init в файле ELF
- 2. Как найти конкретные инструкции в двоичном файле ELF
- 3. Libdwarf - как извлечь размер и тип переменной из файла ELF
- 4. Отображение сегмента в файле ELF
- 5. Где глобальная переменная в файле elf
- 6. В файле ELF нет .debug_str?
- 7. Как считать статический инициализатор в файле ELF?
- 8. Как сделать дубликаты разделов в файле ELF
- 9. Измените инструкции asm в двоичном файле ELF
- 10. Как проверить тип данных переменной в двоичном файле в c
- 11. Изменить значения переменных в файле ELF?
- 12. Как найти тип, указанный во включенном файле?
- 13. Прочтите запись GOT в двоичном файле Elf
- 14. Найти смещение начала функции в ELF
- 15. Где находится таблица импорта в файле ELF?
- 16. Чтение содержимого заголовка программы в файле ELF
- 17. выполнить функцию из адреса в файле elf
- 18. Каково назначение разделов «.group» в файле Elf?
- 19. Несколько ISA в том же файле ELF
- 20. Общая библиотека абсолютного пути в файле ELF
- 21. Как найти раздел ELF для символа DWARF?
- 22. Как найти номер заголовка программы ELF
- 23. Как указать тип файла для переменной, в файле модели?
- 24. Как отобразить тип данных переменной в файле питона
- 25. Как узнать, какой тип информации об отладке находится в объектном файле ELF?
- 26. Как получить тип переменной?
- 27. Как я могу сделать файл .o в файле .elf?
- 28. Установка переменной «как тип»
- 29. Как просмотреть имена функций и параметры, содержащиеся в файле ELF?
- 30. В файле ELF, как определить адрес для _start?
Сведения о типе будут храниться только в отладочной информации; информация не нужна, если программа запускается иначе. То, что вы делаете, похоже, ошибочно - ожидайте неудачи. Код с использованием структуры будет тесно связан с формой/размером структуры, которая использовалась при компиляции источника. Если вы измените это, ваша программа будет работать неправильно. –
В файле ELF нет «переменных» или «типов». Это концепции исходного кода. Файл ELF содержит только объемные данные и символы, указывающие на начало данных. Если вам нравится, все файлы эльфа имеют 'char []' и 'void *'. –
Почему вы спрашиваете? Ваш вопрос непонятен (строгое определение ELF определяет его структуру) и, вероятно, будет проблемой [XY] (http://xyproblem.info). Поэтому вы должны ** изменить свой вопрос **, чтобы мотивировать его, объясните больше. –