
Rust-basierter manueller Windows-PE-Lader, der x86/x64-Executables aus dem Speicher abbildet und ausführt und dabei das interne Laderverhalten und die PE-Struktur für Bildungsforschung demonstriert.
Rust-PE-Lader / Implementierung manuellen Mappings
IronPE ist ein minimaler manueller Windows-PE-Lader, der in Rust für sowohl x86- als auch x64-PE-Dateien geschrieben wurde.
Dieses Projekt ist eine Rust-Neuimplementierung meines vorherigen Projekts dotNetPELoader, das einen manuellen PE-Lader in C# implementierte.
Das Ziel von IronPE ist es zu erkunden, wie Windows Portable Executables intern lädt, und zu demonstrieren, wie dieser Prozess in Rust implementiert werden kann.
Waaaahhhhhhh!
Wenn Sie dieses Projekt nützlich oder informativ finden, würde ich mich über einen ⭐ freuen!
Dieses Projekt ist ausschließlich für Bildungs- und Forschungszwecke bestimmt.
Es wurde entwickelt, um zu verstehen:
Dieses Projekt wurde von meiner vorherigen Implementierung inspiriert:
In diesem Projekt habe ich einen PE-Lader mit .NET und WinAPI implementiert.
IronPE schreibt dasselbe Konzept in Rust neu, das eine bessere Speichersicherheit bietet und gleichzeitig den Zugriff auf die Windows-API auf niedriger Ebene ermöglicht.
Der Zweck dieses Projekts ist lehrreich, um besser zu verstehen:
IronPE führt die folgenden Schritte aus, um eine PE-Datei aus dem Speicher auszuführen:
VirtualAlloc reservierenLoadLibrary und GetProcAddress auflösenDieser Prozess ahmt das Verhalten des Windows-PE-Laders nach.
Eine x64-PE kann nicht von einem x86-Lader geladen werden und umgekehrt.
Anforderungen:
cargo, rustc)Projekt bauen:
cd IronPE
build.bat
IronPE.exe --coffee
IronPE.exe --x86 <x86_pe_file>
IronPE.exe --x64 <x64_pe_file>
Beispiel:
IronPE.exe --x86 Win32\mimikatz.exe
IronPE.exe --x64 x64\mimikatz.exe