
Analyseur APK complet
Un analyseur apk complet.
BadPack ;APK Signature Block 42 :
# type: ignore ;cargo install apk-info-cli
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
uv pip install apk-info
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]}")
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}")
Environnement :
Le script :
Bibliothèque apk-info :
release-lto ;Cas de test (collection propre) :
| # | apk-info | androguard |
|---|
Cas de test (collection de malwares) :
[!IMPORTANT] Il y a beaucoup d'échantillons malveillants dans cet ensemble qu'androguard ne peut tout simplement pas analyser.
| # | apk-info | androguard |
|---|
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.
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.
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.
| 1 | 0,98 s utilisateur 4,32 s système 80% cpu 6,584 total | 57,39 s utilisateur 4,88 s système 97% cpu 1:03,85 total |
| 2 | 0,96 s utilisateur 4,23 s système 79% cpu 6,486 total | 57,98 s utilisateur 5,04 s système 97% cpu 1:04,80 total |
| 3 | 0,95 s utilisateur 4,15 s système 79% cpu 6,422 total | 55,56 s utilisateur 4,48 s système 97% cpu 1:01,55 total |
| 1 | 2,49 s utilisateur 4,74 s système 73% cpu 9,840 total | 141,29 s utilisateur 6,86 s système 98% cpu 2:31,09 total |
| 2 | 2,50 s utilisateur 4,77 s système 75% cpu 9,641 total | 138,04 s utilisateur 6,32 s système 97% cpu 2:27,33 total |
| 3 | 2,49 s utilisateur 4,78 s système 75% cpu 9,650 total | 139,33 s utilisateur 6,65 s système 98% cpu 2:28,87 total |