Мне трудно разобраться между физическим и виртуальным адресом. У меня есть двоичный файл, который я загружаю в дизассемблер IDA, который показывает мне адрес, такой как 0x000008a1
. Когда я отлаживаю тот же двоичный файл в GDB, он показывает мне адрес как 0x5555555508a1
.
Когда я делаю info proc mappings
в gdb
, это дает мне необычный адрес в libc 0x7ffff7a0d000
, который начинается с 0x7ff ....
Итак, я хочу знать
1.) Почему GDB добавляет 0x0x55555555
перед правильным адресом, который IDA показывает
2.) Что это за адреса? Виртуальный или физический?
3.) Почему адрес libc начинается с 0x7ffff7a
?
4.) Как определить физический адрес запущенного процесса?