Convierta los archivos ELF estándar en Codos de shelle independientes. Lea la siguiente documentación y vea los ejemplos para que este proyecto funcione correctamente
Github
Pypi
pip install py_shelfLa biblioteca de Python analiza el elfo y crea un formato de archivo reubicable simple llamado estante (shellcode elf).
El mini cargador se inserta como punto de entrada para el estante.
El mini cargador cargará y reubicará el estante, luego lo ejecutará. No hay requisitos especiales, la biblioteca contiene los mini cargadores y recursos compilados.
El diagrama a continuación explica el formato (solo funciona en los navegadores)
classdiagram
ShellcodeEntrypoint -|> miniloader
ShellcodeEntrypoint: shellcode que contiene la lógica pre mini cargador
Miniloader -|> Tabla de reubicación
Miniloader: contiene toda la lógica para analizar la tabla de reubicación
Miniloader: completamente independiente
Tabla de reubicación -|> Hooks Opcional
Tabla de reubicación: contiene la tabla requerida para la reubicación de tiempo de ejecución de shellcode
Ganchos opcionales -|> estante
Ganchos opcionales: lea más sobre los ganchos en la documentación a continuación
Ganchos opcionales: esta sección es opcional y solo existe si se usan ganchos
Estante: shellcode elf: este es el binario compilado que convertimos en shellcode
Estante: este binario se despoja solo en códigos de operación
Estante: totalmente reubicable utilizando la tabla de reubicación
Este proyecto está destinado a convertir ELF a OS Independent Shellcodes. Por lo tanto, el cargador nunca asigna la memoria y el formato de shellcode no está lleno. Puedes simplemente ejecutarlo, por ejemplo, ...
(( void ( * )()) shellcode )();Sigue los ejemplos a continuación
Se requieren algunas banderas de compilación para que esto funcione correctamente. Debe compilar el binario con -fpie y -estatic.
ShellCode es un binario despojado sin símbolos y sin información de OpCodes OpSel, para hacer que la biblioteca de ShellCode requiere un binario con información de ELF. Así que asegúrese de no quitar el binario antes de usar esta biblioteca
Comando de hacer simplificado para MIPS Big Endian
gcc example . c - fno - stack - protector - fPIE - fpic - static - nostartfiles -- entry = main - o binary . out
python - m shelf -- input binary . out Makfile
Ejemplo.c
Puede usar el cargador de código de shell proporcionado para probar sus códigos de shell
qemu-mips ./shellcode_loader ./myshellcode.outSe recomienda utilizar la biblioteca de cargador de estante para probar su código de shell aquí, puede leer más al respecto: documentación del cargador de estantes
Para los siguientes enlaces, solo funcione en la página de GitHub