Si alguna vez ha examinado las aplicaciones de Android, sabe que aprecia la capacidad de analizar su objetivo en el nivel más avanzado. El análisis de programas dinámicos le brindará una visión general bastante buena de sus actividades de aplicaciones y comportamiento general. Sin embargo, a veces solo querrá analizar su aplicación sin ejecutarla. Querrá echar un vistazo a sus componentes, analizar cómo interactúan y cómo los datos se contaminan de un punto a otro.
Este fue el factor principal impulsando el desarrollo de Smalisca . De hecho, hay algunas buenas razones para un análisis de código estático antes del dinámico . Antes de interactuar con la aplicación, me gusta saber cómo se ha construido la aplicación, si hay alguna API y genere todo tipo de gráficos de flujo de llamadas . De hecho, los gráficos han sido muy importantes para mí desde que visualizan las cosas. En lugar de saltar de un archivo a otro, de clase a clase, solo miro los gráficos.
Si bien la construcción de gráficos ha sido una razón importante para codificar dicha herramienta, Smalisca tiene algunas otras características ordenadas sobre las que debe leer.
En este momento hay algunas funcionalidades importantes como:
analizador
Puede analizar un directorio completo de archivos smali y extraer :
Luego puede exportar los resultados como JSON o SQLite .
Tenga un botín en la página de análisis para obtener más información.
analización
Después de exportar los resultados, obtendrá un aviso interactivo para observar más de cerca sus datos analizados. Puede buscar clases, propiedades, métodos e incluso llamadas de métodos. Luego puede aplicar varios filtros a sus criterios de búsqueda como:
smalisca> sc -c class_name -p test -r 10 -x ruta -s class_type
Este comando buscará 10 (-r 10) clases que contienen la prueba de patrón (-p) en su nombre de clase (-c). Luego, el comando excluirá la ruta de la columna (-x ruta) de los resultados y los ordenará por el tipo de clase (-s).
Echemos un vistazo a otro ejemplo:
smalisca> scl -fc com/android -fm init -r 10
Esto buscará todas las llamadas de método cuyo nombre de clase de llamada contiene el patrón com/android (-fc). Además, podemos buscar llamadas que se originan en métodos cuyo nombre contiene el patrón init (-fm).
Por supuesto, puede leer sus comandos de un archivo y analizar sus resultados de una manera por lotes :
$ Cat cmd.txt sc -c class_name -p com/gmail/xlibs -r 10 -x ruta abandonar $ ./smalisca.py Analyzer -I Results.sqlite -f SQLite -C CMD.TXT ...
Tener un botín en la página de análisis para obtener más información.
API web
Smalisca proporciona un servicio web REST para interactuar fácilmente con los resultados simplemente utilizando un cliente web. De esta manera, puede acceder a datos en su propia aplicación web (elegante) y tener una separación limpia entre backend y frontend.
Lea más sobre la API REST disponible en la página de la API web.
visualizante
Creo que esta es la característica más valiosa de Smalisca . La capacidad de visualizar sus resultados de manera estructurada hace que su vida sea más cómoda. Dependiendo de lo que le interese, esta herramienta tiene varias características de dibujo de gráficos que me gustaría promover.
Al principio puede dibujar sus paquetes, incluidas sus clases, propiedades y métodos:
smalisca> dc -c class_name -p test -f dot -o /tmp/classes.dot :: info escribió resultados a /tmp/classes.dot Smalisca>
Esto primero buscará clases cuyo nombre de clase contenga prueba y luego exportará los resultados en el lenguaje DOT GraphViz . Luego puede generar manualmente un gráfico usando DOT , Neato , Circo , etc. o lo hace usando el aviso interactivo:
smalisca> dc -c class_name -p test -f pdf -o /tmp/classes.pdf --prog loito :: info escribió resultados a /tmp/classes.pdf Smalisca>
Tenga un botín en la página de dibujo para obtener más información.
Resultados de salida como tabla.
Relaciones básicas entre clases y módulos.
Eche un vistazo a la página de capturas de pantalla.
Consulte la página de instalación. Requisitos:
Después de instalar la herramienta, es posible que primero desee elegir una aplicación Android (APK) para jugar. Use APKTool o mi propia herramienta ADU para descargar el contenido de APKS. En aras de la simplicidad usaré FakeBanker que he analizado en una publicación de blog anterior.
Pero primero echemos un vistazo a las opciones principales de las herramientas:
$ smalisca --help
/ _ __
____ ___ ___ __ // / _ ____ ___ __
/', __ /' __` __` /'__ ` / /', __ /'___ /' __`
/ __, `/ / / / L . _ _ _ / __,` / __ // . _ _
/ ____/ _ _ _ __/. _ / ____ \ _ / ____/ ____ __/. _
/___//_//_//_//__//_//____//_//___//____//__//_/
--------------------------------------------------------------------------------
:: Autor: Victor <Yeox> Dorneanu
:: DESC: Herramienta de análisis de código estático para archivos smali
:: url: http://nullsecurity.net, http: // {blog, www} .dornea.nu
:: Versión: 0.2
--------------------------------------------------------------------------------
Uso: Smalisca (subcomandos ...) [Opciones ...] {Argumentos ...}
[-] herramienta de análisis de código estático (SCA) para archivos Baskmali (SMALI).
Comandos:
analizador
[-] Analice los resultados utilizando un aviso interactivo o en la línea de comando.
pasador
[-] Poner archivos y extraer datos basados en la sintaxis smali.
web
[-] Analice los resultados utilizando la API web.
Argumentos opcionales:
-h, --help muestra este mensaje de ayuda y salida
-Salida de depuración de alternación de DEBUG
-Quiet Suprima toda la salida
--log-nivel {debug, info, advertir, error, crítico}
Cambiar el nivel de registro (predeterminado: información)
-V, -Version Show el número de versión del programa
Primero analizaré algún directorio para archivos smali antes de hacer las cosas de análisis:
$ smalisca parser -l ~/tmp/falsebanker2/dumped/smali -s java -f sqlite -o falsebanker.sqlite ... :: información de información. Java archivos en/home/victor/tmp/falsebanker2/dumped/smali ... :: Información terminada de análisis! :: Información de exportación de resultados a SQLite :: Clases de extracto de información ... :: Información de extracción de propiedades de clase ... :: Información de extracción de métodos de clase ... :: Información de extracción de llamadas ... :: Información Conjunto de cambios en SQLite DB :: Info escribió resultados a falsebanker.sqlite :: Información terminada de escaneo
También eche un vistazo a la página de análisis para obtener más información.
Ahora eres libre de hacer lo que quieras con tus exportaciones generadas. Puede inspeccionar el SQLite DB directamente o usar funciones de análisis Smaliscas :
$ Smalisca Analyzer -f SQLite -I falsebanker.sqlite ... smalisca> sc -x ruta -r 10 +----+-----------------------------------------------------------------------------------------+------------------------+--------------------------+-------++ | ID | class_name | class_type | class_package | profundidad | +----+-----------------------------------------------------------------------------------------+------------------------+--------------------------+-------++ | 1 | Landroid/Support/V4/Net/ConnectivityManagerCompat | público | Landroid.support.v4.net | 5 | | 2 | Landroid/Support/V4/View/AccessibilityDelegateCompat $ AccessibilityDelegateJellyBeanImpl | | Landroid.support.v4.view | 5 | | 3 | Landroid/Support/V4/View/ViewCompat $ ViewCompatImpl | Interfaz Resumen | Landroid.support.v4.view | 5 | | 4 | Landroid/Support/V4/App/ActivityCompathoneyComb | | Landroid.support.v4.App | 5 | | 5 | Landroid/Support/V4/App/NosAvestateFramelayout | | Landroid.support.v4.App | 5 | | 6 | Landroid/Support/V4/Net/ConnectivityManagerCompathoneyCombmr2 | | Landroid.support.v4.net | 5 | | 7 | LCOM/GMAIL/XPACK/BUSTCONFIG | final público | Lcom.gmail.xpack | 4 | | 8 | Landroid/Support/V4/App/BackstackRecord $ OP | final | Landroid.support.v4.App | 5 | | 9 | Landroid/Support/V4/App/FragmentManagerImpl | final | Landroid.support.v4.App | 5 | | 10 | Landroid/Support/V4/App/ShareCompat $ ShareCompatImpl | Interfaz Resumen | Landroid.support.v4.App | 5 | +----+-----------------------------------------------------------------------------------------+------------------------+--------------------------+-------++
También consulte la página de análisis para obtener más comandos y opciones disponibles.
Consulte la página de dibujo para ver los ejemplos completos.
Smalisca ha sido lanzado bajo la licencia MIT . Eche un vistazo al archivo License.RST .
Esta herramienta está dedicada a Lică . Muchas gracias también van a:
Stephen McAllister
- Muchas gracias por todas esas horas llenas de depuración de APK y grandes ideas
Mi novia
- ¡Muchas gracias por su paciencia y comprensión!
nullSecurity.net
- ¡Hacke el planeta!