Может ли AddressSanitizer (или любой другой инструмент) обнаруживать ошибки памяти в двоичных файлах собственного кода Android без необходимости компиляции?

AddressSanitizer от Google обнаруживает ошибки памяти в собственном коде Android. Однако требуется, чтобы целевой двоичный файл (т. е. исполняемый файл или библиотека ) перекомпилировать с любыми необходимыми флагами и настройками:

AddressSanitizer (ASan) — это быстрый инструмент на основе компилятора для обнаружения ошибок памяти в машинном коде.

Существует ли инструмент, который может обнаруживать ошибки памяти Android без необходимости какой-либо перекомпиляции целевого двоичного файла? Вот некоторые мысли о том, как будет выглядеть такой инструмент:

  • Инструмент должен перехватывать/перехватывать соответствующие функции, связанные с памятью, в libc.so (например, malloc, free, calloc, realloc), подобно Frida. способность перехватывать любую функцию собственного кода.
  • Инструмент должен работать, вводя его в пространство процесса. С этого момента все должно «просто работать».
  • Он также должен перехватывать как аппаратные сбои, так и программные исключения (например, сбои сегментации) для обнаружения ошибки памяти.
  • Было бы разумно предположить, что этот инструмент не будет таким мощным, как AddressSanitizer на основе компилятора, но этого следовало ожидать.

person Moshe Rubin    schedule 16.06.2020    source источник


Ответы (1)


https://github.com/frida/frida-gum

Вспомогательные библиотеки для разработчиков, которым нужна высокая степень детализации:

Отслеживание распределения кучи и проверка утечек.

https://github.com/frida/frida-gum/tree/master/libs/gum/heap

Профилирование с обратным вызовом инспектора в худшем случае.

https://github.com/frida/frida-gum/blob/7e4c5b547b035ae05d2f9e160652101bf741e6c3/libs/gum/prof/gumprofiler.h#L40-L42 https://github.com/frida/frida-gum/tree/master/libs/gum/prof

person whoopdedoo    schedule 18.06.2020
comment
Я довольно часто использую frida-trace и знаю о базовой структуре Gum, но вы подтолкнули меня к тому, чтобы изучить Gum поближе — спасибо! - person Moshe Rubin; 20.06.2020