안드로이드 앱의 리버스 엔지니어링은 많은 개발자에게 흥미롭고도 도전적인 과제입니다. 애플리케이션의 내부 구조를 이해하고, 사용되는 API를 분석하며, 오류를 수정하는 작업은 개발 과정에서 매우 중요한 역할을 합니다. 그러나 이러한 작업은 종종 복잡하고 시간이 많이 소요되기 때문에, 이를 보다 간편하게 해주는 도구가 필요합니다. 그 중 하나가 바로 SimoneAvogadro/android-reverse-engineering-skill입니다.

이 프로젝트는 Claude Code라는 플랫폼을 기반으로 하여, 안드로이드 앱의 APK, XAPK, JAR, AAR 파일을 디컴파일하고 앱에서 사용되는 HTTP API를 추출하는 기능을 제공합니다. Retrofit 엔드포인트, OkHttp 호출, 하드코딩된 URL을 문서화하여 원본 소스 코드 없이도 이를 재현하고 문서화할 수 있도록 돕습니다.

주요 기능 및 특징

  1. 디컴파일링: 이 도구는 jadx, Fernflower, Vineflower를 사용하여 APK, XAPK, JAR, AAR 파일을 디컴파일합니다. 여러 엔진을 동시에 사용하여 결과물을 비교 분석할 수 있습니다.
  2. API 추출 및 문서화: Retrofit 엔드포인트, OkHttp 호출, 하드코딩된 URL, 인증 헤더와 토큰 등을 추출하여 문서화합니다. 이는 API를 이해하고 사용하는 데 큰 도움이 됩니다.
  3. 호출 흐름 추적: 앱의 구조를 분석하여 Activity/Fragment에서 ViewModel 및 레포지토리까지의 호출 흐름을 추적할 수 있습니다.
  4. 앱 구조 분석: 앱의 Manifest, 패키지, 아키텍처 패턴을 분석하여 구조적 이해를 돕습니다.
  5. 난독화된 코드 처리: ProGuard/R8로 난독화된 코드를 탐색하는 전략을 제공합니다.
  6. 설치 가이드

    이 도구를 사용하기 위해서는 Java JDK 17 이상과 jadx CLI가 필요합니다. 또한, 복잡한 Java 코드에 대한 더 나은 출력 결과를 위해 Vineflower 또는 Fernflower를 설치하는 것이 권장됩니다. dex2jar를 통해 APK/DEX 파일을 다룰 수 있습니다.

    GitHub에서 설치하기 (추천)

    Claude Code 내부에서 아래 명령어를 실행합니다:

    /plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
    /plugin install android-reverse-engineering@android-reverse-engineering-skill

    이렇게 하면 이후 모든 세션에서 이 스킬을 사용할 수 있습니다.

    로컬 클론에서 설치하기

    git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git

    그 후 Claude Code에서 아래 명령어를 실행합니다:

    /plugin marketplace add /path/to/android-reverse-engineering-skill
    /plugin install android-reverse-engineering@android-reverse-engineering-skill

    기본 사용법

    이제 이 도구를 설치했으니, 실제로 사용해보겠습니다.

    슬래시 명령어 사용

    아래와 같이 입력하면 전체 작업이 실행됩니다:

    /decompile path/to/app.apk

    이 명령어는 종속성 검사, 디컴파일, 초기 구조 분석을 수행합니다.

    자연어 명령어 사용

    스킬을 활성화하려면 자연어로 다음과 같은 문구를 사용할 수 있습니다:

    • "이 APK를 디컴파일해줘"
    • "이 안드로이드 앱을 리버스 엔지니어링해줘"
    • "이 앱에서 API 엔드포인트를 추출해줘"
    • "LoginActivity에서 호출 흐름을 따라가줘"
    • "이 AAR 라이브러리를 분석해줘"

수동 스크립트 사용

스크립트를 독립적으로 사용할 수도 있습니다. 예를 들어, 종속성을 확인하려면 다음과 같이 명령어를 실행합니다:

bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh

특정 종속성을 설치하려면,

bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh jadx

APK 파일을 디컴파일하려면 다음과 같이 입력합니다:

bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk

활용 시나리오

이 도구는 다양한 실무 시나리오에서 활용될 수 있습니다. 예를 들어, 앱의 API를 문서화하여 테스트 자동화 작업에 활용하거나, 보안 취약점을 분석하는 데 유용합니다. 리버스 엔지니어링을 통해 경쟁 앱의 기능을 분석하고, 이를 통해 자신의 앱 개선 아이디어를 얻는 것도 가능합니다.

비슷한 도구와 비교

안드로이드 리버스 엔지니어링 도구로는 apktool, JADX, Ghidra 등이 있습니다. 그러나 SimoneAvogadro/android-reverse-engineering-skill은 이러한 도구들과 달리, Claude Code 환경과의 통합을 통해 사용 편의성을 극대화했습니다. 자연어 명령어 지원과 API 추출 기능은 다른 도구에서 쉽게 찾기 어려운 장점입니다.

추천 대상 및 마무리

이 프로젝트는 안드로이드 개발자, 보안 전문가, API 분석가 등 다양한 개발자에게 유용합니다. 특히 리버스 엔지니어링과 API 문서화 작업을 효율적으로 수행하고자 하는 분들에게 추천합니다.

자세한 내용은 GitHub에서 확인해보세요: SimoneAvogadro/android-reverse-engineering-skill