GitHub Trending오픈소스 · 도구

SamboyCoding/Cpp2IL

Unity IL2CPP 바이너리를 원본 C# 코드로 역변환하는 도구 Cpp2IL

원제 SamboyCoding/Cpp2IL

스타 2,830당일 +103C#
Key Point

IL2CPP 보호 게임의 소스코드 복원이 필요한 모더·보안 연구자·분석가에게 필수적인 역공학 도구이며, 주요 라이브러리 교체와 플러그인 시스템 도입으로 대폭 개선되고 있습니다.

핵심 요약

  • Unity의 IL2CPP 컴파일 과정을 역으로 분석해 원본 관리 DLL로 복원하는 진행 중인 도구로, LibCpp2IL 라이브러리를 사용해 메타데이터를 파싱합니다.
  • 디컴파일된 CIL은 현재 상태가 복잡하지만 ILSpy로 열 수 있으며, MethodAnalysisContext를 통해 플랫폼별 어셈블리를 중간 표현(ISIL)으로 변환 후 제어 흐름 그래프를 구축해 분석합니다.
  • 개발 브랜치에서 대규모 리작성 중이며, 기존의 많은 커맨드라인 옵션(--analysis-level, --skip-analysis 등)이 제거되고 출력 포맷과 처리 레이어 개념으로 단순화됐습니다.
  • 분석은 기본값으로 비활성화되며 --output-as dll_il_recovery로 활성화하고, --use-processor와 --list-processors로 속성 주입 같은 처리 레이어를 제어합니다.
  • 내부적으로 Mono.Cecil 의존성을 AsmResolver.DotNet으로 완전히 교체하고, ISIL 중간 표현과 제어 흐름 그래프 기반 분석으로 재작성했습니다.
  • 플러그인 시스템 개발 중이어서 향후 커스텀 명령어 세트, 바이너리 포맷 지원과 혼동된 또는 암호화된 메타데이터 로딩이 가능해질 예정입니다.
  • 기본 사용법은 game-path 인자로 게임 폴더를 지정하면 Unity 버전 자동 감지 후 cpp2il_out 폴더에 결과를 출력하며, APK 파일도 지원합니다.
  • 모든 커밋마다 GitHub Actions로 CI 빌드되어 nightly.link를 통해 Windows·Linux·Mac·.NET Framework 4.7.2 빌드를 다운로드할 수 있습니다.
  • .NET 9.0 기반이며 iced, Disarm, WasmDisassembler, AsmResolver, CommandLineParser 등 MIT 라이선스 라이브러리들을 사용합니다.
  • OrbisPkg·PDB 플러그인은 각각 LGPL 3.0과 MIT 라이선스 라이브러리를 추가로 사용합니다.
  • 원래는 2018년 Il2CppDumper를 포크한 것에서 출발했으나 대부분 리작성되었고, Il2CppInspector의 코드도 일부 포함하고 있습니다.
  • MelonLoader 같은 모딩 프로젝트에서 더미 DLL 생성에 사용되며, Il2CppInterop과 함께 사용됩니다.
AI 요약 안내

AI가 한국어로 정리한 내용입니다. 정확한 정보는 원문을 확인해 주세요.

요약 원칙 ↗