앞서 확인했던 Unity의 두가지 빌드방법(mono,il2cpp) 중, mono 방식으로 빌드된 게임을 분석해 보도록 하겠습니다.

 

itleader.tistory.com/179

 

#2 - 클릭커 게임 만들기 강좌 - ( 1 / 2 )

안녕하세요 피슈 입니다. 오늘은 최근에 유행하고 있는 클릭커 게임을 만들어 볼까 합니다. 아니 게임 개발 강좌 첫시간인데 벌써 게임을 만들 수 있는거야? 하고 의아해 하실 수 있는 데, 강좌��

itleader.tistory.com

구글에 유니티 게임 예제를 통해 간단한 클릭커 게임을 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라는 툴을 이용하도록 하겠습니다.

github.com/0xd4d/dnSpy

 

0xd4d/dnSpy

.NET debugger and assembly editor. Contribute to 0xd4d/dnSpy development by creating an account on GitHub.

github.com

[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

+ Recent posts