
أداة تعمية تلقائية لتطبيقات أندرويد تعمل بطريقة الصندوق الأسود، وتدعم ميزات التعمية المتقدمة، ولها بنية معيارية يمكن توسيعها بسهولة بتقنيات جديدة
[!IMPORTANT] تم أرشفة هذا المشروع ولم يعد يُصان.
بعض الأسئلة الأكثر شيوعًا مُجاب عنها في الأسئلة الشائعة و استكشاف الأخطاء وإصلاحها.

أداة إخفاء (obfuscation) صندوق أسود لتطبيقات أندرويد.
Obfuscapk هي أداة بايثون معيارية (modular) لإخفاء تطبيقات أندرويد دون الحاجة إلى
شفرة المصدر الخاصة بها، حيث يُستخدم apktool
لفك تجميع ملف apk الأصلي وبناء تطبيق جديد، بعد تطبيق بعض
تقنيات الإخفاء على كود smali المُفكك تجميعه، والموارد، وملف البيان (manifest).
يحتفظ التطبيق المُخفي بنفس وظائف التطبيق الأصلي، لكن الاختلافات
تحت الغطاء تجعل التطبيق الجديد في بعض الأحيان مختلفًا جدًا عن الأصلي
(على سبيل المثال، بالنسبة لبرامج مكافحة الفيروسات القائمة على التوقيع).
يضيف Obfuscapk دعمًا لـ
حزم تطبيقات أندرويد (ملفات aab) عن طريق
استخدام BundleDecompiler (انظر
#121). لاستخدام هذه الميزة الجديدة،
قم بتنزيل أحدث إصدار من BundleDecompiler المتاح من
هنا،
واحفظه باسم BundleDecompiler.jar في دليل مضمن في PATH (على سبيل المثال، في أوبونتو،
/usr/local/bin أو /usr/bin) وتأكد من تعيين علامة التشغيل (executable flag).
[!IMPORTANT] لا يعمل BundleDecompiler على ويندوز حتى الآن، لذا فإن إخفاء حزم التطبيقات غير مدعوم بواسطة Obfuscapk على منصة ويندوز. أيضًا، دعم حزمة التطبيقات لا يزال في مرحلة التطوير المبكرة، لذا إذا واجهت أي مشاكل أو إذا كنت ترغب في مساعدتنا على التحسين، يُرجى الاطلاع على المساهمة.
يمكن العثور على مزيد من التفاصيل حول Obfuscapk في الورقة البحثية "Obfuscapk: أداة إخفاء مفتوحة المصدر من النوع الصندوق الأسود لتطبيقات أندرويد". يمكنك الاستشهاد بالورقة كما يلي:```BibTeX @article{aonzo2020obfuscapk, title = "Obfuscapk: An open-source black-box obfuscation tool for Android apps", journal = "SoftwareX", volume = "11", pages = "100403", year = "2020", issn = "2352-7110", doi = "https://doi.org/10.1016/j.softx.2020.100403", url = "https://www.sciencedirect.com/science/article/pii/S2352711019302791", author = "Simone Aonzo and Gabriel Claudiu Georgiu and Luca Verderame and Alessio Merlo", keywords = "Android, Obfuscation, Program analysis" }
## ❱ عرض توضيحي

## ❱ البنية

تم تصميم Obfuscapk ليكون معياريًا وسهل التوسيع، لذا فهو مبني باستخدام
[نظام إضافات](https://github.com/tibonihoo/yapsy). وبالتالي، كل مُعتم هو
إضافة ترث من
[فئة أساسية](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/obfuscator_category.py)
مجردة وتحتاج إلى تنفيذ الطريقة `obfuscate`. عندما تبدأ الأداة في معالجة ملف
تطبيق Android جديد، تقوم بإنشاء
[كائن تعتيم](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/obfuscation.py)
لتخزين جميع المعلومات الضرورية (على سبيل المثال، موقع كود `smali` المُفكك)
والحالة الداخلية للعمليات (على سبيل المثال، قائمة المُعتمين المستخدمين بالفعل).
ثم يتم تمرير كائن التعتيم، كمعامل للطريقة `obfuscate`، إلى جميع
الإضافات/المُعتمين النشطين (بالتسلسل) لمعالجتها وتعديلها. يتم تحديد قائمة وترتيب
الإضافات النشطة من خلال [خيارات سطر الأوامر](#-usage).
الأداة قابلة للتوسيع بسهولة باستخدام مُعتمين جدد: يكفي إضافة الكود المصدر
الذي ينفذ تقنية التعتيم وبيانات الإضافة الوصفية (ملف
`<obfuscator-name>.obfuscator`) في دليل
[`src/obfuscapk/obfuscators`](https://github.com/ClaudiuGeorgiu/Obfuscapk/tree/master/src/obfuscapk/obfuscators)
(خذ مُعتمًا موجودًا بسيطًا مثل
[`Nop`](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/obfuscators/nop/nop.py)
كمثال بداية). ستكتشف الأداة الإضافة الجديدة تلقائيًا، لذا لا حاجة لمزيد من
التكوين (سيتم التعامل مع الإضافة الجديدة مثل جميع الإضافات الأخرى المرفقة مع
الأداة).
## ❱ التثبيت
هناك طريقتان للحصول على نسخة عاملة من Obfuscapk على جهاز الكمبيوتر الخاص بك:
إما عن طريق [استخدام Docker](#docker-image) أو عن طريق [استخدام الكود المصدر
مباشرة](#from-source) في بيئة `Python 3`. في كلتا الحالتين، أول شيء يجب فعله هو
الحصول على نسخة محلية من هذا المستودع، لذا افتح محطة طرفية في الدليل الذي تريد
حفظ المشروع فيه واستنسخ المستودع:```Shell
$ git clone https://github.com/ClaudiuGeorgiu/Obfuscapk.git
هذه هي الطريقة الموصى بها لتثبيت Obfuscapk، حيث أن المتطلب الوحيد هو أن يكون لديك إصدار حديث من Docker مثبتًا:```Shell $ docker --version Docker version 20.10.21, build baeda1f
#### صورة Docker Hub الرسمية
صورة [Obfuscapk الرسمية لـ Docker](https://hub.docker.com/r/claudiugeorgiu/obfuscapk) متاحة على Docker Hub (مبنية تلقائيًا من هذا المستودع):```Shell
$ # Download the Docker image.
$ docker pull claudiugeorgiu/obfuscapk
$ # Give it a shorter name.
$ docker tag claudiugeorgiu/obfuscapk obfuscapk
إذا قمت بتنزيل الصورة الرسمية من Docker Hub، فأنت على استعداد لاستخدام الأداة، لذا تابع وتحقق من تعليمات الاستخدام ، وإلا قم بتنفيذ الأمر التالي في الدليل الذي تم إنشاؤه سابقًا Obfuscapk/src/ (المجلد الذي يحتوي على Dockerfile) لبناء صورة Docker:```Shell
$ # Make sure to run the command in Obfuscapk/src/ directory.
$ # It will take some time to download and install all the dependencies.
$ docker build -t obfuscapk .
عندما تكون صورة Docker جاهزة، قم بإجراء اختبار سريع للتحقق من أن كل شيء تم
تثبيته بشكل صحيح:```Shell
$ docker run --rm -it obfuscapk --help
usage: python3 -m obfuscapk.cli [-h] -o OBFUSCATOR [-w DIR] [-d OUT_APK_OR_AAB]
...
Obfuscapk جاهز الآن للاستخدام، راجع تعليمات الاستخدام لمزيد من المعلومات.
تأكد من أن لديك إصدارًا حديثًا من
apktool,
apksigner
و zipalign مثبتًا
ومتاحًا من سطر الأوامر:```Shell
$ apktool
Apktool v2.9.0 - a tool for reengineering Android apk files
...
```Shell
$ apksigner
Usage: apksigner <command> [options]
apksigner --version
apksigner --help
...
$ zipalign
Zip alignment utility
Copyright (C) 2009 The Android Open Source Project
...
لدعم تعتيم حزم التطبيقات (app bundles)، تحتاج أيضًا إلى
BundleDecompiler، لذا قم بتنزيل
أحدث إصدار متاح من
هنا،
واحفظه باسم BundleDecompiler.jar في دليل مضمن في PATH (مثلًا، في أوبونتو،
/usr/local/bin أو /usr/bin) وتأكد من تعيين علامة التنفيذ (executable flag).