
Converte PE em shellcode
Converte PE para que possa ser injetado como um shellcode normal.
(Ao mesmo tempo, o arquivo de saída continua sendo um PE válido).
Suporta PEs de 32 e 64 bits
Autores: @hasherezade & @hh86
O objetivo deste projeto é fornecer a possibilidade de gerar arquivos PE que podem ser injetados com esforço mínimo. É inspirado no ReflectiveDLLInjection de Stephen Fewer - mas a diferença é que com o pe2shc você pode adicionar o stub de carregamento reflexivo pós-compilação. Além disso, o cabeçalho do arquivo PE é modificado de forma que você possa começar a executar o buffer injetado desde o início - exatamente como faria com um shellcode. Ele encontrará automaticamente o stub e continuará carregando o PE completo.
🟢 O stub suporta apenas estruturas básicas do formato PE, como:
Lembre-se de que, embora para a maioria dos arquivos PE isso seja suficiente, alguns executáveis que você encontrar podem estar usando outros aspectos mais complexos do formato PE. Isso significa que nem todo PE pode ser convertido com sucesso em um shellcode.
🚫 Exemplos de elementos atualmente não suportados:
📦 ⚙️ Baixe a versão mais recente.
Use clone recursivo para obter o repositório junto com todos os submódulos:
git clone --recursive https://github.com/hasherezade/pe_to_shellcode.git
pe2shc.exe <path to your PE> [output path*]
* - optional
Se o PE foi convertido com sucesso, pe2shc informará onde a saída foi salva:
[+] Saved to file: <converted file>
ou seja
[+] Saved to file: test_file.shc.exe
runshc.exe <converted file>
(*)Aviso: lembre-se de usar a versão do runshc com a arquitetura adequada ao seu aplicativo convertido (32 ou 64 bits) - caso contrário, o aplicativo travará!