Convierte PE en shellcode
Convierte un PE para que pueda ser inyectado como un shellcode normal.
(Al mismo tiempo, el archivo de salida sigue siendo un PE válido).
Soporta tanto PEs de 32 como de 64 bits
Autores: @hasherezade y @hh86
El objetivo de este proyecto es proporcionar la posibilidad de generar archivos PE que puedan ser inyectados con el mínimo esfuerzo. Está inspirado en el ReflectiveDLLInjection de Stephen Fewer, pero la diferencia es que con pe2shc puedes añadir el stub de carga reflexiva después de la compilación. Además, la cabecera del archivo PE se modifica de tal manera que puedes comenzar a ejecutar el búfer inyectado desde el principio, igual que harías con un shellcode. Encontrará automáticamente el stub y continuará cargando el PE completo.
🟢 El stub solo soporta estructuras básicas del formato PE, como:
Ten en cuenta que, aunque para la mayoría de los archivos PE esto es suficiente, algunos ejecutables que encuentres pueden estar usando otros aspectos más complejos del formato PE. Esto significa que no todos los PE pueden convertirse exitosamente a un shellcode.
🚫 Ejemplos de elementos actualmente no soportados:
📦 ⚙️ Descarga la última versión.
Usa clonado recursivo para obtener el repositorio junto con todos los submódulos:
git clone --recursive https://github.com/hasherezade/pe_to_shellcode.git
pe2shc.exe <ruta a tu PE> [ruta de salida*]
* - opcional
Si el PE se convierte exitosamente, pe2shc te indicará dónde se guardó la salida:
[+] Guardado en el archivo: <archivo convertido>
Ej.:
[+] Guardado en el archivo: test_file.shc.exe
runshc.exe <archivo convertido>
(*)Advertencia: recuerda usar la versión de runshc con la arquitectura adecuada para tu aplicación convertida (32 o 64 bits); de lo contrario, la aplicación fallará.