play/box

ProGuard 와 복호화

카고형 2023. 3. 4. 23:16
728x90

ProGuard란?

ProGuard는 안드로이드 앱 개발 시 사용되는 오픈 소스 도구로, 앱의 크기를 줄이고 보안을 강화하기 위해 사용됩니다. ProGuard는 Java 코드의 난독화(obfuscation)와 코드 최적화(optimization)를 수행하며, 클래스 파일을 쉽게 분석할 수 없도록 클래스 이름, 메서드 이름, 필드 이름 등을 변경합니다.

ProGuard는 기본적으로 Android SDK에 포함되어 있습니다. 따라서, 안드로이드 개발 시에는 ProGuard를 사용하여 앱의 보안을 강화하고, 크기를 줄일 수 있습니다.

매핑 파일이란?

매핑 파일(mapping file)은 ProGuard가 소스 코드를 난독화하거나, 클래스 이름, 메서드 이름, 필드 이름을 변경할 때 사용됩니다. 매핑 파일은 소스 코드나 바이너리 코드와는 별도로 생성되는 파일입니다.

매핑 파일은 ProGuard가 난독화한 클래스 이름, 메서드 이름, 필드 이름 등을 원래의 이름으로 매핑하는 역할을 합니다. 즉, 매핑 파일은 난독화된 코드를 원래의 코드와 매핑하는 데 사용됩니다.

매핑 파일은 다음과 같은 정보를 포함합니다.

  • 원래의 클래스 이름
  • 난독화된 클래스 이름
  • 원래의 메서드 이름
  • 난독화된 메서드 이름
  • 원래의 필드 이름
  • 난독화된 필드 이름 등

ProGuard 매핑 파일 없이 복호화하기

1. jadx-gui 사용하기

jadx-gui는 안드로이드 APK 파일을 디컴파일하여 복호화하는 오픈 소스 도구입니다. 다음은 jadx-gui를 사용하는 방법입니다.

  1. jadx-gui를 다운로드하여 설치합니다.
  2. jadx-gui를 실행하고, File > Open APK 메뉴를 선택하여 APK 파일을 엽니다.
  3. APK 파일이 열리면, jadx-gui는 안드로이드 앱의 모든 리소스를 보여줍니다.
  4. 디컴파일된 소스 코드를 확인할 수 있습니다.

2. dex2jar와 JD-GUI 사용하기

dex2jar와 JD-GUI는 안드로이드 앱의 DEX 파일을 JAR 파일로 변환하고, JAR 파일을 다시 디컴파일하여 소스 코드를 복호화하는 도구입니다. 다음은 dex2jar와 JD-GUI를 사용하는 방법입니다.

  1. dex2jar를 다운로드하여 설치합니다.
  2. 변환하고자 하는 DEX 파일을 선택하고, dex2jar를 실행합니다.
  3. 변환된 JAR 파일을 선택하고, JD-GUI를 실행합니다.
  4. JD-GUI에서 JAR 파일을 열고, 디컴파일된 소스 코드를 확인할 수 있습니다.

위와 같이 ProGuard 매핑 파일 없이도 복호화를 수행할 수 있지만, 이러한 방법으로 복호화를 시도하려면 앱의 보안성이 낮아질 수 있으므로, 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋습니다. 또한, 이러한 방법으로 복호화를 시도하기 전에 앱의 소유자 혹은 배포자에게 매핑 파일을 제공받을 수 있는지 확인하는 것이 좋습니다.

728x90