- Explora los límites del formato de archivo de módulos de .NET para crear el ejecutable más pequeño que imprima "Hello, World!" en la salida estándar.
- Para el experimento, el autor establece reglas arbitrarias: usar un punto de entrada administrado implementado en C# o CIL, ejecutar en .NET Framework 4.x.x y no depender de terceros.
- Para reducir gradualmente el tamaño del ejecutable, desactiva las anotaciones de referencias anulables, escribe manualmente el módulo .NET, elimina importaciones y reubicaciones base, quita metadatos innecesarios y optimiza el uso de cadenas ASCII.
- El resultado final es un ejecutable de 889 bytes, el tamaño mínimo teóricamente posible para un archivo PE de .NET válido.
- El artículo ofrece ejemplos de código y explicaciones de cada paso realizado para reducir el tamaño del ejecutable.
- El autor destaca la importancia de entender el formato de archivo y de tomar decisiones estratégicas para optimizar el tamaño del ejecutable.
- Mover la cadena a un segmento de relleno no utilizado reduce el archivo en 13 bytes.
- Eliminar la referencia a mscorlib puede ahorrar espacio en el binario.
- Recortar el VersionString del directorio de metadatos de .NET ahorra bytes adicionales.
- El tamaño final del binario es de 834 bytes y, al comprimirse, puede reducirse aún más hasta 476 bytes.
- Aunque es un proyecto sin mucha utilidad práctica, explorar los límites de los sistemas existentes puede ser divertido.
- El autor ofrece el código fuente completo en GitHub como referencia.
- El artículo habla de ingeniería inversa, code golf y optimización de archivos PE.
- El autor comparte su experiencia y anima a seguir explorando formas adicionales de reducir el tamaño del archivo.
- Este artículo está licenciado por el autor bajo CC BY 4.0.
1 comentarios
Comentarios en Hacker News
.comde menos de 1k usando TurboPascal v1.