Если вы когда -либо смотрели приложения Android, вы знаете, чтобы оценить способность анализа вашей цели на самом продвинутом уровне. Динамический анализ программы даст вам довольно хороший обзор ваших приложений и общего поведения. Однако иногда вы захотите просто проанализировать свое приложение, не запустив его. Вы захотите взглянуть на его компоненты, проанализировать, как они взаимодействуют и как данные испорчены от одной точки к другой.
Это был основным фактором, способствующим развитию Smalisca . Есть действительно несколько веских причин для анализа статического кода перед динамическим . Прежде чем взаимодействовать с приложением, мне нравится знать, как было создано приложение, если есть какой -либо API, и генерировать все виды графиков потока вызовов . На самом деле графики были очень важны для меня, так как они визуализируют вещи. Вместо того, чтобы прыгать из файла в файл, от класса к классу, я просто смотрю на графики.
Хотя здание графика было важной причиной для меня кодировать такой инструмент, Smalisca имеет некоторые другие аккуратные функции, о которых вы должны прочитать.
На данный момент есть несколько основных функций, таких как:
диапазон
Вы можете проанализировать целый каталог файлов smali и извлечь :
Затем вы можете экспортировать результаты как JSON или SQLite .
Получите добычу на странице анализа для получения дополнительной информации.
анализ
После экспорта результатов вы получите интерактивную подсказку , чтобы поближе взглянуть на ваши проповеденные данные. Вы можете искать классы, свойства, методы и даже вызовы методов. Затем вы можете применить несколько фильтров к вашим критериям поиска, например:
smalisca> sc -c class_name -p test -r 10 -x path -s class_type
Эта команда будет искать 10 (-r 10) классы, которые содержат тест шаблона (-p) в их имени класса (-c). После этого команда исключит путь столбца (-x PATH) из результатов и сортирует их по типу класса (-s).
Давайте посмотрим на другой пример:
smalisca> scl -fc com/android -fm init -r 10
Это будет искать все вызовы методов , имя вызывного класса, содержит шаблон com/android (-fc). Кроме того, мы можем искать вызовы, происходящие из методов, чье имя содержат шаблон init (-fm).
Вы, конечно, можете прочитать свои команды из файла и проанализировать свои результаты партией - как манера:
$ CAT CMD.TXT sc -c class_name -p com/gmail/xlibs -r 10 -x path покидать $ ./smalisca.py Analyzer -i Results.sqlite -f sqlite -c cmd.txt ...
Иметь добычу на странице анализа для получения дополнительной информации.
веб -API
Smalisca предоставляет веб -сервис REST, чтобы легко взаимодействовать с результатами, просто используя веб -клиент. Таким образом, вы можете получить доступ к данным в своем собственном (причудливом) веб -приложении и иметь чистое разделение между бэкэнд и фронтом.
Узнайте больше о доступном API REST на странице Web API.
визуализация
Я думаю, что это самая ценная особенность Smalisca . Способность визуализировать ваши результаты структурированным образом делает вашу жизнь более комфортной. В зависимости от того, что вас интересует, в этом инструменте есть несколько функций чертежа графика, которые я хотел бы продвигать.
Сначала вы можете нарисовать свои пакеты, включая их классы, свойства и методы:
smalisca> dc -c class_name -p test -f dot -o /tmp/classes.dot :: info написал результаты в /тмп /classes.dot Смалиска>
Это будет сначала поиск классов, имя которого содержит тест , а затем экспортирует результаты на языке DOT Graphviz . Затем вы можете вручную генерировать график, используя Dot , Neato , Circo и т. Д. Или вы делаете это с помощью интерактивной подсказки:
smalisca> dc -c class_name -p test -f pdf -o /tmp/classes.pdf --prog neato :: info написал результаты в /тмп /classes.pdf Смалиска>
Получите добычу на странице рисования для получения дополнительной информации.
Выходные результаты как таблица.
Основные отношения между классами и модулями.
Посмотрите на страницу экрана.
Обратитесь к странице установки. Требования:
После установки инструмента вы можете сначала забрать приложение для Android (APK), чтобы воспроизвести. Используйте APKTOOL или мой собственный инструмент Adus, чтобы сбрасывать контент APK. Для простоты я буду использовать Fakebanker , который я проанализировал в предыдущем сообщении в блоге.
Но сначала давайте посмотрим на основные варианты инструментов:
$ smalisca -help
/ _ __
____ ___ ___ __ // / _ ____ ___ __
/', __ /' __` __` /'__ ` / /', __ /'___ /' __`
/ __, `/ / / / l . _ _ / __,` / __ // l . _
/ ____/ _ _ _ __/.
/___//_//_//_//__//_//____//_//___//____//__//_//
----------------------------------------------------------------------------------
:: Автор: Victor <Cyneox> dorneanu
:: desc: инструмент анализа статического кода для файлов smali
:: url: http://nullsecurity.net, http: // {blog, www} .dornea.nu
:: Версия: 0.2
----------------------------------------------------------------------------------
Использование: Smalisca (субъекты ...) [опции ...] {аргументы ...}
[-] Инструмент анализа статического кода (SCA) для файлов Baskmali (SMALI).
Команды:
анализатор
[-] Проанализируйте результаты, используя интерактивную подсказку или в командной строке.
анализатор
[-] Разбор файлов и извлечение данных на основе синтаксиса Smali.
веб -
[-] Анализ результатов с использованием веб-API.
Необязательные аргументы:
-h, -help показывать это сообщение справки и выход
-Вывод отладки Debug Toggle
-Крайт подавляет все выводы
-Log-level {Debug, Info, Warn, ошибка, критическая}
Изменить уровень журнала (по умолчанию: информация)
-v, -Версия и выход версии программы Show
Сначала я расскажу о каталоге для Smali Files, прежде чем делать анализ:
$ smalisca parser -l ~/tmp/fakebanker2/сброс/smali -s java -f sqlite -o fakebanker.sqlite ... :: Информация об анализе. :: Информация закончила анализ! :: Информация экспорта результатов в SQLite :: Информационная извлечение классов ... :: Информация Извлекать свойства класса ... :: Информация Извлекать методы класса ... :: Информация Извлекать звонки ... :: Информационная коммита изменений в SQLite DB :: Информация написала результаты в Fakebanker.sqlite :: Информация закончила сканирование
Также посмотрите на страницу разбора для получения дополнительной информации.
Теперь вы можете делать все, что хотите, с генерируемым экспортом. Вы можете осмотреть SQLite DB напрямую или использовать функции анализа Smaliscas :
$ smalisca -анализатор -f sqlite -i fakebanker.sqlite ... smalisca> sc -x path -r 10 +----+-------------------------------------------------------------------------------------+--------------------+------------------------------+-------+ | id | class_name | class_type | class_package | глубина | +----+-------------------------------------------------------------------------------------+--------------------+------------------------------+-------+ | 1 | Landroid/Support/V4/Net/ConnectivityManagerCompat | публичный | Landroid.support.v4.net | 5 | | 2 | Landroid/Support/V4/View/AccessibilityDelegateCompat $ AccessibilityDelegateJellyBeanimpl | | Landroid.support.v4.view | 5 | | 3 | Landroid/Support/v4/view/viewcompat $ viewcompatimpl | Интерфейс абстрактный | Landroid.support.v4.view | 5 | | 4 | Landroid/Support/V4/App/ActivityCompathoneComeComb | | Landroid.support.v4.app | 5 | | 5 | Landroid/Support/v4/app/nosavestateframelayout | | Landroid.support.v4.app | 5 | | 6 | Landroid/Support/V4/Net/ConnectivityManagerCompathoneCombmr2 | | Landroid.support.v4.net | 5 | | 7 | LCOM/GMAIL/XPACK/BUILDCONFIG | публичный финал | Lcom.gmail.xpack | 4 | | 8 | Landroid/Support/V4/App/BackstackRecord $ OP | окончательный | Landroid.support.v4.app | 5 | | 9 | Landroid/Support/V4/App/FragmentManagerImpl | окончательный | Landroid.support.v4.app | 5 | | 10 | Landroid/Support/v4/app/sharecompat $ sharecompatiMpl | Интерфейс абстрактный | Landroid.support.v4.app | 5 | +----+-------------------------------------------------------------------------------------+--------------------+------------------------------+-------+
Также обратитесь на страницу анализа для более доступных команд и параметров.
Пожалуйста, обратитесь к странице рисования для полных примеров.
Smalisca была выпущена по лицензии MIT . Посмотрите на файл лицензии .
Этот инструмент посвящен LICă . Большое спасибо также идите:
Стивен Макаллистер
- Большое спасибо за все эти часы, полные отладки APK и отличных идей
Мой GF
- Большое спасибо за терпение и понимание!
nullsecurity.net
- Взломать планету!