한글패치 관련 짧은 글

유니티 IL2CPP 게임에서 DLL 생성 (윈도우, 안드로이드)

눈백로 2021. 11. 28. 17:31

유니티 게임을 빌드할 시 mono방식으로 빌드할 수도, il2cpp방식으로 빌드할 수도 있다.

mono방식은 보통 {게임이름}_data\Managed 폴더 안에 dll파일들이 들어 있으며

il2cpp방식은 보통 {게임이름}_data\ 폴더 내부에 il2cpp_data 폴더가 존재한다.

메인 에셋들 한글화 작업시 dll파일들이 있어야 MonoBehaviour 파일이 정상적으로 덤프되는 경우가 많다.

 

필요한 툴: Il2CppDumper (https://github.com/Perfare/Il2CppDumper)

 

1. PC의 경우 (예시 - 늑대와 향신료 VR 2)

 

게임 exe 파일이 있는 곳에 GameAssembly.dll이 있다.

이게 il2cpp binary file이다.

 

{게임이름}_data\ 폴더 내부에 il2cpp_data가 존재하며,

il2cpp_data\Metadata에 global-metadata.dat 파일이 있다.

이게 global metadata 파일이다.

 

다운받은 Il2CppDumper.exe를 실행한 후,

첫번째로 il2cpp binary file(GameAssembly.dll)를 선택한 다음,

두번째로 global-metadata(global-metadata.dat)를 선택하면

 

여러 과정이 지나간 후 Done!이 뜨면서 정상적으로 DummyDll 폴더가 생성된다.

 

물론 dll파일도 정상적으로 들어 있는 것을 볼 수 있다.

 

이제 DummyDll 폴더의 이름을 Managed로 바꾼 후 {게임이름}_data\ 폴더에 넣은 후,

UABE나 UAAE나 UABEA같은 툴로 MB파일을 덤프뜨면 정상적으로 내용이 나올 것이다.

 

 

 

2. 안드로이드의 경우 (예시 - OPUS The Day We Found Earth)

 

apk파일과 Android\obb\{게임패키지명}\obb파일이 있다.

apk 파일의 압축을 푼 후, 파일 검색을 하거나 직접 경로로 들어가 보자.

 

 

lib\arm64-v8a 폴더에 들어가니 libil2cpp.so 파일이 보인다. 

이것이 il2cpp binary file이다.

assets\bin\Data\Managed\Metadata를 들어가니 global-metadata.dat 파일이 보인다.

이것이 global metadata 파일이다.

 

마찬가지로 Il2CppDumper.exe 실행 후

첫번째 파일로 libil2cpp.so 파일을 선택해주고

두번째 파일로 global-metadata.dat 파일을 선택해준다.

 

역시 정상적으로 생성되는 것을 확인할 수 있다.

이것도 마찬가지로 생성된 DummyDll 폴더를 Managed로 바꾼 후 적절하게 써먹으면 된다.