
Carregador manual de PE do Windows baseado em Rust que mapeia e executa executáveis x86/x64 da memória, demonstrando o comportamento interno do carregador e a estrutura PE para pesquisa educacional.
Implementação de Carregador de PE em Rust / Mapeamento Manual
IronPE é um carregador manual de PE do Windows mínimo escrito em Rust para arquivos PE x86 e x64.
Este projeto é uma reimplementação em Rust do meu projeto anterior dotNetPELoader, que implementava um carregador manual de PE em C#.
O objetivo do IronPE é explorar como o Windows carrega Executáveis Portáteis internamente e demonstrar como esse processo pode ser implementado em Rust.
Waaaahhhhhhh!
Se você achar este projeto útil ou informativo, uma ⭐ seria apreciada!
Este projeto é destinado apenas para fins educacionais e de pesquisa.
Ele foi projetado para ajudar a entender:
Este projeto foi inspirado pela minha implementação anterior:
Naquele projeto, implementei um carregador de PE usando .NET e WinAPI.
O IronPE reescreve o mesmo conceito em Rust, que oferece melhor segurança de memória enquanto ainda permite acesso de baixo nível à API do Windows.
O propósito deste projeto é educacional, para entender melhor:
O IronPE executa os seguintes passos para executar um arquivo PE a partir da memória:
VirtualAllocLoadLibrary e GetProcAddressEste processo imita o comportamento do carregador de PE do Windows.
Um PE x64 não pode ser carregado por um carregador x86, e vice-versa.
Requisitos:
cargo, rustc)Compilar o projeto:
cd IronPE
build.bat
IronPE.exe --coffee
IronPE.exe --x86 <x86_pe_file>
IronPE.exe --x64 <x64_pe_file>
Exemplo:
IronPE.exe --x86 Win32\mimikatz.exe
IronPE.exe --x64 x64\mimikatz.exe