Dalvik DeObfuscator القائم على النمط الذي يستخدم التنفيذ المحدود لتحسين التحليل الدلالي. أيضا ، مصدر إلهام لآخر Android deobfuscator: تبسيط.
قبل
بعد
SHA1: A68D5D2DA7550D35F7DBEFC21B7DEEBEPE3F4005F3
MD5: 2DD2EEEDA08AC8C15BE8A9F2D01ADBE8
نظرًا لأنك عكس النخبة Android ، فأنا متأكد من أن لديك بالفعل Smali و Baksmali في طريقك. إذا لم يتم تثبيت ذلك لسبب غريب ، فيجب أن يبدأ هذا ، ولكن يرجى فحصه بعناية قبل التشغيل:
mkdir ~ /bin || cd ~ /bin
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali-2.2.5.jar && mv smali- * .jar smali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.2.5.jar && mv baksmali- * .jar baksmali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali
chmod +x ./smali ./baksmali
export PATH= $PATH : $PWD تأكد من أن adb في طريقك.
gem install dex-oracleأو ، إذا كنت تفضل البناء من المصدر:
git clone https://github.com/CalebFenton/dex-oracle.git
cd dex-oracle
gem install bundler
bundle installيجب أن يكون لديك إما محاكي يعمل أو جهاز يتم توصيله حتى يعمل Oracle. الحد الأدنى اللازم للإصدار Android هو 5.0!
يحتاج Oracle إلى تنفيذ طرق على نظام Android المباشر. يمكن أن يكون هذا إما على جهاز أو محاكي (مفضل). إذا كان جهازًا ، فتأكد من أنك لا تمانع في تشغيل رمز معادٍ محتمل عليه .
إذا كنت ترغب في استخدام محاكي ، وقام بالفعل بتثبيت Android SDK ، يمكنك إنشاء صور المحاكي وبدء تشغيله مع:
android avd Usage: dex-oracle [opts] <APK / DEX / Smali Directory>
-h, --help Display this screen
-s ANDROID_SERIAL, Device ID for driver execution, default=""
--specific-device
-t, --timeout N ADB command execution timeout in seconds, default="120"
-i, --include PATTERN Only optimize methods and classes matching the pattern, e.g. Ldune;->melange()V
-e, --exclude PATTERN Exclude these types from optimization; including overrides
--disable-plugins STRING[,STRING]*
Disable plugins, e.g. stringdecryptor,unreflector
--list-plugins List available plugins
-v, --verbose Be verbose
-V, --vverbose Be very verbose
على سبيل المثال ، إلى طرق DeObfuscate فقط في فئة تسمى Lcom/android/system/admin/CCOIoll; داخل APK يسمى obad.apk :
dex-oracle -i com/android/system/admin/CCOIoll obad.apkيأخذ Oracle تطبيقات Android (APK) و Dalvik Executables (DEX) و SMALI كمدخلات. أولاً ، إذا كان الإدخال هو APK أو DEX ، فسيتم تفكيكه في ملفات Smali. بعد ذلك ، يتم تمرير ملفات Smali إلى الإضافات المختلفة التي تؤدي التحليل والتعديلات. ابحث المكونات الإضافية عن الأنماط التي يمكن تحويلها إلى شيء أسهل للقراءة. من أجل فهم ما يفعله الرمز ، يتم تنفيذ بعض أساليب Dalvik بالفعل ويتم جمع الإخراج. بهذه الطريقة ، يمكن استبدال بعض مكالمات الطريقة بالثوابت. بعد ذلك ، يتم تحديث جميع ملفات smali. أخيرًا ، إذا كان الإدخال عبارة عن ملف APK أو DEX ، يتم إعادة ترجمة ملفات SMALI المعدلة وتم إنشاء APK أو DEX محدثة.
يتم تنفيذ الطريقة من قبل السائق. يتم دمج الإدخال APK أو DEX أو SMALI مع برنامج التشغيل في DEX واحد باستخدام dexmerge ويتم دفعه على جهاز أو محاكي. يمكن بعد ذلك استخدام المكونات الإضافية برنامج التشغيل الذي يستخدم انعكاس Java لتنفيذ طرق من DEX الإدخال. يمكن استخدام قيم الإرجاع لتحسين التحليل الدلالي بما يتجاوز مجرد التعرف على الأنماط. هذا مفيد بشكل خاص للعديد من طرق فك تشفير السلسلة ، والتي عادة ما تأخذ سلسلة مشفرة أو بعض صفيف البايت. أحد القيود هو أن التنفيذ يقتصر على الأساليب الثابتة.
هناك ثلاثة ملحقات مكونات مكون من ذلك تأتي مع Oracle:
إذا واجهت نوعًا جديدًا من التشويش ، فقد يكون من الممكن التخلص من أوراكل. انظر إلى smali واكتشف ما إذا كان يمكن أن يكون الكود:
إذا كان أي من هذين هما هو الحال ، فيجب أن تحاول كتابة البرنامج المساعد الخاص بك. هناك أربع خطوات لبناء البرنامج المساعد الخاص بك:
يجب أن تكون الإضافات المضمنة دليلًا جيدًا لفهم الخطوات رقم 3 و #4. تم تصميم برنامج التشغيل للمساعدة في الخطوة رقم 2.
بالطبع ، أنت مدعو دائمًا لمشاركة أي شد تصادفه وقد يحصل عليه شخص ما في النهاية.
أولاً ، تأكد من أن dx على طريقك. هذا جزء من Android SDK ، ولكن ربما لا يكون في طريقك إلا إذا كنت متشددًا.
مجلد السائق هو مشروع Java يديره Gradle. استيراده إلى Eclipse ، intellij ، وما إلى ذلك وقم بإجراء أي تغييرات تريدها. لإنهاء تحديث برنامج التشغيل ، قم بتشغيل ./update_driver . سيؤدي ذلك إلى إعادة بناء السائق وتحويل جرة الإخراج إلى DEX.
إذا كانت هناك مشكلة في تنفيذ رمز برنامج التشغيل على المحاكي أو الجهاز ، فتأكد من فتح monitor (جزء من Android SDK) والتحقق من أي أدلة هناك. حتى إذا لم يكن الخطأ منطقيًا بالنسبة لك ، فسوف يساعدك ذلك إذا قمت بنشره مع المشكلة التي ستنشئها.
لا تعمل جميع منصات Android بشكل جيد مع Dex-Oracle. بعضها مجرد حماقة عند محاولة تنفيذ ملفات DEX التعسفية. إذا كنت تواجه مشكلة مع Segfaults أو تعطل برنامج التشغيل ، فحاول استخدام Android 4.4.2 API المستوى 19 مع ARM.
من الممكن أن يرى المكون الإضافي نمطًا يعتقد أنه محبط ولكنه في الواقع بعض التعليمات البرمجية التي لا ينبغي تنفيذها. هذا يبدو غير مرجح لأن أنماط التشويش غير عادية حقًا ، لكنها ممكنة. إذا كنت تجد مكونًا إضافيًا معينًا يسبب مشكلات ، وأنت متأكد من أن التطبيق غير محمي من خلال هذا المحور المعين ، أي أن التطبيق لا يتم dexguarded ولكن المكون الإضافي Dexguard يحاول تنفيذ الأشياء ، فقط تعطيله.