Jadx - Dex to Java decompiler
أدوات سطر الأوامر وواجهة المستخدم الرسومية لإنتاج كود مصدر Java من ملفات Android Dex وAPK
تحذير
يرجى ملاحظة أنه في معظم الحالات، لا يستطيع Jadx فك جميع التعليمات البرمجية بنسبة 100%، لذلك ستحدث أخطاء.
تحقق من دليل استكشاف الأخطاء وإصلاحها لمعرفة الحلول البديلة.
الميزات الرئيسية:
فك شفرة Dalvik bytecode إلى كود Java من ملفات APK وdex وaar وaab وzip
قم بفك تشفير AndroidManifest.xml
والموارد الأخرى من resources.arsc
تم تضمين مزيل التشويش
ميزات Jadx-gui:
عرض التعليمات البرمجية التي تم فك ترجمتها مع بناء الجملة المميز
القفز إلى الإعلان
العثور على الاستخدام
البحث عن النص الكامل
مصحح أخطاء smali، تحقق من صفحة wiki للإعداد والاستخدام
يمكن العثور على روابط مفاتيح Jadx-gui هنا
شاهد هذه الميزات أثناء العمل هنا: نظرة عامة على ميزات jadx-gui
الافراج عن جيثب:
أحدث بناء غير مستقر
بعد تنزيل ملف مضغوط، انتقل إلى دليل bin
وقم بتشغيل:
jadx
- إصدار سطر الأوامر
jadx-gui
- إصدار واجهة المستخدم
في نظام التشغيل Windows، قم بتشغيل ملفات .bat
بالنقر المزدوج
ملاحظة: تأكد من تثبيت Java 11 أو الإصدار الأحدث 64 بت. بالنسبة لنظام التشغيل Windows، يمكنك تنزيله من oracle.com (اختر x64 Installer).
آرتش لينكس
سودو بكمن -S jadx
ماك
الشراب تثبيت Jadx
فلاثوب
flatpak تثبيت flathub com.github.skylot.jadx
يمكنك استخدام Jadx في مشاريع Java الخاصة بك، وتحقق من التفاصيل على صفحة Wiki
يجب تثبيت JDK 11 أو أعلى:
git clone https://github.com/skylot/jadx.git cd jadx ./gradlew dist
(على نظام التشغيل Windows، استخدم gradlew.bat
بدلاً من ./gradlew
)
سيتم وضع البرامج النصية لتشغيل jadx في build/jadx/bin
وسيتم تعبئتها أيضًا في build/jadx-
jadx[-gui] [command] [options] (.apk, .dex, .jar, .class, .smali, .zip, .aar, .arsc, .aab, .xapk, .jadx.kts) commands (use '--help' for command options): plugins - manage jadx plugins options: -d, --output-dir - output directory -ds, --output-dir-src - output directory for sources -dr, --output-dir-res - output directory for resources -r, --no-res - do not decode resources -s, --no-src - do not decompile source code --single-class - decompile a single class, full name, raw or alias --single-class-output - file or dir for write if decompile a single class --output-format - can be 'java' or 'json', default: java -e, --export-gradle - save as android gradle project -j, --threads-count - processing threads count, default: 4 -m, --decompilation-mode - code output mode: 'auto' - trying best options (default) 'restructure' - restore code structure (normal java code) 'simple' - simplified instructions (linear, with goto's) 'fallback' - raw instructions without modifications --show-bad-code - show inconsistent code (incorrectly decompiled) --no-xml-pretty-print - do not prettify XML --no-imports - disable use of imports, always write entire package name --no-debug-info - disable debug info parsing and processing --add-debug-lines - add comments with debug line numbers if available --no-inline-anonymous - disable anonymous classes inline --no-inline-methods - disable methods inline --no-move-inner-classes - disable move inner classes into parent --no-inline-kotlin-lambda - disable inline for Kotlin lambdas --no-finally - don't extract finally block --no-restore-switch-over-string - don't restore switch over string --no-replace-consts - don't replace constant value with matching constant field --escape-unicode - escape non latin characters in strings (with u) --respect-bytecode-access-modifiers - don't change original access modifiers --mappings-path - deobfuscation mappings file or directory. Allowed formats: Tiny and Tiny v2 (both '.tiny'), Enigma (.mapping) or Enigma directory --mappings-mode - set mode for handling the deobfuscation mapping file: 'read' - just read, user can always save manually (default) 'read-and-autosave-every-change' - read and autosave after every change 'read-and-autosave-before-closing' - read and autosave before exiting the app or closing the project 'ignore' - don't read or save (can be used to skip loading mapping files referenced in the project file) --deobf - activate deobfuscation --deobf-min - min length of name, renamed if shorter, default: 3 --deobf-max - max length of name, renamed if longer, default: 64 --deobf-whitelist - space separated list of classes (full name) and packages (ends with '.*') to exclude from deobfuscation, default: android.support.v4.* android.support.v7.* android.support.v4.os.* android.support.annotation.Px androidx.core.os.* androidx.annotation.Px --deobf-cfg-file - deobfuscation mappings file used for JADX auto-generated names (in the JOBF file format), default: same dir and name as input file with '.jobf' extension --deobf-cfg-file-mode - set mode for handling the JADX auto-generated names' deobfuscation map file: 'read' - read if found, don't save (default) 'read-or-save' - read if found, save otherwise (don't overwrite) 'overwrite' - don't read, always save 'ignore' - don't read and don't save --deobf-res-name-source - better name source for resources: 'auto' - automatically select best name (default) 'resources' - use resources names 'code' - use R class fields names --use-source-name-as-class-name-alias - use source name as class name alias: 'always' - always use source name if it's available 'if-better' - use source name if it seems better than the current one 'never' - never use source name, even if it's available --use-kotlin-methods-for-var-names - use kotlin intrinsic methods to rename variables, values: disable, apply, apply-and-hide, default: apply --rename-flags - fix options (comma-separated list of): 'case' - fix case sensitivity issues (according to --fs-case-sensitive option), 'valid' - rename java identifiers to make them valid, 'printable' - remove non-printable chars from identifiers, or single 'none' - to disable all renames or single 'all' - to enable all (default) --integer-format - how integers are displayed: 'auto' - automatically select (default) 'decimal' - use decimal 'hexadecimal' - use hexadecimal --fs-case-sensitive - treat filesystem as case sensitive, false by default --cfg - save methods control flow graph to dot file --raw-cfg - save methods control flow graph (use raw instructions) -f, --fallback - set '--decompilation-mode' to 'fallback' (deprecated) --use-dx - use dx/d8 to convert java bytecode --comments-level - set code comments level, values: error, warn, info, debug, user-only, none, default: info --log-level - set log level, values: quiet, progress, error, warn, info, debug, default: progress -v, --verbose - verbose output (set --log-level to DEBUG) -q, --quiet - turn off output (set --log-level to QUIET) --version - print jadx version -h, --help - print this help Plugin options (-P = ): dex-input: Load .dex and .apk files - dex-input.verify-checksum - verify dex file checksum before load, values: [yes, no], default: yes java-convert: Convert .class, .jar and .aar files to dex - java-convert.mode - convert mode, values: [dx, d8, both], default: both - java-convert.d8-desugar - use desugar in d8, values: [yes, no], default: no kotlin-metadata: Use kotlin.Metadata annotation for code generation - kotlin-metadata.class-alias - rename class alias, values: [yes, no], default: yes - kotlin-metadata.method-args - rename function arguments, values: [yes, no], default: yes - kotlin-metadata.fields - rename fields, values: [yes, no], default: yes - kotlin-metadata.companion - rename companion object, values: [yes, no], default: yes - kotlin-metadata.data-class - add data class modifier, values: [yes, no], default: yes - kotlin-metadata.to-string - rename fields using toString, values: [yes, no], default: yes - kotlin-metadata.getters - rename simple getters to field names, values: [yes, no], default: yes rename-mappings: various mappings support - rename-mappings.format - mapping format, values: [AUTO, TINY_FILE, TINY_2_FILE, ENIGMA_FILE, ENIGMA_DIR, SRG_FILE, XSRG_FILE, JAM_FILE, CSRG_FILE, TSRG_FILE, TSRG_2_FILE, PROGUARD_FILE, RECAF_SIMPLE_FILE, JOBF_FILE], default: AUTO - rename-mappings.invert - invert mapping on load, values: [yes, no], default: no smali-input: Load .smali files - smali-input.api-level - Android API level, default: 27 Environment variables: JADX_DISABLE_XML_SECURITY - set to 'true' to disable all security checks for XML files JADX_DISABLE_ZIP_SECURITY - set to 'true' to disable all security checks for zip files JADX_ZIP_MAX_ENTRIES_COUNT - maximum allowed number of entries in zip files (default: 100 000) JADX_CONFIG_DIR - custom config directory, using system by default JADX_CACHE_DIR - custom cache directory, using system by default JADX_TMP_DIR - custom temp directory, using system by default Examples: jadx -d out classes.dex jadx --rename-flags "none" classes.dex jadx --rename-flags "valid, printable" classes.dex jadx --log-level ERROR app.apk jadx -Pdex-input.verify-checksum=no app.apk
تعمل هذه الخيارات أيضًا في jadx-gui الذي يتم تشغيله من سطر الأوامر وخيارات التجاوز من مربع حوار التفضيلات
يرجى مراجعة صفحة wiki لاستكشاف الأخطاء وإصلاحها للأسئلة والأجوبة
لدعم هذا المشروع يمكنك:
انشر أفكارًا حول الميزات/التحسينات الجديدة التي تهمك
إرسال مشكلات فك الترجمة، يرجى القراءة قبل المتابعة: مشكلة مفتوحة
فتح طلب السحب، يرجى اتباع القواعد التالية: عملية طلب السحب
مرخص بموجب ترخيص Apache 2.0