Mobile/Android

Unity기반(mono) 게임 App 분석

pyozzi 2019. 12. 7. 00:38

Unity기반 App은 mono, il2 두 가지 방식 중 하나로 컴파일이 가능하다.

이번 글에서는 mono방식으로 컴파일된 App을 분석하는 방법에 대해 다루도록 하겠다.

 

[그림 1] mono방식 /lib

mono방식으로 컴파일된 App에는 위 3개의 라이브러리 파일이 포함되어 있다.

libmono.so 심볼 정보 역시 제거된 상태이지만, il2방식보다 보다 쉽게 심볼정보를 얻어 낼 수 있다.

 


Assembly-CSharp.dll

il2방식에서는 Metadata파일을 덤프하는 과정이 있었는데, mono방식은 /assets/bin/Data/Managed 에 위치한Assembly-CSharp.dll 파일을 확인하면 된다.

 

[그림 2] /assets/bin/Data/Managed

il2에서는 Dump 과정을 거쳐야만 얻을 수 있던 dll파일들이 mono방식에서는 바로 확인이 가능하다.

위 파일 중 Assembly-CSharp.dll 파일을 dnSpy에 로드한다.

 

[그림 3] Assembly-CSharp.dll

실제 App에서 사용되는 Method들을 확인할 수 있다.

 

[그림 4] Method SourceCode

또한, Method 구현 코드까지 확인이 가능하다.

 

위 결과처럼 mono방식은 il2방식보다 보안수준이 현저히 낮은 것을 확인할 수 있다.

실제 App을 후킹할 때는 Target Method를 선정하고, 해당 Method의 RVA정보를 이용하여 후킹을 진행한다.