앞서 확인했던 Unity의 두가지 빌드방법(mono,il2cpp) 중, mono 방식으로 빌드된 게임을 분석해 보도록 하겠습니다.
구글에 유니티 게임 예제를 통해 간단한 클릭커 게임을 mono방식으로 빌드하였으며 해당 앱을 예제로 사용해보도록 하겠습니다.
예제를 통해 생성한 앱이며, 10번을 클릭하면 피카츄가 나오게끔 작성하였습니다.
void Start()
{
level = 1;
pichanum = 10;
numTxt.text = "0";
UnityEngine.Debug.Log("Hello World!!");
}
// Update is called once per frame
void Update()
{
}
public void Click()
{
UnityEngine.Debug.Log("Click!!");
num++;
numTxt.text = num.ToString();
UnityEngine.Debug.Log("pichanum : " + pichanum + "num : " + num);
if (num == pichanum)
{
if (level == 1)
{
pichaball.SetActive(false);
ball.SetActive(true);
}
else
{
pichaball.SetActive(false);
pichu.SetActive(true);
}
}
}
이제 빌드된 앱을 살펴보겠습니다.
앱의 기본 구조는 다른 apk파일과 동일합니다.
다만 assets 폴더 하위 앞서 mono빌드의 특징이라고 할 수 있는 Assembly-CSharp.dll 파일과 여러 dll파일이 존재하는 것을 확인할 수 있습니다.
dll 파일 분석을 위해서는 dnspy라는 툴을 이용하도록 하겠습니다.
[Assembly-CSarp.dll] - [InGame] - [Click]
dnspy 툴을 통해 dll파일을 확인하면 원본 코드와 유사한 코드를 확인할 수 있습니다.
코드 창에서 우클릭 - [Edit Method(C#)을 클릭합니다.
this.num++; 부분을 this.num+=5; 로 변경하여 한번 클릭할때마다 5가 증가하도록 수정 후 Compile합니다.
수정 후 [File] - [Save Module]을 통해 변조한 Assembly-CSharp.dll 파일을 저장합니다.
앞서 10번을 클릭하면 피카츄가 나오도록 설정하였는데, 이젠 2번만 클릭하면 되겠네요.
그 후 apk 파일을 변조한 dll파일로 변경하여 리패키징 후에 다시 에뮬레이터에서 실행하면 2번만 클릭했음에도 피카츄를 볼 수 있습니다.
※ 해당 내용은 분석을 위한 내용으로 해당 내용을 통해 악의적인 행위를 하는 경우 모두 행위자에게 법적책임이 발생할 수 있습니다. 공부, 분석을 위해 실습 예제를 직접 만들어서 하는 것을 추천드립니다.
'Mobile Game' 카테고리의 다른 글
Unity Mono vs il2cpp (0) | 2020.10.11 |
---|---|
Mobile Game Engine (0) | 2020.10.10 |