본문 바로가기
개발/Unity

Unity) 앱 난독화(Proguard)

by 테샤르 2021. 10. 4.

앱 난독화 (Proguard)

앱을 서비스하다 보면 난독화하는 Proguard에 대해 접하게 된다.

Proguard란? 빌드 후 나온 파일을 난독화 시켜서 기존의 코드가 다른 형태의 코드로 알아보기 힘들게 변경시키는 과정을 말한다. 이게 100% 보안을 유지시켜주는 것은 아니나 1차적인 방어막 정도는 될 수 있다.

 

[Project Setting] - [Player] - [Publishing Setting] -[build]의

Custom Proguard File과 Custom Main Gradle Template를 생성한다.

Android - mainTemplate와 proguard-user가 생성된다.

반응형

기본적인 mainTemplate의 내용은 다음과 같다.

그중에서 눈여겨봐야 할 위치는  consumerProguardFiles 'proguard-user.txt' 항목이다.

< proguard-user.txt>

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN

apply plugin: 'com.android.library'
**APPLY_PLUGINS**

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
**DEPS**}

android {
    compileSdkVersion **APIVERSION**
    buildToolsVersion '**BUILDTOOLS**'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        minSdkVersion **MINSDKVERSION**
        targetSdkVersion **TARGETSDKVERSION**
        ndk {
            abiFilters **ABIFILTERS**
        }
        versionCode **VERSIONCODE**
        versionName '**VERSIONNAME**'
        consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
    }

    lintOptions {
        abortOnError false
    }

    aaptOptions {
        noCompress = ['.ress', '.resource', '.obb'] + unityStreamingAssets.tokenize(', ')
        ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
    }**PACKAGING_OPTIONS**
}**REPOSITORIES**
**IL_CPP_BUILD_SETUP**
**SOURCE_BUILD_SETUP**
**EXTERNAL_SOURCES**

 

Progurad에서 많이 사용하는 옵션은 다음과 같다.

반응형

< Progurad 옵션 >

-keep [클래스] 코드에 대한 진입점을 보존한 클래스 및 클래스 멤버를 지정합니다.
-dontwarn [클래스 필터] 해결되지 않은 참조 및 기타 중요한 문제에 대해 경고를하지 않습니다.
-dontobfuscate 입력클래스 파일을 난독화하지 않도록 지정합니다.(기본 모든 코드 난독화)
-dontoptimize 입력클래스 파일을 최적화하지 않도록 지정합니다. (기본 모든 코드 최적화)
반응형

정의하는 멤버에는 와일드카드(*)와 물음표(?)를 사용해서 범위를 지정할 수 있다.

  설명
? 단일 문자와 일치여부를 판단합니다.
* 모든 부분과 일치합니다.
** 모든 부분과 일치하며 구분 기호수의 제한이 없습니다.

 

난도화 규칙을 분리 여러파일로 구분해서 사용이 가능하다.

 

 

 

Unity 앱 난독화 : [링크]

 

Android용 Gradle - Unity 매뉴얼

Gradle은 다양한 빌드 프로세스를 자동화하고 일반적인 빌드 오류를 방지하는 Android 빌드 시스템입니다. Unity에서 Gradle은 DEX(Dalvik Executable 포맷) 파일의 메서드 레퍼런스 수를 줄여줍니다. 즉 DEX

docs.unity3d.com

Proguard manual : [링크]

 

ProGuard Manual: Usage | Guardsquare

ProGuard documentation about usage, configuration and options.

www.guardsquare.com

 

앱 축소, 난독화 및 최적화 : [링크]

 

앱 축소, 난독화 및 최적화  |  Android 개발자  |  Android Developers

사용하지 않는 코드와 리소스를 삭제하기 위해 출시 빌드에서 코드를 축소하는 방법을 알아보세요.

developer.android.com

 

★☆☆☆☆

 

반응형

댓글