
Converte PE in uno shellcode.
Converte un PE in modo che possa essere iniettato proprio come un normale shellcode.
(Allo stesso tempo, il file di output rimane un PE valido).
Supporta PE sia a 32 che a 64 bit
Autori: @hasherezade & @hh86
L'obiettivo di questo progetto è fornire la possibilità di generare file PE che possano essere iniettati con il minimo sforzo. È ispirato al ReflectiveDLLInjection di Stephen Fewer - ma la differenza è che con pe2shc puoi aggiungere lo stub di caricamento riflessivo dopo la compilazione. Inoltre, l'intestazione del file PE viene modificata in modo tale da poter iniziare a eseguire il buffer iniettato dall'inizio - proprio come faresti con uno shellcode. Troverà automaticamente lo stub e continuerà a caricare l'intero PE.
🟢 Lo stub supporta solo le strutture di base del formato PE, come:
Tieni presente che, sebbene per la maggior parte dei file PE questo sia sufficiente, alcuni eseguibili che incontri potrebbero utilizzare altri aspetti più complessi del formato PE. Ciò significa che non tutti i PE possono essere convertiti con successo in shellcode.
🚫 Esempi di elementi attualmente non supportati:
📦 ⚙️ Scarica l'ultima release.
Usa il clone ricorsivo per ottenere il repository insieme a tutti i sottomoduli:
git clone --recursive https://github.com/hasherezade/pe_to_shellcode.git
pe2shc.exe <path to your PE> [output path*]
* - optional
Se il PE viene convertito con successo, pe2shc ti farà sapere dove è stato salvato l'output:
[+] Saved to file: <converted file>
i.e.
[+] Saved to file: test_file.shc.exe
runshc.exe <converted file>
(*)Avvertenza: ricorda di usare la versione di runshc con il bitness appropriato (32 o 64 bit) alla tua applicazione convertita - altrimenti l'applicazione si bloccherà!