Si jamais vous avez examiné les applications Android, vous savez apprécier la capacité d'analyser votre cible au niveau le plus avancé. L'analyse du programme dynamique vous donnera un assez bon aperçu de vos activités d'applications et de vos comportements généraux. Cependant, vous voudrez parfois analyser votre application sans l'exécuter. Vous voudrez jeter un œil à ses composants, analyser comment ils interagissent et comment les données sont entachées d'un point à un autre.
Ceci était le principal facteur stimulant le développement de Smalisca . Il y a en effet de bonnes raisons pour une analyse de code statique avant la dynamique . Avant d'interagir avec l'application, j'aime savoir comment l'application a été construite, s'il y a une API et générer toutes sortes de graphiques de flux d'appels . En fait, les graphiques ont été très importants pour moi car ils visualisent les choses. Au lieu de sauter d'un fichier à l'autre, de la classe à la classe, je regarde simplement les graphiques.
Bien que la construction de graphiques ait été une raison importante pour moi de coder un tel outil, Smalisca a d'autres fonctionnalités soignées que vous devriez lire.
Pour le moment, il existe quelques fonctionnalités majeures comme:
analyse
Vous pouvez analyser un répertoire entier de fichiers SMALI et d'extraire :
Vous pouvez ensuite exporter les résultats en tant que JSON ou SQLite .
Ayez un butin sur la page d'analyse pour plus d'informations.
analyse
Après avoir exporté les résultats, vous obtiendrez une invite interactive pour examiner de plus près vos données analysées. Vous pouvez rechercher des classes, des propriétés, des méthodes et même des appels de méthode. Vous pouvez ensuite appliquer plusieurs filtres à vos critères de recherche comme:
SMALISCA> SC -C CLASS_NAME -P TEST -R 10 -X PATH -S CLASS_TYPE
Cette commande recherchera 10 (-r 10) classes qui contiennent le test de modèle (-p) dans le nom de leur classe (-C). Ensuite, la commande exclura le chemin de colonne (chemin -x) des résultats et les triera par le type de classe (-s).
Jetons un coup d'œil à un autre exemple:
SMALISCA> SCL -FC COM / Android -fm init -r 10
Cela recherchera tous les appels de méthode dont le nom de classe d'appel contient le modèle com / Android (-fc). De plus, nous pouvons rechercher des appels provenant de méthodes dont le nom contient le modèle init (-fm).
Vous pouvez bien sûr lire vos commandes à partir d'un fichier et analyser vos résultats par un lot - comme la manière:
$ cat cmd.txt sc -c class_name -p com / gmail / xlibs -r 10 -x chemin quitter $ ./smalisca.py Analyzer -i results.sqlite -f sqlite -c cmd.txt ...
Ayez un butin sur la page Analyse pour plus d'informations.
API Web
SMALISCA fournit un service Web REST afin d'interagir facilement avec les résultats en utilisant simplement un client Web. De cette façon, vous pouvez accéder aux données dans votre propre application Web (fantaisie) et avoir une séparation propre entre le backend et le frontend.
En savoir plus sur l'API REST disponible sur la page API Web.
visualisation
Je pense que c'est la caractéristique la plus précieuse de Smalisca . La capacité de visualiser vos résultats de manière structurée rend votre vie plus confortable. Selon ce qui vous intéresse, cet outil a plusieurs fonctionnalités de dessin graphiques que j'aimerais promouvoir.
Au début, vous pouvez dessiner vos packages, y compris leurs cours, propriétés et méthodes:
SMALISCA> DC -C CLASS_NAME -P TEST -F DOT -O /TMP/CLASSES.DOT :: info a écrit des résultats à /tmp/classes.dot Smalisca>
Cela recherchera d'abord des classes dont le nom de classe contient le test , puis exportera les résultats dans la langue DOT Graphviz . Vous pouvez ensuite générer manuellement un graphique en utilisant DOT , NEATO , CIRCO , ou vous le faites en utilisant l'invite interactive:
SMALISCA> DC -C CLASS_NAME -P TEST -F PDF -O /TMP/CLASSES.PDF --PROG NEATO :: info a écrit des résultats à /tmp/classes.pdf Smalisca>
Ayez un butin sur la page de dessin pour plus d'informations.
Résultats de sortie en tant que tableau.
Relations de base entre les classes et les modules.
Jetez un œil à la page des captures d'écran.
Reportez-vous à la page d'installation. Exigences:
Après avoir installé l'outil, vous voudrez peut-être d'abord récupérer une application Android (APK) avec laquelle jouer. Utilisez APKTool ou mon propre outil ADUS pour vider le contenu APKS. Par souci de simplicité, j'utiliserai FakeBanker que j'ai analysé dans un article de blog précédent.
Mais jetons d'abord un aperçu des principales options des outils:
$ smalisca - help
/ _ __
____ ___ ___ __ // / _ ____ ___ __
/ ', __ /' __` __` / '__ ` / /', __ / '___ /' __`
/ #
/ ____ / _ _ _ __ __ /. _ / ____ \ _ / ____ / ____ __ /. _ .
/ ___ / / _ / / _ / / _ / / __ / / _ / / ____ / / _ / / ___ / / ____ / / __ / / _ /
--------------------------------------------------------------------------------
:: Auteur: Victor <Cyneox> Dorneanu
:: desc: outil d'analyse de code statique pour les fichiers smali
:: URL: http://nullsecurity.net, http: // {blog, www} .dornea.nu
:: Version: 0.2
--------------------------------------------------------------------------------
Utilisation: Smalisca (sous-communs ...) [Options ...] {Arguments ...}
[-] Outil d'analyse de code statique (SCA) pour les fichiers Baskmali (SMALI).
Commandes:
analyseur
[-] Analyser les résultats à l'aide d'une invite interactive ou sur la ligne de commande.
analyseur
[-] A analyser les fichiers et extraire des données basées sur la syntaxe SMALI.
web
[-] Analyser les résultats à l'aide de l'API Web.
Arguments facultatifs:
-H, --help afficher ce message d'aide et quitter
- Debug Toggle Debug Sortie
- Supprimer toute la sortie
--log-niveau {débogage, info, avertissement, erreur, critique}
Modifier le niveau de journalisation (par défaut: info)
-v, - Version Show du programme Afficher et sortir du programme
Je vais d'abord analyser un répertoire pour les fichiers SMALI avant de faire les trucs d'analyse:
$ SMALISCA PARSER -L ~ / TMP / FALSEBANKER2 / DUVED / SMALI -S Java -F Sqlite -o FakeBanker.Sqlite ... :: Info analyse. :: Infos terminé l'analyse! :: Info Exportant les résultats vers SQLite :: Info Extrait les cours ... :: Info Extrait les propriétés des classes ... :: Info Extrait les méthodes de classe ... :: INFO EXTRAIT CALLS ... :: Info Commit Changes pour Sqlite DB :: info a écrit des résultats à FakeBanker.Sqlite :: Info terminé la numérisation
Jetez également un œil à la page d'analyse pour plus d'informations.
Vous êtes maintenant libre de faire ce que vous voulez avec vos exportations générées. Vous pouvez inspecter directement la DB SQLite ou utiliser les fonctionnalités d'analyse SMALISCA :
$ SMALISCA Analyzer -F Sqlite -i FakeBanker.Sqlite ... SMALISCA> SC -X PATH -R 10 + ---- + ----------------------------------------------------------------------------------------- + -------------------- + ---------------------- + ------- + | ID | class_name | class_type | class_package | profondeur | + ---- + ----------------------------------------------------------------------------------------- + -------------------- + ---------------------- + ------- + | 1 | Landroid / Support / V4 / Net / ConnectivityManagerCompat | public | Landroid.Support.v4.net | 5 | | 2 | Landroid / Support / V4 / View / AccessibilityDelegateCompat $ AccessibilityDelegateJellyBeanImpl | | Landroid.Support.v4.View | 5 | | 3 | Landroid / Support / V4 / View / ViewCompat $ ViewCompatimpl | Résumé d'interface | 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 / buildConfig | Finale publique | Lcom.gmail.xpack | 4 | | 8 | Landroid / Support / V4 / App / BackstackRecord $ OP | Final | Landroid.Support.v4.App | 5 | | 9 | Landroid / Support / V4 / App / FragmentManageImpl | Final | Landroid.Support.v4.App | 5 | | 10 | Landroid / Support / V4 / App / Sharecompat $ ShareCompatimpl | Résumé d'interface | Landroid.Support.v4.App | 5 | + ---- + ----------------------------------------------------------------------------------------- + -------------------- + ---------------------- + ------- +
Reportez-vous également à la page Analyse pour plus de commandes et d'options disponibles.
Veuillez vous référer à la page de dessin pour des exemples complets.
Smalisca a été libéré sous la licence du MIT . Jetez un œil au fichier licence.RST .
Cet outil est dédié à LICă . Merci beaucoup aussi à:
Stephen McAllister
- Merci beaucoup pour toutes ces heures pleines de débogage APK et de grandes idées
Mon copain
- Merci beaucoup pour votre patience et votre compréhension!
nullsecurity.net
- Hack la planète!