본문 바로가기
Unity

Unity Obfuscator #1

by wlgpdnjs 2019. 5. 31.

Unity 난독화 에셋인 BEEBYTE의 Obfuscator를 공부해보자!

링크는 여기 https://assetstore.unity.com/packages/tools/utilities/obfuscator-48919

 

Obfuscator - Asset Store

This asset obfuscates your code to make it harder for bad guys to reverse engineer your projects. Specifically designed for Unity, it seamlessly links in with its build process. The top priority of this package is to work straight out of the box with no ex

assetstore.unity.com

BEEBYTE - Obfuscator

에셋을 추가해보면 Assets/Editor/Beebyte에 파일들이 생성된다.

 

Assets/Editor/Beebyte/OfuscatorOptions

 

ObfuscatorOptions를 보면 여러 가지 설정을 할 수 있는데 딱히 손댄 적 없는데 Rename이 모두 체크되어 있는 걸 보니 기본값이 모두 체크되어 있는 걸로 설정되어 있는 듯하다.

 

 

String obfuscation, Fake Code, Naming Policies 등 여러 개를 지정할 수 있다. 문자열 난독화는 RSA를 사용하는 듯.

Fake Code도 생성할지 정할 수 있는데 기본은 모두 체크되어 있고 클래스 별 최대, 최소 생성 개수를 지정할 수 있다. 

Fake Code는 일반적으로 실행되지 않기 때문에 걱정하지 않아도 된다.

 

특정 메소드들은 동일한 문자열들도 난독화 시키는데 에셋에 같이 첨부되어 있는 문서를 보면 reflection method를 위해서라고 쓰여있다.

 

 

일단 기본 옵션으로 설정해서 빌드를 해서 분석해보자. 기본 옵션이 

기존에 프로젝트에 있던 C# 파일들은 CameraFollow.cs, GameManager.cs, CharacterMove.cs, SelectScene.cs 파일이 있었고 빌드한 후 디컴파일 해서 얻은 Assembly-CSharp.dll 파일을 보면 기존에 없던 클래스가 생겨있는 걸 볼 수 있다.

README를 보면 추가 플러그인이나 dll에 대한 옵션도 설정할 수 있는 것 같다.

안에 있던 메소드와 변수들도 모두 Rename 되어 있다.

기본 옵션 때문에 메소드 이름이 Rename 되긴 하지만 프로그램 실행을 위한 중요한 메소드들은 기본적으로 제외시킨다.

 

Rename 제외 메소드들

디컴파일 해서 볼 때도 함수명이 그대로인걸 확인할 수 있다.

만약 이래도 에러가 난다면 Skip Rename을 사용해보자

 

원본코드
Rename 코드

기본 코드를 놓고 비교해 봤을 때 크게 바뀌진 않는다. 일단 저 코드만 봤을 때는 코드가 짧아서 그런건지 변수 이름만 바뀌어 있는데 더 긴 코드를 쓰게 된다면 많이 달라질수도??

reflection 메소드 이름도 바꿔 버리기 때문에 실행에 문제가 된다면 Skip Rename을 이용하도록 하자.

 

 

Fake Code가 굉장히 많이 생성되어 있다. 모두 void로 되어 있는데 변경할 수 있는지 아니면 void로 지정되어있는지는 더 분석이 필요할 것 같다.

 

그런데 아무래도 개인적인 느낌인지 Fake Code와 내가 만든 코드들이 난독화가 되어 있어도 구분이 가는 것 같다. 알고 있는 상태로 봐서 그런지 코딩 실력이 Obfuscator 개발자들의 예상보다 낮아서 너무 차이가 나는건지...

이게 내가 작성한 코드고

 

이게 생성된 Fake Code

Input.GetAxisRaw가 반환 값이 굳이 293까지나 비교할 필요가 있을 정도로 크게 나오진 않는것 같은데...

doJumping은 다른 코드에 있던 문자열인데 Fake Code에 들어가 있는걸 보니 기본 코드를 참조해서 생성하는 것 같다.

아마 그런거겠지?

 

 

'Unity' 카테고리의 다른 글

Unity Obfuscator #5  (0) 2019.07.04
Unity Obfuscator #4  (0) 2019.06.27
Unity 특수 폴더들  (0) 2019.06.27
Unity Obfuscator #3  (0) 2019.06.14
Unity Obfuscator #2  (0) 2019.06.07