Нахождение адреса инструкции в отображенной памяти - PullRequest
0 голосов
/ 27 марта 2019

У меня есть один исполняемый файл с именем «test».Я использую команду «mmap», чтобы отобразить исполняемый файл в адресное пространство другого исполняемого файла с именем «mmap_test».Я не могу определить адрес, по которому будет сопоставлена ​​одна из инструкций из «теста».

Я попытался выполнить следующие шаги:

  1. Извлечьсмещение инструкции, сначала запустив 'gdb test', а затем 'info line', как только я столкнусь с требуемой инструкцией.Итак, на этом шаге я получаю смещение (= смещение текстового раздела + смещение инструкции из текстового раздела).пусть это смещение будет обозначено как (OFF).

  2. Я получаю базовый адрес (BA) с помощью команды mmap.

Итак, япредположим, что сетевой адрес в отображенной памяти (RES) = BA + OFF

Теперь, чтобы найти (OFF), я запускаю 'тест gdb' и говорю 'break main'.Затем я запускаю команду «layout asm».Основной адрес - «0x78a».Как только я запускаю команду 'run', адрес главного сервера изменяется на '0x55555555478a'.

Как получить адрес, соответствующий 0x78a, во вновь отображенную память?

...