반응형

이번 포스팅은 Proguard 사용 시 생성되는 파일 목록과 내용에 대하여 알아보도록 하겠습니다.

 

기본적으로 프로젝트 생성을 하면 아래와 같은 파일이 생성이 됩니다.

proguard-project.txt  = Proguard 설정 파일

- project.properties = 프로젝트 설정 파일

 

project.properties 프로젝트 세팅 파일에  프로가드 사용 여부 주석을 해제합니다.

#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

해제 방법은 #을 삭제

 

Proguard를 실행하여 프로젝트를 빌드를 하게 되면 아래와 같은 파일 목록들이 생성이 됩니다.

해당 파일과 그 역할에 대하여 알아보도록 하겠습니다.

    ▶ dump.txt : 어플리케이션에서 사용중인 클래스들의 내부 구조에 대한 대략적인 정보

    ▶ mapping.txt : 난독화 과정에서 기존 Class 혹은 method가 어떤 난독화된 새로운 이름으로 매핑되었는지 그 목록. 난독화 된 어플리케이션에 발생하는 Log나, StackTrace 등 프로젝트 론칭하여 빌드 시 오류 및 디버깅 시 분석하기 위해서 꼭 챙겨 두셔야 합니다.

    ▶ seeds.txt : 난독화 되지 않은 클래스와 멤버들의 목록입니다.

    ▶ usage.txt : 사용되지 않기 때문에, apk 파일에서 제거된 코드들의 목록입니다. 혹시 제거되서는 안 되는 method나 Class가 제거되었는지 확인할 필요가 있습니다.

  


이제 Proguard 설정 파일인 proguard-project.txt 파일의 내용들에 대하여 알아보도록 하겠습니다.

 

-verbose : 오류 시 로그를 보여줌

-dontoptimize : 압축하지 않음 (사용하지 않는 것이 좋음)

-dontshrink : 사용하지 않는 메서드를 유지함

-dontwarn org.apache.**  

-dontwarn (Warnig이 나온 클래스).** 

// 빌드 시 can't find superclass or interface // can't find referenced class 등의  Warnig 이 나올 경우

// 클래스 Warnig을 무시합니다.

 

-libraryjars libs/android-support-v4.jar // 라이브러리 추가

-libraryjars libs/json-simple-1.1.1 .jar

 

-keep public class * { public protected *; } 

// public class와  protected class의 경우를 난독화 하지 않음 

// public class를 난독화 할 경우 메서드 호출 중 문제가 될 수 있음....

 

-keep class org.apache.http.** //org.apache.http. 하위 클래스를 전부 난독화 하지 않음 

-keep interface org.apache.http.** //org.apache.http. 하위 인터페이스를 난독화 하지 않음

 

-keep class  org.apache.http.** {

public *;

// org.apache.http. 하위 클래스중 public method 만 난독화 하지 않음

 

난독화 후 어플리케이션 실행하여 돌려보면서 난독화 범위를 적용해야 합니다.


Reference

1. https://leejiheg.tistory.com/entry/Android-Proguard-설정법-libs-라이브러리-포함 [지똥이]

반응형

'Development > Security' 카테고리의 다른 글

[Security] 공인인증  (0) 2020.04.12
[Security] 대칭키 암복호화  (0) 2019.09.22
[Security] Base64 정리  (0) 2019.09.09
[Security] 전자서명  (0) 2019.09.05
[Security] 공개키 인증서  (0) 2019.09.04

+ Recent posts