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

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

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

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

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

1 Ответ

1 голос
/ 19 июня 2020

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

...