Windowsローダーの内側:IronPEを使用したRustでのポータブル実行可能ファイルマッピングの複製

IronPEは、x86およびx64のPEファイルの両方に対応したRustで記述された最小限のWindows PEマニュアルローダーです。IronPEの目標は、Windowsがポータブル実行可能ファイルを内部的にどのようにロードするかを探索し、このプロセスがRustでどのように実装できるかを実証することです。

以下を理解するのに役立つように設計されています:

  • Windows PEの内部構造
  • マニュアルローディング技術
  • リバースエンジニアリングの概念

機能

  • マニュアルPEローディング
  • セクションマッピング
  • ベースリロケーション
  • インポート解決
  • メモリからのPE実行
  • x86およびx64 PEサポート

仕組み

IronPEは、メモリからPEファイルを実行するために、以下のステップを実行します:

  1. PEファイルをメモリに読み込む
  2. PEヘッダーを解析する
  3. VirtualAllocを使用してメモリを割り当てる
  4. PEヘッダーとセクションをコピーする
  5. ベースリロケーションを適用する
  6. LoadLibraryGetProcAddressを使用してインポートを解決する
  7. 実行をOriginal Entry Point(OEP)に転送する

このプロセスはWindows PEローダーの動作を模倣しています。

x64 PEはx86ローダーでロードできず、その逆も同様です。

ダウンロード

翻訳元: https://meterpreter.org/ironpe-rust-windows-manual-pe-loader-guide/

ソース: meterpreter.org