Извлечение памяти из программ на С ++
Я заинтересован в извлечении доступа к памяти определенной программы.
Я ищу следующий список, например, для конкретного исполнения:
[R\W] [Address] [numBytes]
R 0x0000012d32a21 0x4
Я уже пробовал valgrind и mtrace, а также их инструменты.
Все они, похоже, возвращают более общую статистику или статистику утечек памяти.
Я заинтересован во всех данных доступа к памяти.
Я часами гуглял по ней и нахожу много статей, посвященных этой проблеме, но не работающего открытого исходного кода.
Ценю твою помощь
2 ответа
Инструмент лакей Valgrind должен дать вам необходимую информацию.
См. http://www.valgrind.org/docs/manual/lk-manual.html параметр --trace-mem= [по умолчанию: нет]
Вы можете посмотреть в Пин.
Из описания:
Pin - это динамический бинарный инструментарий для архитектур наборов команд IA-32 и x86-64, позволяющий создавать инструменты динамического анализа программ.
Вы должны быть в состоянии найти или написать pintool, который делает то, что вам нужно. Например, этот. Связанный пример - это почти то, что вы просите. Вам нужно будет добавить IARG_MEMORYREAD_SIZE
а также IARG_MEMORYWRITE_SIZE
к приборам, но это выглядит довольно тривиально.