Retour aux mises à jour
New releaseAug 17, 2026

apk-info v1.0.12

Analyseur APK complet

Partager

apk-info

Crates.io Version docs.rs PyPI - Version

Un analyseur apk complet.

Fonctionnalités

  • Un extracteur zip compatible avec les malwares. Excellent article sur la technique BadPack ;
  • Un extracteur axml et arsc compatible avec les malwares ;
  • Une implémentation complète d'AXML (Android Binary XML) ;
  • Une implémentation complète d'ARSC (Android Resource) ;
  • Prise en charge de l'extraction des informations contenues dans l'APK Signature Block 42 :
  • Extraction correcte de la MainActivity basée sur la façon dont le système d'exploitation Android le fait ;
  • Liaisons pour Python 3.10+ avec typage – plus besoin de # type: ignore ;
  • Et bien sûr, un analyseur rapide – 🙃

Pour commencer

CLI

Installation

cargo install apk-info-cli

Aide

A command-line tool to inspect and extract APK files

Usage: apk-info [COMMAND]

Commands:
  show        Show basic information about apk file
  extract     Unpack apk files as zip archive [aliases: x]
  axml        Read and pretty-print binary AndroidManifest.xml
  completion  Generate shell completion
  help        Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

Python

Installation

uv pip install apk-info

Obtenir des informations de base sur un APK

from apk_info import APK

apk = APK("./path-to-file.apk")
package_name = apk.get_package_name()
main_activities = apk.get_main_activities()
min_sdk = apk.get_min_sdk_version()

print(f"Package Name: {package_name}")
print(f"Minimal SDK: {min_sdk}")

if not main_activities:
    print("apk is not launchable!")
    exit()

print(f"Main Activity: {package_name}/{main_activities[0]}")

Obtenir des informations sur les signatures

import sys

from apk_info import APK, Signature

if len(sys.argv) < 2:
    print(f"usage: {sys.argv[0]} <apk>")
    sys.exit(1)

file = sys.argv[1]
apk = APK(file)

signatures = apk.get_signatures()
for signature in signatures:
    match signature:
        case Signature.V1() | Signature.V2() | Signature.V3() | Signature.V31():
            for cert in signature.certificates:
                print(f"{cert.subject=} {cert.issuer=} {cert.valid_from=} {cert.valid_until=}")
        case Signature.ApkChannelBlock():
            print(f"got apk channel block: {signature.value}")
        case _:
            print(f"oh, cool, library added some new feature - {signature}")

Analyse des performances

Environnement :

  • OS : macOS Tahoe 26.0.1 arm64
  • CPU : Apple M3 Pro (12) @ 4.06 GHz

Le script :

  1. Extrait toutes les signatures disponibles d'un fichier ;
  2. Extrait le nom du package ;
  3. Extrait la version minimale du SDK ;
  4. Obtient la liste de toutes les Main Activities ;
  5. Obtient le nom de l'application ;

Bibliothèque apk-info :

  • Build - release-lto ;
  • Liaisons Python (comparaison honnête) ;

Cas de test (collection propre) :

  • 152 fichiers apk ;
  • Taille totale - 20 Go ;
  • Mode journalisation - avertissement ;
#apk-infoandroguard
10,98 s utilisateur 4,32 s système 80% cpu 6,584 total57,39 s utilisateur 4,88 s système 97% cpu 1:03,85 total
20,96 s utilisateur 4,23 s système 79% cpu 6,486 total57,98 s utilisateur 5,04 s système 97% cpu 1:04,80 total
30,95 s utilisateur 4,15 s système 79% cpu 6,422 total55,56 s utilisateur 4,48 s système 97% cpu 1:01,55 total

Cas de test (collection de malwares) :

  • 3084 fichiers apk ;
  • Taille totale - 23 Go ;
  • Mode journalisation - avertissement ;

[!IMPORTANT] Il y a beaucoup d'échantillons malveillants dans cet ensemble qu'androguard ne peut tout simplement pas analyser.

#apk-infoandroguard
12,49 s utilisateur 4,74 s système 73% cpu 9,840 total141,29 s utilisateur 6,86 s système 98% cpu 2:31,09 total
22,50 s utilisateur 4,77 s système 75% cpu 9,641 total138,04 s utilisateur 6,32 s système 97% cpu 2:27,33 total
32,49 s utilisateur 4,78 s système 75% cpu 9,650 total139,33 s utilisateur 6,65 s système 98% cpu 2:28,87 total

En moyenne, le gain de vitesse est d'environ x10.

Le principal avantage est que apk-info peut analyser beaucoup plus de fichiers malveillants qu'androguard.

FAQ

  • Pourquoi ne pas simplement utiliser androguard ?

Presque tous mes projets naissent de quelque chose qui n'est pas pratique à utiliser. Androguard est en soi un excellent outil, mais il est tout simplement impossible de le maintenir (à mon avis) et il n'est pas adapté à un code prêt pour la production. Il n'est pas non plus adapté à l'analyse d'un grand nombre de fichiers car toute la logique est écrite de manière peu optimisée.

  • Je veux modifier l'apk, comment faire avec cette bibliothèque ?

La bibliothèque est conçue uniquement en mode lecture seule, car j'ai besoin d'un bon outil avec lequel je peux facilement et rapidement extraire des informations de l'apk. Il existe de nombreux autres bons outils.

Crédits

Catégories