<сильный>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.*
включают библиотеки. После такой проверки вы просто исключаете эти каталоги из поиска.
person
Ilia Barahovski
schedule
24.01.2017