
مُعرّف تطبيقات أندرويد للحزم والحمايات والمُشوِّهات والغرائب - PEiD لأندرويد
يمنحك APKiD معلومات حول كيفية إنشاء ملف APK. فهو يحدد العديد من المترجمات (compilers) وأدوات التغليف (packers) وأدوات التشويش (obfuscators) وغيرها من الأشياء الغريبة. إنه PEiD الخاص بنظام Android.

لمزيد من المعلومات حول ما يمكن استخدام هذه الأداة من أجله، اطّلع على:
pip install apkid
يمكنك أيضًا تشغيل APKiD باستخدام Docker! بالطبع، يتطلب ذلك أن يكون لديك git وDocker مثبتين.
إليك كيفية استخدام 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)
إذا صادفت APK أو DEX لا يتعرف عليه APKiD، فيرجى فتح issue على GitHub وإخبارنا بما يلي:
نحن منفتحون على أي نوع من الأفكار التي قد تكون لديك حول "شيء مثير للاهتمام" يمكن اكتشافه، لذا لا تقتصر على packers أو compilers أو obfuscators فقط. إذا كانت هناك حيلة مثيرة للاهتمام مضادة للمفكك (anti-disassembler) أو مضادة للآلة الافتراضية (anti-vm) أو أي حيلة مضادة لشيء ما (anti-*)، فيرجى فتح issue.
طلبات السحب (Pull requests) مرحب بها. إذا كنت ترسل قاعدة جديدة، فتأكد من تضمين تجزئة ملف APK / DEX حتى نتمكن من التحقق من القاعدة.
هذه الأداة متاحة بموجب ترخيص مزدوج: ترخيص تجاري مناسب للمشاريع مغلقة المصدر وترخيص GPL يمكن استخدامه في البرمجيات مفتوحة المصدر.
اعتمادًا على احتياجاتك، يجب عليك اختيار أحدهما واتباع سياساته. تتوفر تفاصيل السياسات والاتفاقيات لكل نوع من أنواع الترخيص في ملفي LICENSE.COMMERCIAL وLICENSE.GPL.
إذا كنت ترغب في تثبيت أحدث إصدار لإجراء تغييرات، أو تطوير قواعدك الخاصة، وما إلى ذلك، فما عليك سوى استنساخ هذا المستودع، وتجميع القواعد، وتثبيت الحزمة في الوضع القابل للتحرير (editable mode):
git clone https://github.com/rednaga/APKiD
cd APKiD
python prep-release.py
pip install -e .[dev,test]
يتطلب الأمر python prep-release.py أعلاه أن تكون الحزمتان yara-python وyara-python-dex مثبتتين مسبقًا.
إذا لم ينجح ما سبق، بسبب أخطاء في الأذونات تعتمد على جهازك المحلي ومكان تثبيت Python، فجرّب تحديد العلامة --user. من المحتمل أن تكون هناك حاجة إليها إذا لم تكن تستخدم بيئة افتراضية:
pip install -e .[dev,test] --user
إذا قمت بتحديث أي من القواعد، فتأكد من تشغيل prep-release.py لإعادة تجميعها.
إذا كنت تستخدم Windows، فقم بإلغاء تثبيت أي إصدارات سابقة من Yara وثبّت Yara 3.11.0 وyara-python-dex قبل التجميع
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
عند إصدار نسخة جديدة، تأكد من تحديث رقم النسخة في apkid/init.py.
أما بالنسبة لتشغيل الاختبارات، فراجع .travis.yml لمعرفة كيفية إعداد بيئتي التطوير والاختبار وكيفية تشغيل الاختبارات.
حدّث القواعد المُجمّعة وملف readme، وابنِ الحزمة وارفعها إلى PyPI:
./prep-release.py readme
rm -f dist/*
python setup.py sdist bdist_wheel
twine upload --repository-url https://upload.pypi.org/legacy/ dist/*
لمزيد من المعلومات راجع Packaging Projects.