2017-01-24 3 views
1

Я пытаюсь разработать инструмент, который в основном анализирует Android приложения APK и подсчитывает количество вызовов метода конкретных API (например, android.app.AlarmManager.set())Как я могу подсчитать вызовы методов внутри APK? (Используя .smali формат)

1. Какой подход вы рекомендуете ?

До сих пор я использовал APKTool, и теперь у меня есть .smali. Однако для того же источника Java, я могу иметь несколько файлов:

  • ExportAsyncTask$1.smali
  • ExportAsyncTask$2.smali
  • ExportAsyncTask$3.smali
  • ExportAsyncTask$4.smali

2. Что эти несколько файлов означают?

3. Результирующие файлы .smali также включают в себя внешние библиотеки, которые я хотел бы оставить без анализа. Как я могу это сделать?

ответ

1

1. Какой подход вы рекомендуете?

Да, Apktool может использоваться для вашей задачи. Каждый класс java в APK будет представлен файлом .smali в дереве каталогов, представляющем пакеты. Smali - это язык виртуальной машины Android. Язык намного проще, чем Java, и, следовательно, проще для анализа. В вашем случае вам нужно найти коды invoke и строки Landroid/app/AlarmManager;->set. Если вы работаете в Linux, вы можете, например, grep и считать их. В Windows у вас есть текстовые редакторы, такие как Notepad ++, которые позволяют текстовый поиск в нескольких файлах.

2. Что означают эти несколько файлов?

В Java есть внутренние классы и неявные внутренние классы. Первый появится в OutherClass$InnerClass.smali, а позже, не имея собственного имени, получите номера, например OuterClass$1.smali. Иногда вы даже получаете более глубокие уровни, такие как a$b$c$1.smali.

3. Результирующие файлы .smali также включают в себя внешние библиотеки, которые я хотел бы оставить без анализа. Как я могу это сделать?

У вас нет точного способа сделать это. Но, вообще говоря, когда вы смотрите на дерево пакетов/каталогов многих образцов, вы обычно понимаете шаблон. Например. обычно код приложения находится в com.* пакете и android.*, org.* и uk.* включают библиотеки. После такой проверки вы просто исключаете эти каталоги из своего поиска.

Смежные вопросы