
Cargador manual de PE para Windows basado en Rust que mapea y ejecuta ejecutables x86/x64 desde la memoria, demostrando el comportamiento interno del cargador y la estructura de PE para investigación educativa.
Implementación de Cargador PE / Mapeo Manual en Rust
IronPE es un cargador manual mínimo de Windows PE escrito en Rust para archivos PE tanto x86 como x64.
Este proyecto es una reimplementación en Rust de mi proyecto anterior dotNetPELoader, que implementaba un cargador manual de PE en C#.
El objetivo de IronPE es explorar cómo Windows carga internamente los Ejecutables Portátiles y demostrar cómo este proceso puede ser implementado en Rust.
Waaaahhhhhhh!
Si encuentras este proyecto útil o informativo, ¡una ⭐ sería apreciada!
Este proyecto está destinado únicamente a fines educativos y de investigación.
Está diseñado para ayudar a comprender:
Este proyecto se inspiró en mi implementación anterior:
En ese proyecto, implementé un cargador de PE usando .NET y WinAPI.
IronPE reescribe el mismo concepto en Rust, que proporciona mejor seguridad de memoria mientras aún permite acceso a la API de Windows de bajo nivel.
El propósito de este proyecto es educativo, para comprender mejor:
IronPE realiza los siguientes pasos para ejecutar un archivo PE desde la memoria:
VirtualAllocLoadLibrary y GetProcAddressEste proceso imita el comportamiento del cargador de PE de Windows.
Un PE x64 no puede ser cargado por un cargador x86, y viceversa.
Requisitos:
cargo, rustc)Compila el proyecto:
cd IronPE
build.bat
IronPE.exe --coffee
IronPE.exe --x86 <x86_pe_file>
IronPE.exe --x64 <x64_pe_file>
Ejemplo:
IronPE.exe --x86 Win32\mimikatz.exe
IronPE.exe --x64 x64\mimikatz.exe