Reko (スウェーデン語: 「まともな、義務的な」) は、マシンコード バイナリの逆コンパイラーです。このプロジェクトは、GNU General Public License に基づいて自由に利用できます。
このプロジェクトは、フロント エンド、コア逆コンパイラー エンジン、および目標の達成を支援するバック エンドで構成されています。 この記事の執筆時点では、コマンド ライン、Windows GUI、および ASP.NET フロント エンドが存在します。 逆コンパイラ エンジンは、フロント エンドから個々の実行可能ファイルまたは逆コンパイラ プロジェクト ファイルの形式で入力を受け取ります。 Reko プロジェクト ファイルには、逆コンパイル プロセスや出力のフォーマットに役立つ、バイナリ ファイルに関する追加情報が含まれています。次に、逆コンパイラ エンジンは入力バイナリの分析を開始します。
ロードされた ARM バイナリ実行可能ファイルのバイト マップ ビュー | ロードされた ARM バイナリ実行可能ファイルの逆コンパイルされたビュー |
Reko には、ユーザーの介入を最小限に抑えながら、さまざまなプロセッサ アーキテクチャと実行可能ファイル形式の逆コンパイルをサポートするという目標があります。完全なリストについては、サポートされているバイナリのページを参照してください。
多くのソフトウェア ライセンスでは、マシン コード バイナリの逆コンパイルやその他のリバース エンジニアリングが禁止されていることに注意してください。この逆コンパイラは、バイナリを逆コンパイルする法的権利がある場合にのみ使用してください (たとえば、バイナリが自分のものである場合など)。
公式リリースは数か月ごとに Github および SourceForge で公開されます。 Reko を自分でビルドできない、またはビルドしないユーザーは、Cirrus CI 統合ビルダーまたは Github Actions 統合ビルダーの出力をダウンロードできます。当然のことながら、ソースからプロジェクトをビルドすることもできます。以下の「ハッキング」を参照してください。
まず、次の前提条件ソフトウェアをマシンにインストールする必要があります。
.NET 6.0 (https://www.microsoft.com/net/download/dotnet-framework-runtime)
適切なインストーラーをダウンロードし、ターゲット マシン上で実行します。
インストール後、統合ビルドサーバーからバイナリを直接ダウンロードするか、ソースから Reko をビルドして続行できます (下記のHacking
を参照)。
Reko のさまざまな機能を知るには、ユーザー ガイドを読むことができます。プロジェクトの内部動作に興味がある場合は、wiki を参照してください。
発生した問題を報告したり、問題トラッカーで Reko 関連の質問をしたりできます。 Reko Gitter.im チャットルームを試すこともできます。 Reko はボランティアの空き時間の努力によって構築されているため、応答時間の期待値はそれに応じて調整してください。
reko をビルドするには、まず https://github.com/uxmal/reko を複製します。 IDE またはコマンドラインを使用して、ソリューション ファイルReko-decompiler.sln
をビルドできます。 Reko をコンパイルするには .NET 6.0 SDK が必要です。 IDE ユーザーの場合は、最新バージョンの Visual Studio 2022 を使用してください。コマンド ラインを使用してビルドする場合は、次のコマンドを使用します。
dotnet msbuild -p:Platform={platform} -p:Configuration={config} -v:m -t:build_solution -m ./src/BuildTargets/BuildTargets.csproj
{config}
Debug
またはRelease
に置き換え、 {platform}
x64
またはx86
に置き換えます。
注: それでもコンパイルできない場合は、問題の解決をお手伝いできるよう、お知らせください。
コードの貢献に興味がある場合は、探索すべき領域のロードマップを参照してください。 Wiki には、Reko プロジェクトの内部動作に関する詳細情報が記載されています。スタイルガイドを参照してください。
開発マシンに WiX ツールセットをインストールしていない場合、Visual Studio でソリューションを読み込むときに警告またはエラーが表示されます。警告は無視しても問題ありません。 WiX ツールセットは、MSI インストーラー パッケージを作成する場合にのみ使用されます。すでにプロジェクトをコンパイルできる場合は、インストーラーをビルドする必要はありません。ビルド プロセスにより、必要なすべてのファイルが 1 つのディレクトリにコピーされます。 WiX ツールチェーンを使用して MSI インストーラーを構築したい場合は、ここからダウンロードできます: http://wixtoolset.org/releases/
実行内容によっては、Visual Studio が CMake に依存する NativeProxy を再構築しようとする場合があります。 CMake をインストールして PATH に追加されていることを確認するか、Visual Studio でプロジェクトを無効にすることができます。
Visual Studio の一部として CMake をインストールするだけで、 Developer Command Prompt
から msbuild を実行できますが、グローバル PATH に追加していない限り、VS 内からビルドする場合は実行できません。 CMake を外部にインストールすると、インストール中に CMake を PATH に追加できます。
注: Visual Studio の特定のバージョンには、プロジェクトの読み込み時に問題が発生する可能性があります。 Visual Studio が「バックグラウンド タスクの実行中」のままでスタックし、プロジェクトをビルドできない場合にそれがわかります。回避策は、ソリューション エクスプローラーで「NativeProxy」プロジェクトを右クリックし、「プロジェクトのアンロード」を選択することです。これで、プロジェクトを正しくロードしてビルドできるようになります。この問題は、コマンド ラインからビルドする場合には発生しません。
ソリューション フォルダーDrivers
ユーザー インターフェイスとして機能する実行可能ファイルが含まれています。サブディレクトリWindowsDecompiler
には、Windows フォーム ユーザー インターフェイスの GUI クライアントが含まれています。サブディレクトリAvaloniaShell
は、クロスプラットフォーム Avalonia ユーザー インターフェイス用の GUI クライアントが含まれています (まだ作成中)。 CmdLine
コマンド ライン ドライバーです。
最新のリリースについては、リリース ログを参照してください。