Cfr

一般的なコード逆コンパイラツールRekoの紹介



General Code Decompiler Tool Reko Introduction



Rekoには、コア逆コンパイラエンジンとバックエンドコード分析モジュールが含まれているだけでなく、ユーザーフレンドリーなインターフェイスも提供しています。現在、このツールはWindowsGUIとASP.NETバックエンドを提供します。逆コンパイルエンジンはフロントエンドからユーザーの入力を取得する必要があり、受け入れ可能な入力は個別の実行可能ファイルまたは逆コンパイルされたプロジェクトファイルです。 Rekoプロジェクトファイルには、開発者の逆コンパイルまたはフォーマット出力に役立つコードファイルに関する追加情報も含まれています。プロセス全体を通して、入力コードを分析する主な責任は逆コンパイルエンジンです。

Rekoの目標は、操作上の相互作用を最小限に抑えながら、ユーザーが複数のプロセッサアーキテクチャと実行可能ファイル形式の逆コンパイルを完了できるようにすることです。多くのソフトウェアライセンスでは、他の人がソフトウェアのマシンコードを逆コンパイルまたは逆にすることを禁止していることに注意してください。したがって、このツールを悪意のある目的で使用しないでください。



ツールのダウンロードとインストール
次のコマンドを実行して、Rekoをダウンロードします。

$ git clone git://github.com/uxmal/reko.git
Windowsユーザー
Windowsプラットフォームでは、最初に次の依存関係をインストールする必要があります。



NETFramework 4.7.2:[ダウンロードアドレス]

MSIファイルをダウンロードした後、インストーラーを直接実行します。

Windows以外のユーザー
Windowsシステムを使用していない場合は、最初に次の依存関係をインストールする必要があります。



Monov5.14.0:[転送ゲート]

monoをインストールしたら、統合ビルドサーバーからソースコードを直接ダウンロードするか、Rekoソースを直接ビルドしてツールを使用できます。

ツールがダウンロードされ、環境が構成されたら、IDEまたはコマンドラインを使用してReko-decompiler.slnファイルをビルドできます。 IDEの使用に慣れている場合は、Visual Studio2017またはMonoDevelopv5.10以降を使用することをお勧めします。コマンドラインの使用に慣れている場合は、次のコマンドを使用できます。

msbuildReko-decompiler.sln
ツールの使用法
Windowsでは、インストールが完了すると、[スタート]メニューに「RekoDecompiler」ショートカットが作成されます。アイコンをクリックすると、Rekoクライアントを起動できます。

Windows以外のシステムでは、次のコマンドを使用してWindowsDecompiler.exeを実行する必要があります。

モノラルWindowsDecompiler.exe
コマンドラインクライアントを実行する
Windowsでは、RekoインストールディレクトリをPATH環境変数に書き込んだと仮定すると、コマンドラインで次のコマンドを直接使用してツールを使用できます。

some_binary_file.exeを逆コンパイルします
Windows以外のプラットフォームでは、RekoのインストールディレクトリをPATH環境変数に書き込んだ場合、コマンドラインで次のコマンドを直接使用してツールを使用できます。

モノ逆コンパイルsome_binary_file.exe
Rekoを使用した逆分析
プログラミングに精通している場合は、Rekoオブジェクトモデルに直接アクセスできます。たとえば、プログラム内の既知のオペレーティングプロセスの名前とアドレスを出力する場合は、次のように記述できます。

レコを使って

Reko.Coreを使用する

クラスDumpProcedures {

public static int Main(string [] args) { var dec = DecompilerDriver.Create() if (!dec.Load('myfile.exe')) return -1 dec.ScanPrograms() foreach (var program indec.Project.Programs) { foreach (var entry in program.Procedures){ Console.Write('Address{0}, procedure name {1}', entry.Key, entry.Value) } } }

}

南昌ハンドインハンドテクノロジー