Recaf


使いやすいモダンなJavaバイトコードエディタで、Javaプログラムの複雑さを抽象化します。
ダウンロード
機能
- Javaバイトコードを高レベル・低レベル問わず簡単に編集できます (面倒な部分は除く)
- Recaf内のエディタ機能は、コンパイルされたJavaアプリケーションの複雑な詳細を抽象化します。例えば:
- 定数プール
- スタックフレーム計算
- 必要に応じたワイド命令の使用
- その他!
- コンテキストに応じたアクションを備えた、使いやすいナビゲーションインターフェース
- 標準Java および Androidアプリケーションのサポート
- 複数のデコンパイラを切り替え可能で、すべてのパラメータを完全に設定可能
- 組み込みコンパイラにより、参照クラスの一部が欠落していても、デコンパイルしたクラスを再コンパイル可能 (サポートされる場合、コードの複雑さや難読化によってサポート状況は異なります)
- シンプルな構文のバイトコードアセンブラと、それを支援するツール
- メソッド内の任意の時点でのローカル変数やスタック値の状態を確認可能
- よりわかりやすい逆アセンブルコードのために、インデックスではなく名前で変数にアクセス
- Javaソースコードのスニペットを自動的にバイトコードシーケンスに変換
- さまざまなコンテンツの検索:文字列/数値定数、クラスとメンバ参照、命令パターン
- 難読化されたコードを解析するためのツール
- リバースエンジニアリングツールをクラッシュさせる目的で特別に細工されたクラスファイルは、Recafで開いたときに自動的にパッチが適用されます
- 特別に細工されたjar/zipファイルはJVMと同様に読み取られ、リバースエンジニアリングツールを欺いて誤ったデータを表示させる巧妙なトリックを回避します
- 難読化されたクラスとそのメンバの自動リネームのサポート
- クラスとそのメンバの手動リネームのサポート (他のツールで使用するためにこれらのマッピングをさまざまなマッピング形式にエクスポート)
- 一般的な難読化戦略を簡略化するためのバイトコード変換器
- 実行中のJavaプロセスにインストルメンテーション機能でアタッチ
- その他多数
機能の完全なリストはユーザードキュメントにあります。
スクリプティングとプラグイン
Recafは、モジュール式APIを通じてほぼすべての機能を公開しています。スクリプトを使用して簡単に動作を自動化したり、より複雑な状況ではプラグインを使用することができます。また、プラグインを介して追加の機能を追加することもでき、プラグインはそれらを提供するAPIにフックを登録できます。
独自のスクリプトやプラグインを作成するには、開発者ドキュメント、特に 「プラグインとスクリプト」 セクションを参照してください。
コマンドライン
Recafはコマンドラインアプリケーションとして実行可能で、起動時にスクリプトを指定する場合に特に便利です。アプリケーション引数として--helpを渡すと、現在のすべての起動引数を確認できます。
開発環境のセットアップ
git clone https://github.com/Col-E/Recaf.gitでリポジトリをクローンします。
プロジェクトをIDEで開くか、gradleでビルドを生成します。
IDE:
build.gradleファイルからプロジェクトをインポート
- メインクラス
software.coley.recaf.Mainで実行構成を作成
IDEなしの場合:
gradlew buildを実行
- 出力は
recaf-ui/build/libs/recaf-ui-{VERSION}-all.jar に配置されます。