Я новичок в использовании инструмента пин-кодов Intel и хочу отслеживать определенный цикл в двоичном файле, но я обнаружил, что при каждом запуске адрес команд, изменяемых при каждом запуске, как мне найти конкретную инструкцию или определенный цикл, даже если он меняться в каждом заезде?
Изменить 0:
У меня есть следующий адрес, одним из которых является RVA 🙁 первая часть адреса (маленький адрес) является постоянной для каждого запуска, но последняя секция (большой адрес) изменяется для каждого запуска)
Адрес loop_repeation No._of_Instruction_In_Loop
4195942 1 8
4195972 1 3
……. … …
140513052566480 1 2
…… … …
адрес инструкций менялся при каждом запуске, как найти конкретную инструкцию или определенный цикл, даже если он изменился при каждом запуске?
Это, вероятно, потому что у вас есть ASLR включен (который включен по умолчанию в Ubuntu). Если вы хотите, чтобы анализируемая программа загружалась по одному и тому же адресу при каждом запуске, вы можете:
1) Отключить ASLR:
sysctl -w kernel.randomize_va_space=0
как объяснил здесь.$> setarch $(uname -m) -R /bin/bash
как объяснил здесь.2) Рассчитайте дельту (смещения) в вашем pintool:
Для каждого адреса, которым вы манипулируете, вам нужно использовать RVA (Относительный виртуальный адрес), а не полный VA (виртуальный адрес).
Пример:
Просто рассчитайте смещения циклов по базовому адресу:
Поскольку оба получаемых смещения одинаковы, вы знаете, что у вас точно такая же инструкция, независимо от базового адреса программы.
Как это сделать в вашем pintool:
IMG_FindByAddress
найти соответствующее изображение (модуль).IMG_LowAddress
получить базовый адрес модуля.Теперь вы можете сравнить RVA между ними и посмотреть, являются ли они одинаковыми (они также должны быть в одном модуле).
Очевидно, что это не работает для кода JITed, поскольку код JITed не имеет исполняемого модуля (например, mmap () [linux] или VirtualAlloc () [windows]) …
в заключение есть хорошая бумага (довольно старый сейчас, но все еще применимый) при выполнении обнаружения петли с помощью булавки, если это может вам помочь.