Перевести адрес указателя инструкции (в общей библиотеке) в исходную инструкцию - PullRequest
0 голосов
/ 12 октября 2018

Существуют ли какие-либо инструменты или библиотеки, которые можно использовать в Linux для получения оригинальной (исходной) инструкции только из PID и текущего адреса указателя инструкции, даже если IP-адрес в настоящее время указывает на общую библиотеку?

AFAIK это должно быть возможно, поскольку местоположение отображения библиотеки доступно через /proc/[PID]/maps, хотя я не нашел никаких приложений или примеров, делающих это.

Есть предложения?

РЕДАКТИРОВАТЬ: достаточно инструкции по сборке или ближайшего символа (строка исходного кода не обязательно)

1 Ответ

0 голосов
/ 18 октября 2018

Я нашел способ сделать это с помощью GDB:

Интерактив: $ gdb --pid 1566 (gdb) info symbol 0x7fe28b8a2b79 pselect + 89 in section .text of /lib/x86_64-linux-gnu/libc.so.6 (gdb) info symbol 0x5612550f14a4 copy_word_list + 20 in section .text of /usr/bin/bash (gdb) info symbol 0x7fe28b878947 execve + 7 in section .text of /lib/x86_64-linux-gnu/libc.so.6 Показывает именно то, что я хотел!

Он также может быть в сценарии: gdb -q --pid PID --batch -ex 'info symbol HEX_SYMBOL_ADDR'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...