앱 난독화 (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 앱 난독화 : [링크]
Proguard manual : [링크]
앱 축소, 난독화 및 최적화 : [링크]
★☆☆☆☆
반응형
'개발 > Unity' 카테고리의 다른 글
Unity) 기즈모 활용 하기(Gizmos) (0) | 2021.10.13 |
---|---|
Unity)안드로이드 심볼 활성화(Enabling Android symbols) (0) | 2021.10.07 |
Unity)문재해결) Fatal Error Logs/AssetImportWorker0.prev.log: 다른 프로세스가 파일을 사용중이기 때문에 프로세스가 엑세스 할 수 없습니다. (0) | 2021.09.29 |
문제해결)Unity)The option 'android.enableR8' is deprecated and should not be used anymore. (2) | 2021.09.17 |
Unity)Animation State Machine(메카님 사용방법 정리) (0) | 2021.09.13 |
댓글