Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
pyjadx — ربط بايثون لـ JADX. | Kitploit
أدوات/GitHubGitHub/amruth-sn/pyjadx
أمان أندرويدالتحليل الثابتتحليل الكودالهندسة العكسيةأمن الجوالتحليل الملفات الثنائية
GitHubamruth-sn/pyjadx

pyjadx

ربط بايثون لـ JADX.

عرض المستودع
6منذ 5 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

pyjadx

روابط بايثون لـ JADX عبر JPype. قم بفك تجميع ملفات APK وDEX لأندرويد إلى كود مصدر جافا من بايثون.

root@kitploit:~
from pyjadx import Jadx

with Jadx("app.apk") as jadx:
    for cls in jadx.classes:
        print(cls.full_name)
        print(cls.code)

لماذا pyjadx؟

JADX هو أفضل مفكك برمجيات مفتوح المصدر لنظام أندرويد — فهو ينتج كود مصدر جافا/كوتلن نظيفًا من بايت كود Dalvik، مع الحفاظ على التسلسلات الهرمية للفئات، والأنواع العامة (generics)، ومعالجة الاستثناءات، والتعليقات التوضيحية. pyjadx يجلب هذا إلى بايثون دون حمل العمليات الفرعية: يعمل JADX داخل العملية عبر JPype.

التثبيت

root@kitploit:~
pip install pyjadx

المتطلبات: JDK 11+ (يتم تنزيل ملفات JADX JAR تلقائيًا عند أول استخدام).

بداية سريعة

root@kitploit:~
from pyjadx import Jadx

with Jadx("app.apk") as jadx:
    # All top-level classes (inner classes via cls.inner_classes)
    for cls in jadx.classes:
        print(cls.full_name, len(cls.methods), "methods")

    # Search by fully qualified name
    main = jadx.search_class("com.example.MainActivity")
    if main:
        print(main.code)

    # Method-level decompilation
    for method in main.methods:
        print(f"{method.name}: {method.code}")

    # Cross-references
    for method in main.methods:
        print(f"{method.name} called by: {[c.name for c in method.callers]}")

    # Package navigation
    for pkg in jadx.packages:
        print(pkg.name, len(pkg.classes), "classes")

المدخلات المدعومة

FormatExample
APKJadx("app.apk")
DEXJadx("classes.dex")
Multi-DEX APKيتم التعامل معها بشفافية — يتم دمج جميع الفئات

مرجع API

Jadx(path, *, threads=None, mode="auto", code_cache=False)

نقطة الدخول الرئيسية. استخدم كمدير سياق أو استدعِ load()/close() يدويًا.

الخصائص:

الطرق:

JavaClass

JavaMethod

JavaField

JavaPackage

فتحة الهروب

كل غلاف يعرض كائن JADX جافا الأساسي الخاص به عبر .java. يتيح لك هذا استدعاء أي واجهة برمجة تطبيقات JADX لم نقم بتغليفها بعد:

root@kitploit:~
with Jadx("app.apk") as jadx:
    cls = jadx.search_class("com.example.Foo")
    # Call JADX Java API directly
    code_info = cls.java.getCodeInfo()

التعايش مع JVM

يتعايش pyjadx مع مستهلكي JPype الآخرين (مثل PyGhidra) في نفس العملية. إذا كانت JVM قيد التشغيل بالفعل، فإن pyjadx.start() يضيف ملفات JADX JAR إلى مسار الفئات الحالي. إذا لم تكن قيد التشغيل، فإنه يبدأ واحدة.

root@kitploit:~
import pyghidra
pyghidra.start()  # starts JVM for Ghidra

import pyjadx
pyjadx.start()    # adds JADX JARs to existing JVM — no conflict

التكوين

تثبيت JADX مخصص:

root@kitploit:~
# Via environment variable
# export JADX_HOME=/opt/jadx

# Or at runtime
import pyjadx
pyjadx.start(jadx_home="/opt/jadx")

تخزين مؤقت لـ JAR: يتم تنزيل ملفات JADX JAR تلقائيًا من Maven Central عند أول استخدام وتخزينها مؤقتًا في ~/.pyjadx/jars/<version>/.

الترخيص

MIT

تنزيل الأداة
ParameterDescription
pathالمسار إلى ملف APK أو DEX
threadsحجم تجمع خيوط JADX (None = عدد وحدات المعالجة المركزية)
mode"auto"، "restructure"، "simple"، أو "fallback"
code_cacheFalse = ذاكرة مؤقتة في الذاكرة (افتراضي)، True = مدعوم بالقرص
PropertyTypeDescription
classeslist[JavaClass]الفئات ذات المستوى الأعلى عبر جميع ملفات DEX
packageslist[JavaPackage]التنقل على مستوى الحزم
class_countintعدد الفئات ذات المستوى الأعلى
javaJObjectفتحة هروب إلى jadx.api.JadxDecompiler الأساسي
MethodDescription
load()تحميل الفئات وحلها (يتم الاستدعاء بواسطة __enter__)
close()تحرير الموارد (يتم الاستدعاء بواسطة __exit__)
decompile_all()فك تجميع جميع الفئات فورًا
search_class(name)العثور على فئة بالاسم المؤهل بالكامل
PropertyTypeDescription
namestrالاسم المختصر ("MainActivity")
full_namestrالاسم المؤهل بالكامل ("com.example.MainActivity")
packagestrاسم الحزمة
codestrكود مصدر جافا المفكك (كسول، مخبأ)
smalistrتفكيك Smali (كسول، مخبأ)
methodslist[JavaMethod]الطرق في هذه الفئة
fieldslist[JavaField]الحقول في هذه الفئة
inner_classeslist[JavaClass]الفئات الداخلية / المجهولة
declaring_classJavaClass | Noneالفئة الأم (إذا كانت داخلية)
top_classJavaClassالفئة الخارجية الأكثر احتواءً
dependencieslist[JavaClass]الفئات التي تعتمد عليها هذه الفئة
is_innerboolهل هذه فئة داخلية
javaJObjectفتحة هروب إلى jadx.api.JavaClass
PropertyTypeDescription
namestrاسم الطريقة
full_namestrالاسم المؤهل بالكامل مع الفئة
codestrالكود المفكك (كسول، مخبأ)
callerslist[JavaMethod]الطرق التي تستدعي هذه (كسول، مخبأ)
calleeslist[JavaMethod]الطرق التي تستدعيها هذه (كسول، مخبأ)
override_relatedlist[JavaMethod]سلسلة التجاوز ثنائية الاتجاه
declaring_classJavaClassالفئة التي تنتمي إليها هذه الطريقة
javaJObjectفتحة هروب إلى jadx.api.JavaMethod
PropertyTypeDescription
namestrاسم الحقل
full_namestrالاسم المؤهل بالكامل مع الفئة
typestrنوع الحقل كسلسلة نصية
callerslist[JavaMethod]الطرق التي تشير إلى هذا الحقل (كسول، مخبأ)
declaring_classJavaClassالفئة التي ينتمي إليها هذا الحقل
javaJObjectفتحة هروب إلى jadx.api.JavaField
PropertyTypeDescription
namestrاسم الحزمة الكامل
classeslist[JavaClass]الفئات في هذه الحزمة
sub_packageslist[JavaPackage]الحزم الفرعية
javaJObjectفتحة هروب إلى jadx.api.JavaPackage