Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
javajive — مفكك ومشغل تسلسل Java مكتوب بالكامل بلغة Go | Kitploit
أدوات/GitHubGitHub/yaklang/javajive
التحليل الثابتتحليل الكودالهندسة العكسيةالبرمجة النصية والأتمتةتحليل البرمجيات الخبيثةالأدوات والمكوناتتحليل الملفات الثنائية
GitHubyaklang/javajive

javajive

مفكك ومشغل تسلسل Java مكتوب بالكامل بلغة Go

عرض المستودع
1844منذ يوم واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

JavaJive — مجموعة أدوات Java خالصة بلغة Go: فك الترجمة، تحليل الفئات، التسلسل

JavaJive

CI Pages Go Reference License: MIT

English | 简体中文 | Website

مجموعة أدوات Java محمولة، خالصة بلغة Go — مستخرجة ومقلّمة من yaklang — تقوم بثلاثة أشياء ولا شيء غيرها:

  • فك الترجمة — .class / .jar / / → شيفرة Java قابلة للقراءة.
.war
.zip
  • تحليل الفئات — فحص بنية ملف .class (المجمّع الثابت، الحقول، الدوال، الإصدار، أعلام الوصول).
  • التسلسل/إلغاء التسلسل — تحليل وإعادة تجميع صيغة نقل تسلسل Java (ObjectStream) بدقة بايتية، وتحويلها من/إلى JSON.
  • مصمّمة للمحمولية والتضمين:

    • Go خالصة، ملف تنفيذي واحد — بدون JDK، بدون cgo، بدون وقت تشغيل ANTLR، بدون مكتبات أصلية. تُترجم تبادلياً إلى linux / macOS / windows على amd64 و arm64.
    • استيراد واحد — حزمة واجهة موحّدة javajive تغلّف القدرات الثلاث جميعها؛ وتبقى الحزم الفرعية متاحة للاستخدام المتقدم.
    • واجهة سطر أوامر من الدرجة الأولى — أوامر فرعية decompile و classinfo و serial، مبنية على المكتبة القياسية.
    • مُختبرة تبادلياً مقابل JDK حقيقي — تقوم CI بترجمة ملفات .class / .jar حقيقية وكتل مُسلسلة بـ JDK باستخدام javac/java، ثم تتحقق من JavaJive مقابلها (انظر HARNESS-WORKFLOW.md).
    • رسم تبعيات مقلّم — أُعيد تنفيذ utils / codec / log / go-funk كنواة internal/ دنيا ومكتفية ذاتياً.

    التحقق من v0.4.0

    سجّل تدقيق تفاضلي كامل لـ 38 ملف JAR صفر تراجعات مسجّلة مقابل الأساس الثابت: أُبقيت جميع ملفات JAR العشرين النظيفة الترجمة سابقاً و26 منها تُترجم الآن بالكامل. تبقى عيوب الأساس و4 دوال موجودة كأطراف فارغة مرئية. انظر نتائج كل ملف JAR وإعادة الإنتاج.

    تسجّل 250 رحلة ذهاب وإياب دلالية معزولة الترجمة والتحقق من JVM والأطراف الفارغة والتساوي في وقت التشغيل بشكل منفصل؛ فئات التطبيق الأصلية غائبة عن مسارات الفئات المعاد بناؤها. تشغّل CI التدقيق الدلالي على JDK 17 و21، والمقارنة التاريخية الكاملة، ومصفوفات OS/Go والسباق. لا تُثبت هذه الفحوصات تكافؤ كل دالة مكتبة. انظر التنفيذ والحدود المتبقية.

    المعايير التاريخية (v0.3.0)

    أُبلغت الأرقام التالية لـ v0.3.0 في 2026-09-05. وهي ليست نتائج قبول للإصدار الحالي ولا دليلاً على التكافؤ السلوكي.

    قِيست على 34 ملف JAR واقعياً (18,759 وحدة مسطّحة) عبر فك الترجمة → إعادة الترجمة بـ javac --release 8 → إعادة التغليف → التحقق من JVM:

    • معدل نظافة الوحدات 100% — 18,759 / 18,759 وحدة مسطّحة (Outer$Inner.java) تُترجم مجدداً بـ صفر أخطاء javac، و0 أخطاء نحوية عبر جميع ملفات JAR الـ34 (تأكيد صارم تفرضه CI، فلا يمكن لخطأ نوعي أن يختفي خلف فشل محلّل معجمي).
    • جميع المكتبات الـ34 تكمل الرحلة كاملة — فك الترجمة → إعادة الترجمة → إعادة التغليف → تحقق JVM خارجي -Xverify:all لكل فئة ينجح من البداية إلى النهاية (المُرمّز مطابق بايتياً لـ ملف JAR الأصلي تحت تفاضل الاستدعاءات). مثبّت في provenClean.
    • 14 / 14 خوارزمية مستضافة ذاتياً (MD5 · SHA-256 · CRC32 · quicksort · Base64 · HeapSort · KMP · SwitchFSM · TryFinally · UnionFind · DiamondTryCatch · DiamondTryFinally · ForContinue · ComputeIfAbsent) تكمل الرحلة بايتاً ببايت.
    • المرتبة #1 في مقارنة ثلاثية عادلة على مجموعة الـ8 ملفات JAR الأصلية — معدل الوحدات النظيفة 100% مقابل Vineflower 1.10.1 (90.8%) وCFR 0.152 (79.8%)؛ متفوقة على جميع ملفات JAR الـ8 مقابل كليهما.

    انظر BENCHMARK.md للمنهجية الكاملة وجداول كل ملف JAR وأوامر إعادة الإنتاج.

    التثبيت

    root@kitploit:~
    # CLI
    go install github.com/yaklang/javajive/cmd/javajive@latest
    
    # Library
    go get github.com/yaklang/javajive@latest
    

    أو البناء من المصدر:

    root@kitploit:~
    git clone https://github.com/yaklang/javajive
    cd javajive
    go build -o javajive ./cmd/javajive
    

    يتطلب Go 1.22+.

    واجهة سطر الأوامر

    root@kitploit:~
    javajive <command> [arguments]
    
    Commands:
      decompile   decompile .class/.jar/.war/.zip or a directory into Java source
      classinfo   print the structure of a .class file (version, fields, methods)
      serial      Java serialization tools (subcommands: tojson, fromjson)
      version     print the version
      help        show help
    

    decompile

    root@kitploit:~
    # Single class: prints to stdout by default, or -o to write a file.
    javajive decompile Foo.class
    javajive decompile Foo.class -o Foo.java
    
    # Archive: defaults to a "<input>.src" directory, or -o to choose one.
    javajive decompile app.jar
    javajive decompile app.war -o ./app-src
    
    # Directory: recursively decompile .class files (requires -o output dir).
    javajive decompile ./classes -o ./src
    

    classinfo

    root@kitploit:~
    javajive classinfo Foo.class
    
    root@kitploit:~
    class:      InvisibleAnnoSeed
    super:      java/lang/Object
    version:    61.0
    access:     public
    constants:  18
    
    fields (0):
    
    methods (2):
       <init>()V
       run()I
    

    serial

    root@kitploit:~
    # Serialized binary -> JSON. (-hex: input is a hex string, -: read from stdin)
    javajive serial tojson dump.bin
    printf 'aced000574000568656c6c6f' | javajive serial tojson -hex -
    
    # JSON -> serialized binary. (default prints hex; with -o writes raw bytes)
    javajive serial fromjson dump.json -o out.bin
    javajive serial fromjson dump.json          # prints hex
    

    المكتبة

    استخدم حزمة الواجهة الموحّدة — استيراد واحد يغطي القدرات الثلاث جميعها:

    root@kitploit:~
    import "github.com/yaklang/javajive"
    
    // Decompile a single class, or a whole archive into a directory.
    src, err := javajive.Decompile(classBytes)
    err = javajive.DecompileArchive("app.jar", "app-src")
    
    // Inspect class structure.
    obj, err := javajive.ParseClass(classBytes)
    _ = obj.GetClassName()
    
    // Java serialization: binary -> JSON -> binary.
    objs, _ := javajive.ParseSerialized(raw)          // or ParseSerializedHex(hexStr)
    jsonBytes, _ := javajive.SerializedToJSON(objs...)
    restored, _ := javajive.SerializedFromJSON(jsonBytes)
    out := javajive.MarshalSerialized(restored...)
    

    واجهة برمجة موحّدة

    الدالةالغرض
    Decompile(classBytes) (string, error)فك ترجمة بايتات ملف .class واحد
    DecompileFile(path) (string, error)فك ترجمة ملف .class واحد من القرص
    DecompileWithResolver(classBytes, resolve)فك الترجمة مع مُحلّل بايتات الفئات
    DecompileArchive(src, dst) errorفك ترجمة .jar/.war/.zip إلى مجلد
    ParseClass(classBytes) (*ClassObject, error)تحليل بايتات ملف .class واحد
    ParseClassFile(path) (*ClassObject, error)تحليل ملف .class واحد من القرص
    ParseSerialized(raw) ([]JavaSerializable, error)تحليل تدفق تسلسل
    ParseSerializedHex(hexStr) ([]JavaSerializable, error)تحليل تدفق مُرمّز سادس عشرياً
    MarshalSerialized(objs...) []byteإعادة ترميز الكائنات إلى صيغة النقل
    MarshalSerializedHex(objs...) stringإعادة الترميز إلى سادس عشري
    SerializedToJSON(objs...) ([]byte, error)تحويل الكائنات إلى JSON
    SerializedFromJSON(raw) ([]JavaSerializable, error)إعادة بناء الكائنات من JSON

    الحزم الفرعية مُصدّرة أيضاً للاستخدام المتقدم: classparser، classparser/jarwar، serialization.

    الفروق عن yaklang الأصلية

    للحفاظ على المحمولية والصغر، تُجري JavaJive بعض المقايضات المتعمدة مقابل yaklang. انظر MIGRATE.md للخريطة الكاملة ودليل الترحيل.

    المجالyaklang (الأصلية)JavaJive
    شبكة أمان ANTLR لفك الترجمةتعيد التحقق من الشيفرة المُفرّغة عبر قواعد Java في ANTLR؛ تُحوّل الأعضاء إلى أطراف فارغة عند الفشلمُزالة (تبعية ثقيلة)؛ التحقق عملية لا فعلية، والمخرجات تُصدر مباشرة
    طبقة الدعم (utils / codec / log / go-funk)حزم مشتركة في المستودع الأحاديإعادة تنفيذ دنيا مكتفية ذاتياً تحت internal/
    مولّد أدوات ysoمُضمّنغير مُضمّن
    استعادة ترميز محارف السلاسل النصية (MatchMIMEType)استعادة اختيارية GBK/GB18030مُستبدل بطرف فارغ (لا فعلية)؛ السلوك دون تغيير في الغالبية العظمى من الحالات

    تقتصر تبعيات الطرف الثالث على مجموعة صغيرة من مكتبات Go الخالصة (gobwas/glob، go-viper/mapstructure، samber/lo، tidwall/gjson، segmentio/ksuid، yeka/zip، وبعض golang.org/x/*).

    الاختبار

    root@kitploit:~
    go test ./...                 # unit tests + JDK cross-tests (skipped if no JDK)
    go test ./... -race           # data-race free (linux)
    go test ./test/cross/ -v      # Java cross-tests only (needs javac/java on PATH)
    

    تُترجم اختبارات JDK التبادلية قطع Java حقيقية وقت الاختبار وتتحقق منها مقابل JavaJive؛ وتُتخطّى تلقائياً (t.Skip) عند غياب JDK. انظر HARNESS-WORKFLOW.md لكيفية عمل أداة الاختبار وCI.

    هيكل المشروع

    root@kitploit:~
    javajive.go      unified facade package (import "github.com/yaklang/javajive")
    serialization/   Java serialization/deserialization (from yaklang common/yserx)
    classparser/     class parser + decompiler (from yaklang common/javaclassparser)
    cmd/javajive/    CLI entry point
    internal/        trimmed self-contained support layer (log / codec / funk / utils / filesys / ...)
    test/cross/      JDK-backed cross-tests (javac/java)
    site/            static landing page deployed to GitHub Pages
    

    الترخيص

    MIT © 2026 VillanCh. JavaJive مشتقة من yaklang.

    تنزيل الأداة