- .NET modül dosya biçiminin sınırlarını keşfederek standart çıktıya "Hello, World!" yazdıran en küçük yürütülebilir dosya oluşturuluyor.
- Deney için yazar, C# veya CIL ile uygulanmış yönetilen bir giriş noktası kullanılması, .NET Framework 4.x.x üzerinde çalışması ve üçüncü taraf bağımlılık içermemesi gibi keyfi kurallar belirliyor.
- Yürütülebilir dosyanın boyutunu adım adım küçültmek için null olabilir başvuru ek açıklamaları devre dışı bırakılıyor, .NET modülü elle yazılıyor, importlar ve temel yeniden konumlandırmalar kaldırılıyor, gereksiz meta veriler siliniyor ve ASCII dizgelerinin kullanımı optimize ediliyor.
- Nihai sonuç, geçerli bir .NET PE dosyası için teorik olarak mümkün olan en küçük boyut olan 889 baytlık bir yürütülebilir dosya.
- Makale, yürütülebilir dosya boyutunu küçültmek için yapılan her adımın kod örneklerini ve açıklamalarını sunuyor.
- Yazar, dosya biçimini anlamanın ve yürütülebilir dosya boyutunu optimize etmek için stratejik kararlar vermenin önemini vurguluyor.
- Kullanılmayan padding segmentine dizgeleri taşımak dosyayı 13 bayt küçültüyor.
mscorlibbaşvurusunu kaldırmak ikili dosyada yer tasarrufu sağlayabiliyor.- .NET metadata dizinindeki VersionString'i kısaltmak ek bayt tasarrufu sağlıyor.
- İkili dosyanın nihai boyutu 834 bayt ve sıkıştırıldığında 476 bayta kadar daha da düşürülebiliyor.
- Anlamsız bir proje olsa da, mevcut sistemlerin sınırlarını keşfetmek eğlenceli olabilir.
- Yazar, başvuru amacıyla tüm kaynak kodunu GitHub'da sunuyor.
- Makalede tersine mühendislik, code golf ve PE dosyası optimizasyonu tartışılıyor.
- Yazar, kendi deneyimini paylaşıyor ve dosya boyutunu daha da küçültmeye yönelik ek keşifleri teşvik ediyor.
- Bu makale yazar tarafından CC BY 4.0 ile lisanslanmıştır.
1 yorum
Hacker News görüşü