
apk-info v1.0.12
محلل APK متكامل الميزات
apk-info
محلل apk كامل الميزات.
الميزات
- مستخرج zip صديق للبرامج الضارة. مقال رائع عن تقنية
BadPack؛ - مستخرج axml وarsc صديق للبرامج الضارة؛
- تطبيق كامل لـ AXML (Android Binary XML)؛
- تطبيق كامل لـ ARSC (Android Resource)؛
- دعم لاستخراج المعلومات الموجودة في
APK Signature Block 42:- APK Signature scheme v1;
- APK Signature scheme v2;
- APK Signature scheme v3;
- APK Signature scheme v3.1;
- Stamp Block v1 & v2;
- Apk Channel Block;
- Packer NG v2;
- Vasdolly v2
- Google Play Frosting (هناك خطط ولكن المعلومات عنها شحيحة للغاية)؛
- استخراج صحيح لـ MainActivity بناءً على كيفية قيام نظام Android بذلك؛
- روابط لـ Python 3.10+ مع كتابة الأنواع - لا مزيد من
# type: ignore؛ - وبالطبع مجرد محلل سريع - 🙃
البدء
سطر الأوامر (CLI)
التثبيت
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
الحصول على معلومات أساسية عن 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]}")
الحصول على معلومات حول التوقيعات
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}")
تحليل الأداء
البيئة:
- OS: macOS Tahoe 26.0.1 arm64
- CPU: Apple M3 Pro (12) @ 4.06 GHz
البرنامج النصي script:
- استخراج جميع التوقيعات المتاحة من ملف؛
- استخراج اسم الحزمة؛
- استخراج الحد الأدنى لإصدار SDK؛
- الحصول على قائمة بجميع الأنشطة الرئيسية؛
- الحصول على اسم التطبيق؛
مكتبة apk-info:
- البناء -
release-lto؛ - روابط بايثون (مقارنة عادلة)؛
حالة اختبار (مجموعة نظيفة):
- 152 ملف apk؛
- الحجم الإجمالي - 20 جيجابايت؛
- وضع التسجيل - تحذير؛
| # | apk-info | androguard |
|---|---|---|
| 1 | 0.98s user 4.32s system 80% cpu 6.584 total | 57.39s user 4.88s system 97% cpu 1:03.85 total |
| 2 | 0.96s user 4.23s system 79% cpu 6.486 total | 57.98s user 5.04s system 97% cpu 1:04.80 total |
| 3 | 0.95s user 4.15s system 79% cpu 6.422 total | 55.56s user 4.48s system 97% cpu 1:01.55 total |
حالة اختبار (مجموعة برمجيات خبيثة):
- 3084 ملف apk؛
- الحجم الإجمالي - 23 جيجابايت؛
- وضع التسجيل - تحذير؛
[!IMPORTANT] هناك الكثير من العينات الخبيثة في هذه المجموعة التي لا يستطيع androguard تحليلها ببساطة.
| # | apk-info | androguard |
|---|---|---|
| 1 | 2.49s user 4.74s system 73% cpu 9.840 total | 141.29s user 6.86s system 98% cpu 2:31.09 total |
| 2 | 2.50s user 4.77s system 75% cpu 9.641 total | 138.04s user 6.32s system 97% cpu 2:27.33 total |
| 3 | 2.49s user 4.78s system 75% cpu 9.650 total | 139.33s user 6.65s system 98% cpu 2:28.87 total |
في المتوسط، يكون كسب السرعة حوالي x10.
الميزة الرئيسية هي أن apk-info يمكنه تحليل العديد من الملفات الخبيثة أكثر من androguard.
الأسئلة الشائعة
- لماذا لا نستخدم androguard فقط؟
جميع مشاريعي تقريبًا تولد من شيء غير مريح للاستخدام. Androguard أداة رائعة بحد ذاتها، ولكن من المستحيل ببساطة صيانتها (في رأيي) وهي غير مناسبة للكود الجاهز للإنتاج. كما أنها غير مناسبة لتحليل عدد كبير من الملفات بسبب أن كل المنطق مكتوب بطريقة غير محسنة جدًا.
- أريد تعديل ملف apk، كيف يمكنني فعل ذلك باستخدام هذه المكتبة؟
المكتبة مصممة للوضع للقراءة فقط، لأنني أحتاج أداة جيدة يمكنني من خلالها استخراج المعلومات بسهولة وسرعة من ملف apk. هناك العديد من الأدوات الجيدة الأخرى المتاحة.