
Identifiant d'application Android pour Packers, Protectors, Obfuscators et Oddities - PEiD for Android
APKiD vous donne des informations sur la façon dont un APK a été créé. Il identifie de nombreux compilateurs, packers, obfuscateurs et autres trucs étranges. C'est le PEiD pour Android.

Pour plus d'informations sur l'utilisation de cet outil, consultez :
pip install apkid
Vous pouvez également exécuter APKiD avec Docker ! Bien sûr, cela nécessite que vous ayez git et Docker installés.
Voici comment utiliser Docker :
git clone https://github.com/rednaga/APKiD
cd APKiD/
docker build . -t rednaga:apkid
docker/apkid.sh ~/reverse/targets/android/example/example.apk
[+] APKiD 2.1.0 :: from RedNaga :: rednaga.io
[*] example.apk!classes.dex
|-> compiler : dx
usage: apkid [-h] [-v] [-t TIMEOUT] [-r] [--scan-depth SCAN_DEPTH]
[--entry-max-scan-size ENTRY_MAX_SCAN_SIZE] [--typing {magic,filename,none}] [-j]
[-o DIR]
[FILE [FILE ...]]
APKiD - Android Application Identifier v2.1.2
positional arguments:
FILE apk, dex, or directory
optional arguments:
-h, --help show this help message and exit
-v, --verbose log debug messages
scanning:
-t TIMEOUT, --timeout TIMEOUT Yara scan timeout (in seconds)
-r, --recursive recurse into subdirectories
--scan-depth SCAN_DEPTH how deep to go when scanning nested zips
--entry-max-scan-size ENTRY_MAX_SCAN_SIZE max zip entry size to scan in bytes, 0 = no limit
--typing {magic,filename,none} method to decide which files to scan
output:
-j, --json output scan results in JSON format
-o DIR, --output-dir DIR write individual results here (implies --json)
Si vous rencontrez un APK ou DEX qu'APKiD ne reconnaît pas, veuillez ouvrir un issue GitHub et nous dire :
Nous sommes ouverts à tout type de concept que vous pourriez avoir pour « quelque chose d'intéressant » à détecter, ne vous limitez donc pas uniquement aux packers, compilateurs ou obfuscateurs. S'il y a une astuce intéressante anti-désassembleur, anti-VM, anti-*, veuillez créer un issue.
Les pull requests sont les bienvenues. Si vous soumettez une nouvelle règle, assurez-vous d'inclure un hash du fichier APK/DEX afin que nous puissions vérifier la règle.
Cet outil est disponible sous une double licence : une licence commerciale adaptée aux projets closed source et une licence GPL qui peut être utilisée dans les logiciels open source.
En fonction de vos besoins, vous devez choisir l'une d'elles et suivre ses politiques. Un détail des politiques et accords pour chaque type de licence est disponible dans les fichiers LICENSE.COMMERCIAL et LICENSE.GPL.
Si vous souhaitez installer la dernière version pour apporter des modifications, développer vos propres règles, etc., clonez simplement ce dépôt, compilez les règles et installez le paquet en mode éditable :
git clone https://github.com/rednaga/APKiD
cd APKiD
python prep-release.py
pip install -e .[dev,test]
Si la commande ci-dessus ne fonctionne pas, en raison d'erreurs de permissions dépendant de votre machine locale et de l'emplacement où Python a été installé, essayez d'utiliser le flag --user. Cela est probablement nécessaire si vous n'utilisez pas d'environnement virtuel :
pip install -e .[dev,test] --user
Si vous mettez à jour l'une des règles, assurez-vous d'exécuter prep-release.py pour les recompiler.
Si vous utilisez Windows, installez Yara 3.11.0 et yara-python-dex avant de compiler
pip install yara-python==3.11.0
pip install wheel
pip wheel --wheel-dir=yara-python-dex git+https://github.com/MobSF/yara-python-dex.git
pip install --no-index --find-links=yara-python-dex yara-python-dex
Lors de la publication d'une nouvelle version, assurez-vous que la version a été mise à jour dans apkid/init.py.
Pour l'exécution des tests, consultez .travis.yml pour voir comment les environnements de développement et de test sont configurés et comment les tests sont exécutés.
Mettez à jour les règles compilées, le readme, construisez le paquet et téléchargez-le sur PyPI :
./prep-release.py readme
rm -f dist/*
python setup.py sdist bdist_wheel
twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
Pour plus d'informations, consultez Packaging Projects.