- Explora os limites do formato de arquivo de módulo .NET para criar o menor executável que imprime "Hello, World!" na saída padrão.
- Para o experimento, o autor define regras arbitrárias: usar um ponto de entrada gerenciado implementado em C# ou CIL, executar no .NET Framework 4.x.x e não ter dependências de terceiros.
- Para reduzir gradualmente o tamanho do executável, ele desativa anotações de referência anulável, escreve manualmente o módulo .NET, remove importações e relocações base, elimina metadados desnecessários e otimiza o uso de strings ASCII.
- O resultado final é um executável de 889 bytes, o menor tamanho teoricamente possível para um arquivo .NET PE válido.
- O artigo fornece exemplos de código e explicações de cada etapa realizada para reduzir o tamanho do executável.
- O autor destaca a importância de entender o formato de arquivo e de tomar decisões estratégicas para otimizar o tamanho do executável.
- Mover a string para um segmento de preenchimento não utilizado reduz o arquivo em 13 bytes.
- Remover a referência a
mscorlib pode economizar espaço no binário.
- Cortar a
VersionString no diretório de metadados .NET economiza bytes adicionais.
- O tamanho final do binário é de 834 bytes, podendo ser reduzido ainda mais para 476 bytes com compressão.
- Mesmo sendo um projeto sem grande utilidade prática, explorar os limites de sistemas existentes pode ser divertido.
- O autor disponibiliza o código-fonte completo no GitHub para referência.
- O artigo discute engenharia reversa, code golf e otimização de arquivos PE.
- O autor compartilha sua experiência e incentiva explorações adicionais para reduzir o tamanho do arquivo.
- Este artigo foi licenciado pelo autor sob CC BY 4.0.
1 comentários
Comentários do Hacker News
.comcom menos de 1k foi construído usando TurboPascal v1.