سؤال

كيف يمكن لملفات أندرويد DEX (VM BYTECODE) أندرويد (VM BYTECODE) في SourceCode المقابلة Java؟

هل كانت مفيدة؟

المحلول

من السهل

الحصول على هذه الأدوات:

1) DEX2JAR. لترجمة ملفات DEX إلى ملفات جرة

2) jd-gui. لعرض ملفات Java في الجرة

رمز المصدر قابل للقراءة تماما كما يجعل DEX2JAR بعض التحسينات.

إجراء:

وهنا الإجراء الخاص بكيفية فك ضغط:

الخطوة 1:

تحويل classes.dex في test_apk-debug.apk ل test_apk-debug_dex2jar.jar

d2j-dex2jar.sh -f -o output_jar.jar apk_to_decompile.apk
d2j-dex2jar.sh -f -o output_jar.jar dex_to_decompile.dex

ملحوظة: في آلات ويندوز كل .sh يتم استبدال البرامج النصية ب .bat نصوص

وثائق DEX2JAR.

الخطوة 2:

افتح JAR في JD-GUI

The decompiled source

نصائح أخرى

لتوضيح بعض الشيء، هناك طريقان رئيسيان قد تستغرقه هنا اعتمادا على ما تريد إنجازه:

deprompile bytecode dalvik (dex) في مصدر جافا قابل للقراءة. يمكنك القيام بذلك بسهولة مع DEX2JAR. و jd-gui., ، كما يذكر فريد. المصدر الناتج مفيد لقراءة وفهم وظيفة التطبيق، ولكن من المحتمل ألا تنتج رمز قابلة للاستخدام بنسبة 100٪. بمعنى آخر، يمكنك قراءة المصدر، ولكن لا يمكنك بالفعل تعديلها وإعادة تدويسها. لاحظ أنه إذا تم تعويض المصدر ببرامج Proguard، فإن شفرة المصدر الناتجة ستكون أكثر صعوبة إلى حد كبير.

البديل الرئيسي الآخر هو تفكيك bytecode إلى Smali., ، لغة تجميع مصممة لهذا الغرض بدقة. لقد وجدت أن أسهل طريقة للقيام بذلك مع apktool.. وبعد بمجرد تثبيت APKTool، يمكنك فقط الإشارة إلى ذلك في ملف apk، وسوف تعود إلى ملف Smali لكل فصل يحتوي على التطبيق. يمكنك قراءة وتعديل Smali أو حتى استبدال الفئات بالكامل عن طريق توليد Smali من مصدر Java الجديد (للقيام بذلك، يمكنك ترجمة مصدر .java الخاص بك إلى ملفات .class مع Javac، ثم قم بتحويل ملفات .class إلى ملفات .dex مع Android DX Compiler، ثم استخدم Baksmali (Smali Disassembler) لتحويل ملفات .dex إلى .smali، كما هو موضح في هذا السؤال. وبعد قد يكون هناك اختصار هنا). بمجرد الانتهاء، يمكنك بسهولة حزمة APK مرة أخرى مع Apktool مرة أخرى. لاحظ أن ApkTool لا يوقع على APK الناتج، لذلك ستحتاج إلى رعاية ذلك تماما مثل أي تطبيق أندرويد آخر.

إذا ذهبت إلى طريق Smali، فقد ترغب في المحاولة APK Studio, ، IDE الذي يقوم بأتمتة بعض الخطوات المذكورة أعلاه لمساعدتك في فك ضغط وإعادة ترجمة APK وتثبيته على جهاز.

باختصار، اختياراتك هي إما جدا إما جدا إلى جافا، وهي أكثر قابلية للقراءة ولكنها غير قابلة للقراءة، أو تفكيك Smali، والتي يصعب قراءتها، ولكن أكثر مرونة للغاية لإجراء تغييرات وإعادة تعيين تطبيق تعديل. أي منهج الذي تختاره يعتمد على ما تبحث عنه.

أخيرا، اقتراح تجرؤ هو أيضا ملاحظة. إنها أداة إعادة التهديد لتحويل ملفات .DEX و .APK إلى ملفات Java .class، بحيث يمكن تحليلها باستخدام أدوات التحليل الثابتة Java النموذجية.

كنت أوصي في الواقع الذهاب هنا:https://github.com/jesusfreke/smali.

يوفر Baksmali، وهو أداة هندسة عكسية الأكثر ممتازة لملفات DEX. انها مصنوعة من Jesusfreke، الرجل الذي قام بإنشاء ROMs Famous لنظام Android.

نسخة أكثر اكتمالا من فريدإجابه:

الطريق اليدوي

أولا تحتاج إلى أداة ل مقتطف جميع الفئات (مجمعة) على Dex إلى جرة.
هناك واحد يسمى DEX2JAR., ، الذي يصنعه طالب صيني.

ثم، يمكنك استخدام jd-gui. ل deprompile. الفصول على جرة إلى التعليمات البرمجية المصدر.
يجب أن يكون المصدر الناتج قابل للقراءة تماما، حيث تنطبق DEX2JAR على بعض التحسينات.

الطريق التلقائي

يمكنك استخدام apktool.. وبعد سوف تكون تلقائيا استخراج جميع الفصول (.dex)، مصادر (.asrc)، ثم سوف يتحول ثنائي XML ل مقروءة الإنسان مقروءة XML, ، وسوف أيضا خاطفة الطبقات بالنسبة لك.
التفكيك سيكون دائما أكثر قوة من فك خاصة مع
يمزح الجرار مع حراسة برو!

فقط أخبر apktool ل فك تشفير APK في دليل، ثم تعديل ما تريد،
وأخيرا تشفير عاد إلى APK. هذا كل شئ.

الأهمية: apktool. dissasmes.. وبعد غير ذلك deprompile..
لن يكون التعليمات البرمجية التي تم إنشاؤها مصدر Java.
ولكن يجب أن تكون قادرا على قراءتها، وحتى تحريرها إذا كنت على دراية ياسمين.
إذا كنت تريد مصدر جافا، يرجى الذهاب إلى الطريق اليدوي.

في بعض الأحيان تحصل على رمز مكسور، عند استخدام dex2jar/apktool, ، والأبرزاس في الحلقات. لتجنب هذا، واستخدام جادكس, ، التي تضفي dalvik bytecode في شفرة المصدر Java، دون إنشاء .jar/.class الملف أولا as. dex2jar هل يستخدم apktool DEX2JAR وأعتقد). كما أنه مفتوح المصدر وفي التطوير النشط. حتى لديه واجهة المستخدم الرسومية، لوجوي المتعصبين. جربها!

منذ لا أحد ذكر هذا، هناك أداة واحدة أخرى: DED Homepage.

تثبيت كيفية وبعض التفسيرات: تثبيت.

تم استخدامه في دراسة مثيرة للاهتمام لأمن تطبيقات السوق العليا (غير مرتبطة حقا، فقط إذا كنت فضوليا): مسح لأمن تطبيق أندرويد

لقد استخدمت

  1. DEX2JAR + JD-GUI
  2. Javadecompilers.com.
  3. enjarify.
  4. apktool.

ولكن لا شيء يدق أدوات Google الخاصة

1)Android Studio 2.x:بناء> تحليل APKenter image description here

2)Android Studio 3.0:الملف الشخصي أو تصحيح APKenter image description here enter image description here

بمجرد تنزيل ملف APK الخاص بك، تحتاج إلى القيام بالخطوات التالية للحصول على رمز / مستند Java قابل للتحرير.

  1. تحويل ملف APK الخاص بك إلى ZIP (أثناء بدء تنزيلك لا تذهب مع خيار "حفظ"، فقط اذهب مع "حفظ باسم" وذكر امتدادك كما .zip) عن طريق القيام به مثل هذا يمكنك تجنب Apktool ...
  2. استخراج ملف zip، وهناك يمكنك العثور على somefilename.dex. حتى الآن نحن بحاجة إلى تحويل Dex -> .class
  3. للقيام بذلك، تحتاج إلى "DEX2JAR" (يمكنك تنزيله من http://code.google.com/p/dex2jar/ ، بعد استخراج، في موجه الأوامر عليك ذكر مثل، D: DEX2JAR-0.09> DEX2JAR SomeFilename.dex (ضع في اعتبارك أن بعض ملفاتك. يجب أن يكون لديك داخل المجلد نفسه حيث يمكنك الاحتفاظ ب Dex2Jar الخاص بك.)
  4. تحميل جاد من http://www.viralpatel.net/blogs/download/jad/jad.zip. واستخراجه. مرة واحدة استخراج يمكنك رؤية ملفين مثل "jad.exe" و "readme.txt" (في بعض الأحيان "jad.txt" قد هناك بدلا من "jad.exe"، لذلك فقط إعادة تسمية امتدادها as.exe لتشغيل)
  5. أخيرا، في موجه الأوامر عليك أن تذكر مثل D: jad> jad -sjava yourfilename.class سوف تحليل ملف الفصل الخاص بك في وثيقة جافا قابلة للتحرير.

مع Dedexer., ، يمكنك تفكيك .dex ملف في dalvik bytecode (.ddx).

الالتزام باتجاه جافا غير ممكن بقدر ما أعرف.
يمكنك أن تقرأ عن Dalvik bytecode هنا.

الروبوت عكس الهندسة ممكن وبعد اتبع هذه الخطوات للحصول على ملف .java من ملف APK.

الخطوة 1 . باستخدام DEX2JAR.

  • إنشاء ملف .jar من ملف .apk
  • أمر : dex2jar sampleApp.apk

الخطوة 2 . فك ضغط .jar باستخدام JD-GUI

  • أنه يحتوي على ملفات .class IE، سنحصل obfcated. .java العودة من APK.

ديبيان الأخيرة لديها حزمة بيثون androguard:

Description-en: full Python tool to play with Android files
 Androguard is a full Python tool to play with Android files.
  * DEX, ODEX
  * APK
  * Android's binary xml
  * Android resources
  * Disassemble DEX/ODEX bytecodes
  * Decompiler for DEX/ODEX files

تثبيت الحزم المقابلة:

sudo apt-get install androguard python-networkx

ملف فك DEX:

$ androdd -i classes.dex -o ./dir-for-output

استخراج classes.dex من APK + Depromple:

$ androdd -i app.apk -o ./dir-for-output

ملف APK ليس أكثر أن أرشيف جافا (جرة)، يمكنك استخراج الملفات من الأرشيف عن طريق:

$ unzip app.apk -d ./dir-for-output

لقد تغير الكثير لأن معظم هذه الإجابات تم نشرها. الآن - أيام هناك العديد من الأدوات السهلة مع واجهة المستخدم الرسومية، مثل هذه:

APK Easy Tool for Windows (GUI tool, friendly)
Bytecode Viewer - APK/Java Reverse Engineering Suite
URET Android Reverser Toolkit

أفضل مكان للعثور عليها على منتدى مطوري XDA.

حيث Dheeraj Bhaskarالجواب قديم نسبيا ما بعد سنوات عديدة.

هنا أحدث الإجابة (2019 سنة):

المنطق الرئيسي

من dex ل java sourcecode, يحتوي حاليا على نوعين من الحل:

  • One Step: تحويل مباشرة dex ل java sourcecode
  • Two Step: أولا تحويل dex ل jar, ، التحويل الثاني jar ل java sourcecode

حل خطوة واحدة: dex مباشرة الى java sourcecode

أدوات

معالجة

  1. تحميل JADX-0.9.0.zip., ، UNZIP، في bin يمكن للمجلد رؤية سطر الأوامر jadx أو نسخة واجهة المستخدم الرسومية jadx-gui, ، انقر نقرا مزدوجا لتشغيل نسخة واجهة المستخدم الرسومية: jadx-gui

  1. افتح dex ملف

ثم يمكن أن تظهر شفرة المصدر جافا:

  1. File -> save as gradle project

ثم حصلت على sourcecode java:


حل خطوتين

الخطوة 1: dex ل jar

أدوات

معالجة

تحميل DEX2JAR Zip., ، unzip got. d2j-dex2jar.sh, ، ومن بعد:

  • apk ل jar: sh d2j-dex2jar.sh -f ~/path/to/apk_to_decompile.apk
  • dex ل jar: sh d2j-dex2jar.sh -f ~/path/to/dex_to_decompile.dex

مثال:

➜  v3.4.8 /Users/crifan/dev/dev_tool/android/reverse_engineering/dex-tools/dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.huili.readingclub8825612.dex
dex2jar com.huili.readingclub8825612.dex -> ./com.huili.readingclub8825612-dex2jar.jar
➜  v3.4.8 ll
-rw-------  1 crifan  staff   9.5M  3 21 10:00 com.huili.readingclub8825612-dex2jar.jar
-rw-------  1 crifan  staff   8.4M  3 19 14:04 com.huili.readingclub8825612.dex

الخطوة 2: jar ل java sourcecode

أدوات

معالجة

هنا تجريبي Procyon تحويل جرة إلى شفرة المصدر Java:

تحميل Procyon-decompiler-0.5.34.jar

ثم باستخدام بناء الجملة:

java -jar /path/to/procyon-decompiler-0.5.34.jar -jar your_to_decompile.jar -o outputFolderName

مثال:

java -jar /Users/crifan/dev/dev_tool/android/reverse_engineering/Procyon/procyon-decompiler-0.5.34.jar -jar com.huili.readingclub8825612-dex2jar.jar -o com.huili.readingclub8825612

باستخدام المحرر vscode. لفتح شفرة المصدر المصدرة، تبدو وكأنها هذه:

خاتمة

تصحيح التحويل: Jadx > Procyon > CRF > JD-GUI

يوصي الاستخدام: (حل خطوة واحدة) Jadx


لمزيد من التفسير التفصيلي، يرجى الرجوع لي على الإنترنت صينى الكتاب الاليكتروني: 安卓 应用 的 安全 和 破解

قد تحاول Jadx (https://bitbucket.org/mstrobel/procyon/wiki/java٪20Decompiler.)، هذه أداة مثالية ل Dexpilation DEX.

ونعم، كما يتوفر أيضا عبر الإنترنت (2: 0)) موقع جديد: http://www.javadecompilers.com/apk/

يمكن القيام بذلك في الخطوات الخمس التالية:

هذه الأحجار الكريمة تفعل هذه الأشياء لك تلقائيا حتى تثبيت الأدوات المطلوبة

  1. تحويل ملف apk إلى الرمز البريدي
  2. Unzip الملف
  3. استخراج الفصول.
  4. استخدم Dex To Jar لتحويل الفئات .DEX إلى ملف جرة
  5. استخدم Jadx Gui لفتح ملف Jar كصنعة مصدر Java

أسهل طريقة ل Defromeile تطبيق Android هو تنزيل تطبيق باسم Showjava. من PlayStore. ما عليك سوى تحديد التطبيق الذي يحتاج إلى فك الضغط من قائمة التطبيقات. هناك ثلاثة decompiler مختلفة يمكنك استخدامها لتركيب التطبيق وهي

CFR 0.110، JADX 0.6.1 أو Fernflower (depompiler التحليلي).

إذا كنت لا تتطلع إلى تنزيل DEX2JAR، فما عليك سوى استخدام apk_grabber بيثون سيناريو لتركيب أي APK في ملفات جرة. ثم تقرأها مع JD-GUI.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top