eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: stran34, Rio (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Программирование —› ELF- вопрос по формату файла ( REL RELA секции)
Посл.ответ Сообщение

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 5 апреля 2015 16:21 New!
Цитата · Личное сообщение · #1

Доброго времени суток! Появилась проблема, для одной из задач появилась потребность в парсинге структуры эльф файла (да. я Делфист. и делаю парсер на Делфи) в общем - то шло все гладко, пока не добрался до ( REL RELA секции). Конкретно проблема выглядит так.. что часть данные в бинарнике забиты нулями, НО когда ИДА проводит декомпиль, эти места уже проинициализированны данными. Роюсь уже 2ой день. Я никак не могу догнать, как связываются данные секций релоков с данными из проги.
Ссылки на инфу приветствуются. Может даже правильные запросы в гугл помогут.


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 5 апреля 2015 17:35 New!
Цитата · Личное сообщение · #2

ничего не понял но оставлю --> Link <--

Добавлено спустя 11 минут
можешь у ильфака в sdk посмотреть, там чтение ELF в соурсах есть

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 5 апреля 2015 17:56 · Поправил: VodoleY New!
Цитата · Личное сообщение · #3

reversecode пишет:
там чтение ELF в соурсах есть

а носом тыкнуть можешь? я туда никогда не лазил.. elf.ldw декомпилить желания нету.. или в ПМ линку на вычитыватель закинуть.. чтото я совсем подзакипел на этом моменте.. вобщем надо связка секций с артибутом SHT_RELA=4 SHT_REL=9. типа переменщаемые смещения и обьекты и их взаимодействия с остальными данными
стуктуры вроде простенькие.. но как их связать с данными ума не приложу пока что
SHT_REL: данные типа..
+00h dd r_offset;
+04h dd r_info;
SizeOf = 08h
---
SHT_RELA: данные типа..
+00h dd r_offset;
+04h dd r_info;
+08h dd r_addend;
SizeOf = 0Ch


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 5 апреля 2015 17:57 New!
Цитата · Личное сообщение · #4

idasdk66.zip:\idasdk66\ldr\elf

Добавлено спустя 1 минуту
elf.ldw в полном объеме нет, но то что есть в соурсах должно быть достаточно

Добавлено спустя 7 минут
--> Link <--
в конце статьи линки на
--> Link <--
--> Link <--

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 5 апреля 2015 18:09 · Поправил: VodoleY New!
Цитата · Личное сообщение · #5

http://zalexf.narod.ru/texts-elf.htm

самое вминяемое описание ельф формата.. причем на русском
http://geezer.osdevbrasil.net/osd/exec/elf.txt
тоже ничего.. только чисто текст.. но убило сразу то ради чего искал..
1ая строчка
xxx - this document does not yet cover dynamic linking and relocation

Добавлено спустя 4 минуты
ссылки эти я уже находил.. не вошло...

http://prntscr.com/6pvgf2
вот скрин с hiew если так комуто будет понятней.


Ранг: 1002.1 (!!!!)
Статус: Участник

Создано: 5 апреля 2015 18:13 New!
Цитата · Личное сообщение · #6

--> Link <--
там тоже про стуктуру релокайшин вроде описано


Ранг: 126.4 (ветеран)
Статус: Участник
Qt Developer

Создано: 5 апреля 2015 19:58 · Поправил: hors New!
Цитата · Личное сообщение · #7

VodoleY пишет:
как их связать с данными ума не приложу пока что
SHT_REL: данные типа..
+00h dd r_offset;
+04h dd r_info;
SizeOf = 08h


r_offset В данном случае речь идет о виртуальном адресе.
r_info Отсюда берется тип перемещения и индекс в таблице символов.

Тип это первый байт, индекс все остальное.

Чтобы узнать из какой секции брать таблицу символов, то смотрите sh_link("Link" на Вашем скриншоте).

Ранг: 488.4 (мудрец)
Статус: Участник

Создано: 6 апреля 2015 07:11 New!
Цитата · Личное сообщение · #8

hors пишет:
r_offset В данном случае речь идет о виртуальном адресе.
r_info Отсюда берется тип перемещения и индекс в таблице символов.

Тип это первый байт, индекс все остальное.

Чтобы узнать из какой секции брать таблицу символов, то смотрите sh_link("Link" на Вашем скриншоте).

все вы верно говорите. только пока что мазаика не складывается. Кстати.. если комуто понадобится, при парсинге таблицы символов выяснилась одна замечательная весч. Имена как бы поджаты. т.е если у вас в программе присутсвуют 2 переменых VarVarName и VarName , то им в таблице имен будет соответствовать 1 запись VarVarName ,0 . НО при парсинге таблицы символов будет 2 записи 1ая будет указателем на начало строки, 2ая на 3 символа дальше, таким образом получим 2 разных имени

Добавлено спустя 1 минуту
это я к чему веду.. что парсинг голой таблицы имен, вобщемто относительно бесполезное занятие, без учета символьной таблицы

Добавлено спустя 4 часа 25 минут
фу блин.. мать перемать.. сошлось.. тему пока закрывать не буду, может ктото еще полезных ссылок накидает.. по сабжу.. те линки которые помогли

http://em386.blogspot.com/2006/10/resolving-elf-relocation-name-symbols.html
http://docs.oracle.com/cd/E23824_01/html/819-0690/chapter6-54839.html
https://www.freebsd.org/cgi/man.cgi?query=elf(5)&sektion=
http://stackoverflow.com/questions/16847741/processing-elf-relocations-understanding-the-relocs-symbols-section-data-an

возможно это я такой тупой.. но както залип. всем спасибо. если хватить духу.. может даже по русски описание выложу
 eXeL@B —› Программирование —› ELF- вопрос по формату файла ( REL RELA секции)

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS