Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
javajive — Pure-Go Java デコンパイラおよびシリアライゼーション演算子 | Kitploit
ツール/GitHubGitHub/yaklang/javajive
静的分析コード分析リバースエンジニアリングスクリプトと自動化マルウェア分析ユーティリティとフレームワークバイナリ解析
GitHubyaklang/javajive

javajive

Pure-Go Java デコンパイラおよびシリアライゼーション演算子

リポジトリを見る
18441日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
ウェブサイト
共有

JavaJive — Pure-Go Java Toolkit: Decompile, Class Parse, Serialization

JavaJive

CI Pages Go Reference License: MIT

English | 简体中文 | Website

ポータブルな純粋Go製Javaツールキット — yaklangから抽出・整理されたもので、次の3つのことだけを行います:

  • デコンパイル — .class / .jar / / → 読めるJavaソース。
.war
.zip
  • クラスのパース — .classファイルの構造(定数プール、フィールド、メソッド、バージョン、アクセスフラグ)を検査。
  • (デ)シリアライズ — Javaシリアライゼーション(ObjectStream)のワイヤフォーマットをバイト単位の忠実性でパース・再マーシャリングし、JSONとの相互変換を行う。
  • ポータビリティと組み込みを目的として設計:

    • 純粋Go、単一バイナリ — JDK不要、cgo不要、ANTLRランタイム不要、ネイティブライブラリ不要。amd64とarm64のlinux / macOS / windowsにクロスコンパイル可能。
    • インポートは1つ — 統一されたjavajiveファサードパッケージが3つの機能すべてをラップ。高度な用途向けにサブパッケージも利用可能。
    • ファーストクラスのCLI — decompile、classinfo、serialサブコマンドを標準ライブラリ上に構築。
    • 実際のJDKに対するクロステスト — CIはjavac/javaで実際の.class / .jarおよびJDKシリアライズ済みブロブをコンパイルし、JavaJiveをそれらに対して検証します(HARNESS-WORKFLOW.md参照)。
    • 整理された依存グラフ — utils / codec / log / go-funkは最小限で自己完結したinternal/コアとして再実装。

    v0.4.0の検証

    完全な38-JAR差分監査は、固定ベースラインに対して記録されたリグレッションがゼロであることを示しています:以前コンパイルがクリーンだった20個のJARはすべて維持され、26個が完全にコンパイルされるようになりました。ベースラインの欠陥と4つの既存メソッドスタブは引き続き可視化されています。JARごとの結果と再現方法を参照してください。

    250件の分離されたセマンティックラウンドトリップは、コンパイル、JVM検証、スタブ、ランタイム等価性を個別に記録します。元のアプリケーションクラスは再構築されたクラスパスに存在しません。CIはJDK 17と21でセマンティック監査、完全な履歴比較、OS/Goおよびレースマトリクスを実行します。これらのチェックはすべてのライブラリメソッドの等価性を証明するものではありません。実装と残された境界を参照してください。

    過去のベンチマーク(v0.3.0)

    以下の数値は2026-09-05にv0.3.0について報告されたものです。これらは現行バージョンの受け入れ結果でも、動作等価性の証明でもありません。

    34個の実世界のjar(18,759個のフラット化ユニット)に対して、デコンパイル → javac --release 8再コンパイル → 再パッケージ → JVM検証で測定:

    • 100%ユニットクリーン率 — 18,759 / 18,759個のフラット化ユニット(Outer$Inner.java)が**javacエラーゼロで再コンパイルされ、34個のjarすべてで構文エラー0件**(CIで強制されるハードアサーションのため、字句解析の失敗の陰に型エラーが隠れることはありません)。
    • 34個のライブラリすべてが完全にラウンドトリップ — デコンパイル → 再コンパイル → 再パッケージ → 外部JVM -Xverify:allによるクラスごとの検証がエンドツーエンドで成功(コーデックは呼び出し差分において元のjarとバイト単位で同一)。provenCleanに固定。
    • 14 / 14のセルフホストアルゴリズム(MD5 · SHA-256 · CRC32 · quicksort · Base64 · HeapSort · KMP · SwitchFSM · TryFinally · UnionFind · DiamondTryCatch · DiamondTryFinally · ForContinue · ComputeIfAbsent)がバイト単位でラウンドトリップ。
    • 元の8-jarセットにおける公平な3者比較で第1位 — クリーンユニット率**100%**対Vineflower 1.10.1(90.8%)およびCFR 0.152(79.8%)。両者に対して8個のjarすべてで勝利。

    完全な方法論、jarごとの表、再現コマンドについてはBENCHMARK.mdを参照してください。

    インストール

    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以上が必要です。

    CLI

    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
    

    ライブラリ

    統一ファサードパッケージを使用してください — 1つのインポートで3つの機能すべてをカバーします:

    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...)
    

    統一API

    関数目的
    Decompile(classBytes) (string, error)1つの.classのバイト列をデコンパイル
    DecompileFile(path) (string, error)ディスクから1つの.classをデコンパイル
    DecompileWithResolver(classBytes, resolve)クラスバイト列リゾルバを使用してデコンパイル
    DecompileArchive(src, dst) error.jar/.war/.zipをディレクトリにデコンパイル
    ParseClass(classBytes) (*ClassObject, error)1つの.classのバイト列をパース
    ParseClassFile(path) (*ClassObject, error)ディスクから1つの.classをパース
    ParseSerialized(raw) ([]JavaSerializable, error)シリアライゼーションストリームをパース
    ParseSerializedHex(hexStr) ([]JavaSerializable, error)16進エンコードされたストリームをパース
    MarshalSerialized(objs...) []byteオブジェクトをワイヤフォーマットに再エンコード
    MarshalSerializedHex(objs...) string16進に再エンコード
    SerializedToJSON(objs...) ([]byte, error)オブジェクトをJSONに変換
    SerializedFromJSON(raw) ([]JavaSerializable, error)JSONからオブジェクトを再構築

    サブパッケージも高度な用途向けにエクスポートされています: classparser、classparser/jarwar、serialization。

    上流yaklangとの違い

    ポータブルかつ小さく保つため、JavaJiveはyaklangに対していくつかの意図的なトレードオフを行っています。完全なマッピングと移行ガイドについてはMIGRATE.mdを参照してください。

    領域yaklang(上流)JavaJive
    デコンパイラのANTLRセーフティネットANTLR Java文法を介してダンプされたソースを再検証;失敗時はメンバーをスタブに降格削除(重い依存関係);検証はノーオペレーションで、出力は直接生成される
    サポート層(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に対して検証します。JDKが存在しない場合は自動的にt.Skipします。ハーネスとCIの仕組みについてはHARNESS-WORKFLOW.mdを参照してください。

    プロジェクト構成

    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から派生しています。

    ツールをダウンロード