
Caricatore manuale di PE Windows basato su Rust che mappa ed esegue eseguibili x86/x64 dalla memoria, dimostrando il comportamento interno del caricatore e la struttura PE per ricerca educativa.
Implementazione di caricatore PE / Mapping manuale in Rust
IronPE è un caricatore manuale minimale di PE per Windows scritto in Rust per file PE x86 e x64.
Questo progetto è una reimplementazione in Rust del mio precedente progetto dotNetPELoader, che implementava un caricatore manuale di PE in C#.
L'obiettivo di IronPE è esplorare come Windows carica internamente i Portable Executable e dimostrare come questo processo può essere implementato in Rust.
Waaaahhhhhhh!
Se trovi questo progetto utile o informativo, una ⭐ sarebbe apprezzata!
Questo progetto è destinato esclusivamente a scopi educativi e di ricerca.
È progettato per aiutare a comprendere:
Questo progetto è stato ispirato dalla mia implementazione precedente:
In quel progetto, ho implementato un caricatore PE usando .NET e WinAPI.
IronPE riscrive lo stesso concetto in Rust, che offre una migliore sicurezza della memoria pur consentendo l'accesso alle API di basso livello di Windows.
Lo scopo di questo progetto è educativo, per comprendere meglio:
IronPE esegue i seguenti passaggi per eseguire un file PE dalla memoria:
VirtualAllocLoadLibrary e GetProcAddressQuesto processo imita il comportamento del caricatore PE di Windows.
Un PE x64 non può essere caricato da un caricatore x86 e viceversa.
Requisiti:
cargo, rustc)Compila il progetto:
cd IronPE
build.bat
IronPE.exe --coffee
IronPE.exe --x86 <x86_pe_file>
IronPE.exe --x64 <x64_pe_file>
Esempio:
IronPE.exe --x86 Win32\mimikatz.exe
IronPE.exe --x64 x64\mimikatz.exe