У меня есть адреса инструкций из контекста -->[RIP], и мне нужны соответствующие им символы. Я пробовал использовать dlsym, но он не работает со статическими символами. Итак, я попробовал сделать это вручную. Мне приходится делать это в коде, и я не могу использовать какие-либо утилиты CLI. Вот что я пробовал до сих пор:
Сначала мы получаем абсолютный адрес инструкции для просмотра из общего буфера. пусть этот адрес будет = 563174d510d5. Затем мы находим начальный адрес этого pid из /proc/($pid of engineed)/maps. Карты содержат диапазоны адресов, в которых отображается наш движок. Пусть этот диапазон будет 563174000000-5631763e0000. Как мы видим, наш абсолютный адрес находится в этом диапазоне. Итак, мы вычитаем начальный адрес из нашего адреса, чтобы получить смещение. Offset= 563174d510d5- 563174000000 = D510D5.
3:13
В настоящее время мы ищем это смещение D510D5 в таблице символов. (поиск означает поиск ближайшего начального адреса функции, частью которой она может быть).
Есть ли какие-либо дополнительные вычисления, которые мне не хватает??. Я спрашиваю, потому что разрешение символов в моем алгоритме и разрешение в addr2line немного отличаются. Я чувствую, что мне нужно извлечь что-то еще из смещения D510D5.
Тип файла Elf — DYN (файл общего объекта)
Точка входа 0xd4aa20
Существует 10 заголовков программы , начиная со смещения 64.
Заголовки программ:
Type Off VirtAddr PhysAddr
FileSiz MemSiz Flags Align
PHDR 0x00000000000000040 0x0000000000000040 0x0000000000000040
0x0000 000000000230 0x0000000000000230 Р Е 8
INTERP 0x0000000000000270 0x0000000000000270 0x0000000000000270
0x000000000000001c 0x000000000000001c R 1
[Запрос интерпретатора программы: /lib 64/ld-linux-x86-64.so.2]
ЗАГРУЗИТЬ 0x0000000000000000 0x0000000000000000 0x00000000000000000x00000000023df318 0x00000000023df318 R E 200000
ЗАГРУЗКА 0x00000000023df400 0x00000000025df400 0x00000000025df400
0x00000 00004afd048 0x000000000c6ec200 RW 200000
ДИНАМИЧЕСКИЙ 0x0000000002415080 0x0000000002615080 0x0000000002615080
0x0000000000000270 0x0000000000000270 RW 8
ПРИМЕЧАНИЕ 0x000000000000028c 0x000000000000028c 0x000000000000028c
0x0000000000000044 0x0000000000000044 R 4
TLS 0x00000000023df400 0x00000000025df400 0x00000000025df400
0x00000000000000 38 0x000000000006ea20 R 400
GNU_EH_FRAME 0x000000000218e464 0x000000000218e464 0x000000000218e464
0x000000000004959c 0x000000 000004959c R 4
GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 RW 10
GNU_RELRO 0x00000000023df400 0x00000000025df400 0x00000000025df400
0x0000000000036c00 0x00000000 00036c00 Р 1
Подробнее здесь: https://stackoverflow.com/questions/783 ... -linux-elf
Разрешение адресов инструкций в символы в *86 Linux ELF ⇐ Linux
-
Anonymous
1712734974
Anonymous
У меня есть адреса инструкций из контекста -->[RIP], и мне нужны соответствующие им символы. Я пробовал использовать dlsym, но он не работает со статическими символами. Итак, я попробовал сделать это вручную. Мне приходится делать это в коде, и я не могу использовать какие-либо утилиты CLI. Вот что я пробовал до сих пор:
Сначала мы получаем абсолютный адрес инструкции для просмотра из общего буфера. пусть этот адрес будет = 563174d510d5. Затем мы находим начальный адрес этого pid из /proc/($pid of engineed)/maps. Карты содержат диапазоны адресов, в которых отображается наш движок. Пусть этот диапазон будет 563174000000-5631763e0000. Как мы видим, наш абсолютный адрес находится в этом диапазоне. Итак, мы вычитаем начальный адрес из нашего адреса, чтобы получить смещение. Offset= 563174d510d5- 563174000000 = D510D5.
3:13
В настоящее время мы ищем это смещение D510D5 в таблице символов. (поиск означает поиск ближайшего начального адреса функции, частью которой она может быть).
Есть ли какие-либо дополнительные вычисления, которые мне не хватает??. Я спрашиваю, потому что разрешение символов в моем алгоритме и разрешение в addr2line немного отличаются. Я чувствую, что мне нужно извлечь что-то еще из смещения D510D5.
Тип файла Elf — DYN (файл общего объекта)
Точка входа 0xd4aa20
Существует 10 заголовков программы , начиная со смещения 64.
Заголовки программ:
Type Off VirtAddr PhysAddr
FileSiz MemSiz Flags Align
PHDR 0x00000000000000040 0x0000000000000040 0x0000000000000040
0x0000 000000000230 0x0000000000000230 Р Е 8
INTERP 0x0000000000000270 0x0000000000000270 0x0000000000000270
0x000000000000001c 0x000000000000001c R 1
[Запрос интерпретатора программы: /lib 64/ld-linux-x86-64.so.2]
ЗАГРУЗИТЬ 0x0000000000000000 0x0000000000000000 0x00000000000000000x00000000023df318 0x00000000023df318 R E 200000
ЗАГРУЗКА 0x00000000023df400 0x00000000025df400 0x00000000025df400
0x00000 00004afd048 0x000000000c6ec200 RW 200000
ДИНАМИЧЕСКИЙ 0x0000000002415080 0x0000000002615080 0x0000000002615080
0x0000000000000270 0x0000000000000270 RW 8
ПРИМЕЧАНИЕ 0x000000000000028c 0x000000000000028c 0x000000000000028c
0x0000000000000044 0x0000000000000044 R 4
TLS 0x00000000023df400 0x00000000025df400 0x00000000025df400
0x00000000000000 38 0x000000000006ea20 R 400
GNU_EH_FRAME 0x000000000218e464 0x000000000218e464 0x000000000218e464
0x000000000004959c 0x000000 000004959c R 4
GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000
0x0000000000000000 0x0000000000000000 RW 10
GNU_RELRO 0x00000000023df400 0x00000000025df400 0x00000000025df400
0x0000000000036c00 0x00000000 00036c00 Р 1
Подробнее здесь: [url]https://stackoverflow.com/questions/78302819/resolution-of-instruction-addresses-to-symbols-in-86-linux-elf[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия