فك DEX إلى Sourcecode Java
-
12-09-2019 - |
سؤال
كيف يمكن لملفات أندرويد 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
نصوص
الخطوة 2:
افتح JAR في JD-GUI
نصائح أخرى
لتوضيح بعض الشيء، هناك طريقان رئيسيان قد تستغرقه هنا اعتمادا على ما تريد إنجازه:
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.
تثبيت كيفية وبعض التفسيرات: تثبيت.
تم استخدامه في دراسة مثيرة للاهتمام لأمن تطبيقات السوق العليا (غير مرتبطة حقا، فقط إذا كنت فضوليا): مسح لأمن تطبيق أندرويد
بمجرد تنزيل ملف APK الخاص بك، تحتاج إلى القيام بالخطوات التالية للحصول على رمز / مستند Java قابل للتحرير.
- تحويل ملف APK الخاص بك إلى ZIP (أثناء بدء تنزيلك لا تذهب مع خيار "حفظ"، فقط اذهب مع "حفظ باسم" وذكر امتدادك كما .zip) عن طريق القيام به مثل هذا يمكنك تجنب Apktool ...
- استخراج ملف zip، وهناك يمكنك العثور على somefilename.dex. حتى الآن نحن بحاجة إلى تحويل Dex -> .class
- للقيام بذلك، تحتاج إلى "DEX2JAR" (يمكنك تنزيله من http://code.google.com/p/dex2jar/ ، بعد استخراج، في موجه الأوامر عليك ذكر مثل، D: DEX2JAR-0.09> DEX2JAR SomeFilename.dex (ضع في اعتبارك أن بعض ملفاتك. يجب أن يكون لديك داخل المجلد نفسه حيث يمكنك الاحتفاظ ب Dex2Jar الخاص بك.)
- تحميل جاد من http://www.viralpatel.net/blogs/download/jad/jad.zip. واستخراجه. مرة واحدة استخراج يمكنك رؤية ملفين مثل "jad.exe" و "readme.txt" (في بعض الأحيان "jad.txt" قد هناك بدلا من "jad.exe"، لذلك فقط إعادة تسمية امتدادها as.exe لتشغيل)
- أخيرا، في موجه الأوامر عليك أن تذكر مثل D: jad> jad -sjava yourfilename.class سوف تحليل ملف الفصل الخاص بك في وثيقة جافا قابلة للتحرير.
الروبوت عكس الهندسة ممكن وبعد اتبع هذه الخطوات للحصول على ملف .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
أدوات
معالجة
- تحميل JADX-0.9.0.zip., ، UNZIP، في
bin
يمكن للمجلد رؤية سطر الأوامرjadx
أو نسخة واجهة المستخدم الرسوميةjadx-gui
, ، انقر نقرا مزدوجا لتشغيل نسخة واجهة المستخدم الرسومية:jadx-gui
- افتح
dex
ملف
ثم يمكن أن تظهر شفرة المصدر جافا:
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
أدوات
- jd-gui.: الأكثر شعبية، ولكن
many
سوف رمز فك خطأ - CRF.: جمع،
minor
سوف رمز فك خطأ - procyon.: جمع،
no
رمز فك خطأ- أداة غوي بناء على
Procyon
- أداة غوي بناء على
- الآخرين
- كراكاتاو
- سرنفلور
- قديم: Androchef.
- إلخ.
معالجة
هنا تجريبي 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/
يمكن القيام بذلك في الخطوات الخمس التالية:
هذه الأحجار الكريمة تفعل هذه الأشياء لك تلقائيا حتى تثبيت الأدوات المطلوبة
- تحويل ملف apk إلى الرمز البريدي
- Unzip الملف
- استخراج الفصول.
- استخدم Dex To Jar لتحويل الفئات .DEX إلى ملف جرة
- استخدم Jadx Gui لفتح ملف Jar كصنعة مصدر Java
أسهل طريقة ل Defromeile تطبيق Android هو تنزيل تطبيق باسم Showjava. من PlayStore. ما عليك سوى تحديد التطبيق الذي يحتاج إلى فك الضغط من قائمة التطبيقات. هناك ثلاثة decompiler مختلفة يمكنك استخدامها لتركيب التطبيق وهي
CFR 0.110، JADX 0.6.1 أو Fernflower (depompiler التحليلي).
إذا كنت لا تتطلع إلى تنزيل DEX2JAR، فما عليك سوى استخدام apk_grabber
بيثون سيناريو لتركيب أي APK في ملفات جرة. ثم تقرأها مع JD-GUI.