Определение размера исходной строки в ASM по смещению в журнале сбоев Android

#android #assembly #crash #line-numbers #symbolicatecrash

#Android #собрание #авария #номера строк #символический крэш

Вопрос:

У меня сбой в Crashlytics, который происходит в libc.memcpy:

 backtrace:  #00 pc 0005d158 /apex/com.android.runtime/lib/bionic/libc.so (__memcpy_a53 40) (BuildId: 1980ba02db10292648c1fc24639ec9c1)  ...  

На cs.android.com Я могу найти соответствующий memcpy.S (Android 10):

бионический/libc/arch-arm/cortex-a53/бионический/memcpy.S

Но теперь я хочу найти точное место в ASM, где произошел сбой. Как я могу определить номер строки из __memcpy_a53 40?

Комментарии:

1. Если у вас нет отладочной информации, вам необходимо выполнить реинжиниринг кода. Обратите внимание, что ошибка вряд ли будет в самом memcpy, вероятно, он передал неправильные аргументы, поэтому я бы вместо этого посмотрел на вызывающего абонента.

2. Возьмите objdump -d на себя libc.so файл. Нарушающая инструкция находится со смещением 64 (40 шестнадцатеричных) от начала __memcpy_a53 . Найдите ту же инструкцию ( окружение) в memcpy_base.S .