Сейчас на форуме: Rio, tyns777, zombi-vadim (+5 невидимых) |
eXeL@B —› Программирование —› ELF- вопрос по формату файла ( REL RELA секции) |
Посл.ответ | Сообщение |
|
Создано: 05 апреля 2015 16:21 · Личное сообщение · #1 Доброго времени суток! Появилась проблема, для одной из задач появилась потребность в парсинге структуры эльф файла (да. я Делфист. и делаю парсер на Делфи) в общем - то шло все гладко, пока не добрался до ( REL RELA секции). Конкретно проблема выглядит так.. что часть данные в бинарнике забиты нулями, НО когда ИДА проводит декомпиль, эти места уже проинициализированны данными. Роюсь уже 2ой день. Я никак не могу догнать, как связываются данные секций релоков с данными из проги. Ссылки на инфу приветствуются. Может даже правильные запросы в гугл помогут. ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 05 апреля 2015 17:35 · Личное сообщение · #2 ничего не понял но оставлю Добавлено спустя 11 минут можешь у ильфака в sdk посмотреть, там чтение ELF в соурсах есть |
|
Создано: 05 апреля 2015 17:56 · Поправил: VodoleY · Личное сообщение · #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 ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 05 апреля 2015 17:57 · Личное сообщение · #4 idasdk66.zip:\idasdk66\ldr\elf Добавлено спустя 1 минуту elf.ldw в полном объеме нет, но то что есть в соурсах должно быть достаточно Добавлено спустя 7 минут в конце статьи линки на |
|
Создано: 05 апреля 2015 18:09 · Поправил: VodoleY · Личное сообщение · #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 если так комуто будет понятней. ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 05 апреля 2015 18:13 · Личное сообщение · #6 |
|
Создано: 05 апреля 2015 19:58 · Поправил: hors · Личное сообщение · #7 VodoleY пишет: как их связать с данными ума не приложу пока что SHT_REL: данные типа.. +00h dd r_offset; +04h dd r_info; SizeOf = 08h r_offset В данном случае речь идет о виртуальном адресе. r_info Отсюда берется тип перемещения и индекс в таблице символов. Тип это первый байт, индекс все остальное. Чтобы узнать из какой секции брать таблицу символов, то смотрите sh_link("Link" на Вашем скриншоте). ----- http://ntinfo.biz |
|
Создано: 06 апреля 2015 07:11 · Личное сообщение · #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 секции) |