У меня есть один исполняемый файл с именем «test».Я использую команду «mmap», чтобы отобразить исполняемый файл в адресное пространство другого исполняемого файла с именем «mmap_test».Я не могу определить адрес, по которому будет сопоставлена одна из инструкций из «теста».
Я попытался выполнить следующие шаги:
Извлечьсмещение инструкции, сначала запустив 'gdb test', а затем 'info line', как только я столкнусь с требуемой инструкцией.Итак, на этом шаге я получаю смещение (= смещение текстового раздела + смещение инструкции из текстового раздела).пусть это смещение будет обозначено как (OFF).
Я получаю базовый адрес (BA) с помощью команды mmap.
Итак, япредположим, что сетевой адрес в отображенной памяти (RES) = BA + OFF
Теперь, чтобы найти (OFF), я запускаю 'тест gdb' и говорю 'break main'.Затем я запускаю команду «layout asm».Основной адрес - «0x78a».Как только я запускаю команду 'run', адрес главного сервера изменяется на '0x55555555478a'.
Как получить адрес, соответствующий 0x78a, во вновь отображенную память?