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

Pour plus d'informations sur les usages possibles de cet outil, consultez :
pip install apkid
Vous pouvez également exécuter APKiD avec Docker ! Bien sûr, cela nécessite que git et Docker soient 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 3.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}] [-st] [-j]
[-o DIR] [-m] [--print-filter RULES] [--include-types]
[FILE ...]
APKiD - Android Application Identifier v3.2.0
positional arguments:
FILE apk, dex, or directory (default: None)
options:
-h, --help show this help message and exit
-v, --verbose log debug messages (default: False)
scanning:
-t TIMEOUT, --timeout TIMEOUT Yara scan timeout (in seconds) (default: 30)
-r, --recursive recurse into subdirectories (default: False)
--scan-depth SCAN_DEPTH how deep to go when scanning nested zips (default: 2)
--entry-max-scan-size ENTRY_MAX_SCAN_SIZE max zip entry size to scan in bytes, 0 = no limit
(default: 104857600)
--typing {magic,filename,none} method to decide which files to scan (default: magic)
-st, --scan-trackers scans for embedded trackers (default: False)
output:
-j, --json output scan results in JSON format (default: False)
-o DIR, --output-dir DIR write individual results here (implies --json)
(default: None)
-m, --print-matches print matched rules and strings to stdout (default:
False)
--print-filter RULES filter printed matches: comma-separated rule names to
include ('+' or no prefix) or exclude ('-' prefix).
Implies --print-matches. Use '=' when the value starts
with '-', e.g. --print-filter=-is_apk,-is_signed_apk
(default: )
--include-types include file type info for matched files (default:
False)
Si vous rencontrez un APK ou un DEX qu'APKiD ne reconnaît pas, veuillez ouvrir une issue GitHub et nous indiquer :
Nous sommes ouverts à tout type de concept que vous pourriez avoir pour « quelque chose d'intéressant » à détecter, donc ne vous limitez pas uniquement aux packers, compilateurs ou obfuscateurs. S'il existe une astuce intéressante d'anti-désassembleur, anti-vm, anti-*, veuillez créer une issue.
Les pull requests sont les bienvenues. Si vous soumettez une nouvelle règle, assurez-vous d'inclure un hash de fichier de l'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 à code source fermé et une licence GPL utilisable dans les logiciels open source.
Selon vos besoins, vous devez en choisir une et respecter ses politiques. Le 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 afin d'apporter des modifications, de développer vos propres règles, etc., il suffit de cloner ce dépôt, de compiler les règles et d'installer le paquet en mode éditable :
git clone https://github.com/rednaga/APKiD
cd APKiD
python prep-release.py
pip install -e .[dev,test]
La commande python prep-release.py ci-dessus nécessite que les paquets yara-python et yara-python-dex soient déjà installés.
Si ce qui précède ne fonctionne pas, en raison d'erreurs de permission dépendant de votre machine locale et de l'emplacement où Python a été installé, essayez de spécifier l'option --user. Cela est probablement nécessaire si vous n'utilisez pas d'environnement virtuel :
pip install -e .[dev,test] --user
Si vous modifiez l'une des règles, veillez à exécuter prep-release.py pour les recompiler.
Si vous utilisez Windows, désinstallez toutes les versions précédentes de Yara et installez Yara 3.11.0 et yara-python-dex avant la compilation
pip uninstall -y yara-python yara-python-dex
pip install yara-python==3.11.0 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.
En ce qui concerne 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éversez-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.