본문 바로가기
모딩

Il2cpp 게임 Metadata 난독화 해제

by 레이슈 2025. 8. 28.
반응형

최근 얼엑으로 발표한 맹장삼국(Three Kingdom Mushouden)을 뜯어보려고 했다.

https://store.steampowered.com/app/3285500

 

Three Kingdoms Mushouden on Steam

Set on the eve of the Yellow Turban Rebellion (AD 182), you can play as an original character or a historical warlord, building forces and forging alliances. Whether you choose to be a lone wanderer or rally famous generals, use your knowledge and wisdom t

store.steampowered.com

 

현재 기계번역으로 한글화가 이뤄졌으며, 당연히 가독성이 떨어져서 몰입이 안되는 상태.

이미 한패를 위해 변마님께서 번역은 마쳐놓은 상태인 것 같으나, 게임사에서 받아줄지와 시기는 여전히 오리무중.

어차피 모딩을 위해서 뜯어보려 했으나, 미리 변환툴을 만들어 배포하려고 한다.

 

유니티 il2cpp 기반의 게임은 GameAssembly.dll 과 global-metadata.dat 를 기반으로 코드를 확보할 수 있다.

하지만 이 게임은 일반 il2cpp 게임과는 다르게, 메타데이터가 난독화되어 BepInEx 등 인젝터가 먹지 않는 상황.

난독화되어있지 않은 메타데이터 파일은 헥사에디터로 열었을 때 "AF 1B B1 FA ..." 로 시작한다.

이게머꼬...

이런 작업은 해본적이 없는 터라, 여기저기 수소문 끝에 아래 양덕의 은혜에 난독화에 성공할 수 있었다.

https://www.unknowncheats.me/forum/general-programming-and-reversing/714992-decrypting-il2cpp-metadata-assembly-unity-il2cpp-game.html

(모바일 등)다른게임에도 적용이 가능하니 블로그에 방법을 후술하면, 난독화된 헥사 코드를 자세히 보다보면 반복되는 문구가 보인다.

이 게임에서는 "77 61 6E 7A 67" 이 반복되고 있었음을 알 수 있었다. 이 키로 XOR 연산이 이뤄지고 있는 것이다.

이제 해독은 역순으로 진행하면 되니..... 잼민이의 도움을 받아 메타데이터의 해독을 할 수 있었다.

만쉐이...

이제 BepInEx 에서 이걸 적용해야 하는데.....................

il2cpp 버전은 BepInEx 의 참조 라이브러리인 Cpp2IL 이란 프로젝트에서 메타데이터를 읽는 코드가 있다.

여기에 XOR 키를 넣어 복호화를 진행하고 나머지 과정을 연결시켜주면... BepInEx 까지 구동 성공

한글 주석 단 부분이 복호화로 추가한 코드...빌드는 그냥 하면된다.
오예....

다음은 데이터 추출/삽입을 담당하는 필자의 툴을 공개하는 것으로 마무리.