- .NET 모듈 파일 형식의 한계를 탐구하여 표준 출력에 "Hello, World!"를 출력하는 가장 작은 실행 파일을 생성합니다.
- 실험을 위해 작성자는 C# 또는 CIL로 구현된 관리되는 진입점을 사용하고, .NET Framework 4.x.x에서 실행되며, 제3자 종속성이 없도록 임의의 규칙을 설정합니다.
- 실행 파일의 크기를 점진적으로 줄이기 위해 null 가능 참조 주석을 비활성화하고, .NET 모듈을 수동으로 작성하며, 가져오기와 기본 재배치를 제거하고, 불필요한 메타데이터를 제거하고, ASCII 문자열의 사용을 최적화합니다.
- 최종 결과는 유효한 .NET PE 파일의 이론적으로 가능한 최소 크기인 889바이트의 실행 파일입니다.
- 기사에서는 실행 파일 크기를 줄이기 위해 수행한 각 단계의 코드 예제와 설명을 제공합니다.
- 작성자는 파일 형식을 이해하고 실행 파일 크기를 최적화하기 위해 전략적인 결정을 내리는 중요성을 강조합니다.
- 사용되지 않는 패딩 세그먼트로 문자열을 이동하면 파일이 13바이트로 줄어듭니다.
- mscorlib에 대한 참조를 제거하면 이진 파일의 공간을 절약할 수 있습니다.
- .NET 메타데이터 디렉토리의 VersionString을 잘라내면 추가 바이트를 절약할 수 있습니다.
- 이진 파일의 최종 크기는 834바이트이며, 압축 시 476바이트로 더 줄일 수 있습니다.
- 의미 없는 프로젝트임에도 불구하고, 기존 시스템의 한계를 탐구하는 것은 재미있을 수 있습니다.
- 작성자는 참고를 위해 전체 소스 코드를 GitHub에서 제공합니다.
- 기사에서는 역공학, 코드 골프, PE 파일 최적화에 대해 논의합니다.
- 작성자는 자신의 경험을 공유하고 파일 크기를 줄이는 추가적인 탐구를 장려합니다.
- 이 기사는 작성자에 의해 CC BY 4.0로 라이선스가 부여되었습니다.