
TinyLoad v7.3
Empaquetador y cifrador de PE x64 de Windows de código abierto. Comprime y cifra ejecutables con una máquina virtual personalizada en un stub autoextraíble.
TinyLoad v7.3 - empacador de PE para Windows
TinyLoad es un cifrador/empacador de PE para ejecutables x64; empaqueta un exe de entrada con varias capas de protección para evitar que sea sometido a ingeniería inversa. Es un único archivo .cpp y no tiene dependencias externas.
cómo funciona
TinyLoad añade tu payload a una copia de sí mismo. Cuando el exe empaquetado se ejecuta, extrae el payload, lo descifra y lo ejecuta directamente en memoria sin escribir nunca el original en disco. Cada vez que empaquetas algo, los opcodes de la VM se cambian aleatoriamente y se colocan en 4 subtablas con claves independientes, de modo que no hay dos compilaciones iguales.
descarga
Descarga un binario precompilado desde lanzamientos o compílalo tú mismo.
compilar desde el código fuente
necesitas MinGW (g++). simplemente ejecuta:
g++ -o TinyLoad.exe TinyLoad.cpp -static -O2 -s
o usa build.bat.
uso
TinyLoad.exe --i <input> [--o <output>] [--vm] [--c] [--veh]
| opción | qué hace |
|---|---|
--i <file> | exe de entrada a empaquetar |
--o <file> | ruta de salida (por defecto: input_packed.exe) |
--vm | cifrado de VM |
--c | compresión LZ77 |
--veh | descifrado VEH de fallos de página |
--noconsole | subsistema GUI |
necesitas al menos 1 de --vm, --c o --veh.
ejemplos
imágenes de DIE
compresión
Compresión LZ77 personalizada con coincidencia por cadena hash y una ventana deslizante de 64KB. La compresión se ejecuta primero y luego el cifrado de VM se aplica encima, de modo que cualquier patrón en los datos comprimidos también queda oculto.
cifrado de VM
Máquina virtual personalizada de 28 opcodes que se ejecuta dentro del stub. Los opcodes se colocan aleatoriamente en 4 subtablas de 8 cada una, y cada subtabla se cifra con XOR usando una clave diferente derivada de los datos del payload. Descifrar 1 subtabla revela como máximo 8 de los 28 opcodes. El cifrado en sí es un cifrado de flujo de 128 bits que usa mezcla de claves con rotl y rotr, ejecutado enteramente dentro del intérprete de la VM. El payload se cifra mediante XXTEA.
descifrado VEH de fallos de página
Con --veh habilitado, todas las páginas de secciones PE se asignan como PAGE_NOACCESS. Cuando el programa intenta acceder a una página, se dispara una excepción; un controlador de excepciones vectorizado descifra solo esa página y establece la protección correcta. Un hilo vigilante se ejecuta en segundo plano y vuelve a cifrar cualquier página que no haya sido tocada en 200 ms. En cualquier momento, la mayor parte de tu programa sigue cifrada en memoria, por lo que los volcados de memoria solo capturan lo que se ha accedido recientemente.
anti dump
Las 4 API más críticas (GetModuleHandleA, GetProcAddress, ExitProcess, VirtualAlloc) se redirigen a través de funciones envolventes dentro del stub. Después de cargar el payload, todo el directorio de importaciones se pone a cero, de modo que los volcados de memoria no puedan reconstruir la tabla de importaciones.
Gráfico:
licencia
MIT
notas al margen
- Hay muchas características que no puse en el readme; puedes leer el código tú mismo o mirar changelog.md
- Esto funciona con la mayoría de archivos que he probado; si falla con el tuyo, abre un issue y lo investigaré
- Las sugerencias y las ideas de funcionalidades también van en issues
- Si lo usas, una estrella ayuda mucho <3
- Revisa el blog en https://iamsopotatoe-coder.github.io/TinyLoad/#blog para futuras actualizaciones
- Sí, los AV marcan los packers; eso es de esperar. (Actualmente tiene 9 detecciones en VirusTotal, cualquier archivo que empaquetes con él obtiene 9 detecciones, el contenido no importa)
- Por favor, no empaquetes malware con esto; está pensado para fines legítimos