유니티 빌드시 DLL 암호화

여태까지 유니티로 빌드하면서 DLL 암호화는 생각하지 않았다. 그런걸 신경 쓸 만큼 상업성을 생각하지는 않았으니까.

그리고 굳이 누가 뜯어보겠어? 라고 생각했다.

이번에 어떤 리듬게임 제작과 관련된 분쟁에서 소스코드를 한번 분석해달라는 요청에 DLL을 디컴파일 했다. 유니티로 빌드하면 어느정도 자동으로 난독화 해줄거라 아무 근거 없던 믿음이 틀렸다.

(심지어 유니티는 디버그 라인도 빌드시 안지워준다. 성능 엄청 잡아먹음)

혹시…? 해서 나름 잘나가는 구글 플레이 상위권 인디 게임 몇개도 DLL을 까봤다. 한글 출력을 넣은 디버그 라인 까지 고스란이 나왔다.

메소드 명과 내부 구현 다 노출, DLL 암호화한건 하나도 못봤고, 그나마 드물게 난독화 한 것들이 보인다. 물론 어느정도 자본이 들어가는 게임들은 이런 문제가 없겠지만, 유니티로 만든 인디게임은 대부분 그렇다고 보면 된다.

혹시나 해서 나름 서브컬쳐 계열에서 잘나갔던 회사 게임들도 파일을 보니 소스코드가 전부 노출되어 있었다. 내부 클래스만 거의 백개에 달하던데, 그런 노력을 들인 코드에 난독화도 암호화도 걸지 않다니.

내가 앱스토어에 냈던 얀데레 아가씨도 예외는 아니라서, 무료 디컴파일 도구로 클래스명과 메소드랑 세부 구현까지 다 나온다.

그래픽이나 사운드에 비해 소스코드는 게임 겉으로 드러나는게 아니라 도용 여부를 알기 힘들다.

나는 오픈소스를 지지하기 때문에 누가 내 코드를 가져다 쓰면 더 좋아하지만… 대부분의 사람에게는 나도 모르게 내 코드가 도용된다는 것은 기분 나쁠 듯하다.

당연이 단순 난독화는 짧은 시간내에 구조를 파악하기 쉽고, 굳이 난독화 한다면 그보단 아예 DLL 암호화를 하는게 낫다.

DLL 암호화는 유니티로 APK를 빌드한 이후, 패키지를 풀고 서드파티 툴로 DLL 파일을 직접 암호화한 다음에 다시 APK 로 패키징하면 된다. 애초에 APK 구조 자체가 단순한 ZIP 형태니까.

나는 귀찮아서 유니티 애셋 스토어에 있는 CodeEncipher 라는 DLL 암호화 툴을 샀다. 내 코드 가져다 쓰는걸 좋아하지만 쓸거면 게임에 사용한 코드들을 리팩토링해서 깃허브에 공개해놨으니 그걸 쓰는게 좋다고 생각해…

CodeEncipher 는 125 달러인데 그만한 가치를 보인다. 개인키 마음대로 설정해주고 버튼 한번 누르면 APK나 윈도우 실행파일로 빌드해준다. 이미 빌드된 게임을 따로 암호화도 가능.

다만 윈도우에서만 동작하는 툴인게 아쉽다.

유니티 빌드시 DLL 암호화”의 2개의 생각

  1. 무료 에셋 있습니다 최근 출시된 Remiix 라는 에셋인데 에셋스토어에서 검색 됩니다. 상용출시도 무료.

답글 남기기

이메일은 공개되지 않습니다.