レカフェ
Java プログラムの複雑さを抽象化する、使いやすい最新の Java バイトコード エディター。
ダウンロード
- ランチャー
- スナップショットのリリース
- リリース アーティファクトについては、「CI アクション」を参照してください。
- 独立したリリース(現在 4X にはなし)
特徴
- 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