
RustベースのWindows PE手動ローダー。メモリからx86/x64実行可能ファイルをマッピングして実行し、内部ローダーの動作とPE構造を教育研究目的で示します。
Rust PEローダー / 手動マッピング実装
IronPEは、x86およびx64両方のPEファイルに対応した、Rustで書かれた最小限のWindows PE手動ローダーです。
このプロジェクトは、C#で手動PEローダーを実装した以前のプロジェクト**dotNetPELoaderのRustによる再実装**です。
IronPEの目標は、WindowsがPortable Executableを内部でどのように読み込むかを探求し、そのプロセスをRustで実装できることを示すことです。
Waaaahhhhhhh!
If you find this project useful or informative, a ⭐ would be appreciated!
このプロジェクトは教育および研究目的のみを意図しています。
以下の理解を助けるために設計されています:
このプロジェクトは、以前の実装に触発されました:
そのプロジェクトでは、.NETとWinAPIを使用してPEローダーを実装しました。
IronPEは同じ概念をRustで書き直しており、低レベルのWindows APIアクセスを可能にしつつ、より優れたメモリ安全性を提供します。
このプロジェクトの目的は教育的であり、より深く理解するためのものです:
IronPEは、メモリからPEファイルを実行するために以下の手順を実行します:
VirtualAllocを使用してメモリを割り当てるLoadLibraryとGetProcAddressを使用してインポートを解決するこのプロセスはWindows PEローダーの動作を模倣しています。
x64 PEはx86ローダーでは読み込めず、その逆も同様です。
必要条件:
cargo, rustc)プロジェクトのビルド:
cd IronPE
build.bat
IronPE.exe --coffee
IronPE.exe --x86 <x86_pe_file>
IronPE.exe --x64 <x64_pe_file>
例:
IronPE.exe --x86 Win32\mimikatz.exe
IronPE.exe --x64 x64\mimikatz.exe