피드로 돌아가기
Protecting .NET String Values by Hiding Them in Machine Code DLLs
Dev.toDev.to
Security

Managed IL의 한계를 극복한 Native DLL 기반 String 은닉 설계

Protecting .NET String Values by Hiding Them in Machine Code DLLs

Rustemsoft LLC2026년 4월 20일7intermediate

Context

.NET Assembly는 Intermediate Language(IL)로 컴파일되어 ILSpy 등 Decompiler를 통한 소스 코드 복원이 용이한 구조임. 특히 String Literal은 평문으로 노출되어 라이선스 키 및 서버 엔드포인트와 같은 민감 정보가 Reverse Engineering의 핵심 단서로 활용되는 취약점이 존재함.

Technical Solution

  • In-Assembly Encryption을 통한 일차적 문자열 암호화 및 런타임 복호화 루틴 구현
  • Managed Code 내 복호화 로직 노출 문제를 해결하기 위한 Native Machine-Code DLL 분리 설계
  • .NET 소스에서 문자열을 추출하여 C++ 기반 Native DLL로 변환 및 컴파일하는 프로세스 적용
  • Platform Invoke(P/Invoke)를 통한 Managed Assembly와 Native DLL 간의 런타임 인터페이스 연결
  • 분석 난이도를 높이기 위해 Managed 영역에서 문자열 리터럴을 완전히 제거하고 Native Binary 영역으로 위임

- 라이선스 키 및 API 엔드포인트 등 핵심 민감 정보의 Native DLL 격리 여부 검토 - P/Invoke 도입에 따른 32-bit/64-bit 아키텍처별 Native DLL 빌드 파이프라인 구축 - Native Dependency 추가로 인한 배포 패키지 구성 및 파일 Co-location 전략 수립 - 전체 문자열이 아닌 보안 중요도에 따른 선택적 암호화 적용으로 런타임 오버헤드 최소화

원문 읽기