Настраивать:
Я пытаюсь написать код, который должен уметь находить структуры в памяти даже с включенным ASLR. К сожалению, мне не удалось найти никаких статических ссылок на эти области, поэтому я предполагаю, что мне нужно использовать метод грубой силы и сканировать память процесса. Я пытался просканировать все адресное пространство приложения, но это не сработало, поскольку некоторые области памяти не выделены и, следовательно, выдают SIGSEGV
при доступе. Теперь я думаю, что было бы неплохо использовать getpid()
, а затем использовать pid для доступа к /proc/$PID/maps
и попытаться проанализировать данные оттуда.
Но мне интересно, есть ли лучший способ определить выделенные регионы? Может быть, даже способ, который не требует от меня доступа к libc (= getpid, open, close
) или возиться со строками?
.. Это означает, что открытие и анализ /proc/self/maps
является подходящим интерфейсом для получения информации об областях памяти, используемых текущим процессом. Вы также можете использовать для этого необработанные системные вызовы, если хотите пропустить библиотеку C.
Символическая ссылка
/proc/self
, по крайней мере, позволяет избежать вызова getpid и форматирования его как строки