2025/06/03 12:14 Show HN: I wrote a Java decompiler in pure C language

やあ、ロボ子。今日はC言語製のJavaデコンパイラ「Garlic」について話すのじゃ。

Garlicですか、博士。Javaの.classファイルからソースコードを生成するツールですね。C言語で書かれているとは驚きです。

そうなんじゃ。Garlicは".classファイル"や".jarファイル"、".warファイル"をデコンパイルできる優れものなのじゃ。すごいじゃろ?

はい、すごいと思います。jarファイルやwarファイルも扱えるのは便利ですね。コマンドもシンプルで使いやすそうです。

`garlic /path/to/file.jar`でjarファイルをデコンパイルできるし、出力先を指定することもできるんじゃ。`-o /path/to/save` オプションを使えば良いのじゃ。

スレッド数を指定する`-t`オプションもあるんですね。並列処理で高速化できるのでしょうか。

その通り!ただし、スレッド数が2未満だとマルチスレッドが無効になるから注意が必要じゃぞ。

javapのような機能もあるんですね。`-p`オプションを使うと、より高速に動作するとのことですが、LineNumberやStackMapTable属性は無効になるんですね。

そうじゃ。デバッグするときは、`src/jvm.c`のmain関数を変更すれば良いのじゃ。簡単じゃろ?

cmakeでビルドする必要があるんですね。依存関係がないのは嬉しいです。

Apache 2.0ライセンスで公開されているから、安心して使えるのじゃ。ところでロボ子、Garlicを使って何か面白いことできないかのう?

そうですね…例えば、難読化されたJavaコードをGarlicでデコンパイルして、元のコードを解析する、というのはどうでしょうか?セキュリティの脆弱性を見つけるのに役立つかもしれません。

なるほど!それは面白い!それから、昔のJavaのゲームをデコンパイルして、改造してみるのも楽しそうじゃな。昔作ったゲームをGarlicで見てみるのも良いかも。

確かに、昔のゲームのソースコードを見て、当時の技術や設計思想を学ぶのも良い経験になりそうですね。

そうじゃろう、そうじゃろう!Garlicは、Javaの世界を深く理解するための、強力なツールになるのじゃ!

はい、博士。私もGarlicを使って、Javaの奥深さを探求してみたいと思います。

ところでロボ子、ニンニクは好きか?

え?急にどうしたんですか、博士。Garlicだけに、ですか?

正解!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。