Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
android-reverse-engineering-skill — Android APK/XAPK/JAR/AAR 파일을 디컴파일하고, jadx를 사용하여 HTTP API, 인증 패턴 및 호출 흐름을 추출하며, R8에 강한 Kotlin 이름 복구 기능을 통해 보안 연구 및 침투 테스트를 지원합니다. | Kitploit
도구/GitHubGitHub/simoneavogadro/android-reverse-engineering-skill
Android SecurityStatic AnalysisVulnerability AnalysisMobile App PentestingReverse EngineeringAPI Security TestingInformation GatheringPenetration TestingMobile Security

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Binary Analysis
Learning & Education
GitHubsimoneavogadro/android-reverse-engineering-skill

android-reverse-engineering-skill

Android APK/XAPK/JAR/AAR 파일을 디컴파일하고, jadx를 사용하여 HTTP API, 인증 패턴 및 호출 흐름을 추출하며, R8에 강한 Kotlin 이름 복구 기능을 통해 보안 연구 및 침투 테스트를 지원합니다.

저장소 보기
6.7k737162일 전Kitploit 검토 완료

Android 리버스 엔지니어링 및 API 추출 — Claude Code 스킬

License: Apache-2.0 GitHub stars GitHub last commit

Android APK/XAPK/JAR/AAR 파일을 디컴파일하고 앱에서 사용하는 HTTP API (Retrofit 엔드포인트, OkHttp 호출, 하드코딩된 URL, 인증 패턴)를 추출하여 원본 소스 코드 없이도 이를 문서화하고 재현할 수 있는 Claude Code 스킬입니다.

최상의 Kotlin 지원: 최신 Android 앱은 Kotlin/KMP로 작성되며 R8로 심하게 난독화됩니다. 이 스킬은 R8이 제거할 수 없는 메타데이터에서 원래 Kotlin 클래스 이름을 복구하고, Ktor, Apollo (GraphQL), Koin에서 API를 추출합니다 — 기존의 Retrofit/OkHttp 스택뿐만 아니라. 자세한 내용은 아래 Kotlin 이름 복구를 참조하세요.

Windows / PowerShell 지원 (실험적): bash 스크립트와 함께 제공되는 *.ps1 스크립트는 최근 커뮤니티 기여로, 아직 안정화 중입니다. 문제가 발생하면 이 저장소에 이슈를 열어주세요 (기여자의 업스트림 포크가 아닙니다): PowerShell 스크립트는 @SimoneAvogadro가 여기서 유지 관리합니다.

목차

  • 기능
  • 요구 사항
  • 설치
  • 사용법
  • 저장소 구조
  • 참고 자료
  • 감사의 말
  • 면책 조항
  • 라이선스

기능

요구 사항

필수:

  • Java JDK 17+
  • jadx (CLI)

선택 사항 (권장):

  • Vineflower 또는 Fernflower — 복잡한 Java 코드에서 더 나은 출력
  • dex2jar — APK/DEX 파일에 Fernflower를 사용하는 데 필요

자세한 설치 지침은 plugins/android-reverse-engineering/skills/android-reverse-engineering/references/setup-guide.md를 참조하세요.

설치

GitHub에서 (권장)

Claude Code 내에서 실행:

root@kitploit:~
/plugin marketplace add SimoneAvogadro/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill

스킬은 이후 모든 세션에서 영구적으로 사용할 수 있습니다.

로컬 클론에서

root@kitploit:~
git clone https://github.com/SimoneAvogadro/android-reverse-engineering-skill.git

그런 다음 Claude Code에서:

root@kitploit:~
/plugin marketplace add /path/to/android-reverse-engineering-skill
/plugin install android-reverse-engineering@android-reverse-engineering-skill

사용법

슬래시 명령어

root@kitploit:~
/decompile path/to/app.apk

전체 워크플로(종속성 확인, 디컴파일 및 초기 구조 분석)를 실행합니다.

자연어

스킬은 다음과 같은 문구에 반응합니다:

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

수동 스크립트

스크립트는 독립적으로도 사용할 수 있습니다:

root@kitploit:~
# 종속성 확인
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/check-deps.sh

# 누락된 종속성 설치 (OS 및 패키지 관리자 자동 감지)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh jadx
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/install-dep.sh vineflower

# 디컴파일 전에 APK/XAPK 지문 분석 (Phase 0 분류):
# 프레임워크, HTTP 스택, 난독화 수준, 네이티브 라이브러리, 주목할 만한 SDK
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/fingerprint.sh app.apk

# jadx로 APK 디컴파일 (기본)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app.apk

# XAPK 디컴파일 (내부 각 APK 자동 추출 및 디컴파일)
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh app-bundle.xapk

# Fernflower로 디컴파일
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine fernflower library.jar

# 두 엔진 실행 및 비교
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/decompile.sh --engine both --deobf app.apk

# API 호출 찾기 — 기본적으로 모든 지원 스택 전체 검색
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --retrofit
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --urls

# 최신 Kotlin/KMP 스택 및 난독화 저항 추출
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --ktor    # Ktor client
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --apollo  # Apollo / GraphQL
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/find-api-calls.sh output/sources/ --paths   # R8 인라이닝에서 살아남는 인용된 경로 리터럴

Kotlin 이름 복구 (R8 역난독화)

대부분의 실제 Kotlin/KMP 앱은 R8을 통해 배포되므로 디컴파일된 클래스는 a.b.c 형태로 나옵니다. R8은 JVM 심볼을 이름을 바꾸지만 Kotlin 메타데이터 문자열을 제거할 수 없습니다 — Kotlin 런타임(리플렉션, 코루틴)은 런타임에 원래 정규화된 이름이 필요합니다. 이 스킬은 해당 @DebugMetadata / @Metadata 어노테이션을 분석하여 난독화됨 → 실제 클래스 이름 매핑을 재구성합니다. 일반적인 앱에서 실제로 읽고 싶은 *Repository / *ViewModel / *UseCase / *Impl 클래스의 약 100%를 복구합니다.

root@kitploit:~
# 1. 디컴파일된 소스에서 매핑 구축
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/recover-kotlin-names.sh output/sources/ output/names/
#    → output/names/mapping.tsv, mapping.json, by_package/

# 2. 쿼리: 난독화된 이름 확인, 실제 이름으로 검색, 또는 grep
#    각 히트에 복구된 클래스 이름이 주석으로 달린 소스 검색
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ LoginRepository
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ -o a.b.c
bash plugins/android-reverse-engineering/skills/android-reverse-engineering/scripts/lookup-name.sh output/names/ --grep 'login' output/sources/

저장소 구조

root@kitploit:~
android-reverse-engineering-skill/
├── .claude-plugin/
│   └── marketplace.json                    # Marketplace catalog
├── plugins/
│   └── android-reverse-engineering/
│       ├── .claude-plugin/
│       │   └── plugin.json                 # Plugin manifest
│       ├── skills/
│       │   └── android-reverse-engineering/
│       │       ├── SKILL.md                # Core workflow (Phase 0–5)
│       │       ├── references/
│       │       │   ├── setup-guide.md
│       │       │   ├── jadx-usage.md
│       │       │   ├── fernflower-usage.md
│       │       │   ├── api-extraction-patterns.md
│       │       │   ├── kotlin-name-recovery.md
│       │       │   ├── third_party_hosts.txt   # denylist for first/third-party bucketing
│       │       │   └── call-flow-analysis.md
│       │       └── scripts/
│       │           ├── check-deps.sh       # Bash
│       │           ├── check-deps.ps1      # PowerShell
│       │           ├── install-dep.sh
│       │           ├── install-dep.ps1
│       │           ├── decompile.sh
│       │           ├── decompile.ps1
│       │           ├── fingerprint.sh          # Phase 0 — pre-decompile triage
│       │           ├── recover-kotlin-names.sh # R8 → real Kotlin class names
│       │           ├── lookup-name.sh          # query the recovered name map
│       │           ├── find-api-calls.sh
│       │           └── find-api-calls.ps1
│       └── commands/
│           └── decompile.md                # /decompile slash command
├── LICENSE
└── README.md

참고 자료

  • jadx — Dex to Java decompiler
  • Fernflower — JetBrains analytical decompiler
  • Vineflower — Fernflower community fork
  • dex2jar — DEX to JAR converter
  • apktool — Android resource decoder

감사의 말

이 스킬을 만드는 데 기여해 주신 분들께 감사드립니다:

  • @tajchert — Phase 0 지문 분석, R8 저항 Kotlin 이름 복구 (recover-kotlin-names.sh, lookup-name.sh), Ktor / Apollo / Koin / HMAC 추출 패턴 (#16)
  • @philjn — 네이티브 Windows / PowerShell 지원 (check-deps.ps1, install-dep.ps1, decompile.ps1, find-api-calls.ps1) 및 decompile.sh에서 분할/번들 APK 감지 (#8)
  • @txhno — 유지 관리되는 ThexXTURBOXx/dex2jar 포크로 마이그레이션 (#12)
  • @muqiao215 — 디컴파일 부분 성공 처리, Fernflower 타임아웃 보호, 중간 산출물 디렉토리 (#10)
  • @kevinaimonster — 중국어 현지화 (SKILL.md 검색 키워드) (#4)

면책 조항

이 플러그인은 합법적인 목적으로만 제공되며, 여기에는 다음이 포함되나 이에 국한되지 않습니다:

  • 보안 연구 및 승인된 침투 테스트
  • 관련 법률에 따라 허용되는 상호 운용성 분석 (예: EU 지침 2009/24/EC, 미국 DMCA §1201(f))
  • 악성 코드 분석 및 사고 대응
  • 교육적 사용 및 CTF 대회

귀하는 단독으로 이 도구의 사용이 모든 관련 법률, 규정 및 서비스 약관을 준수하도록 할 책임이 있습니다. 소유하지 않거나 분석할 권한이 없는 소프트웨어의 무단 리버스 엔지니어링은 해당 관할권의 지적 재산권 법률 및 컴퓨터 사기 법률을 위반할 수 있습니다.

저자는 이 도구의 오용에 대한 어떠한 책임도 부인합니다.

라이선스

Apache 2.0 — LICENSE 참조

도구 다운로드
기능설명
우선 지문 분석 (Phase 0)APK/XAPK를 몇 초 만에 분류 — 전체 디컴파일 시간을 소모하기 전에 프레임워크(Flutter / React Native / Cordova / Xamarin / 네이티브 Kotlin), HTTP 스택, 난독화 수준 및 네이티브 라이브러리를 감지합니다
디컴파일jadx 및 Fernflower/Vineflower를 사용하여 APK, XAPK, JAR, AAR 파일을 디컴파일합니다 (단일 엔진 또는 나란히 비교)
Kotlin 이름 복구R8이 제거할 수 없는 Kotlin 메타데이터를 사용하여 R8 난독화된 바이너리에서 원래 *Repository / *ViewModel / *UseCase 클래스 이름을 재구성합니다
API 추출Retrofit, OkHttp, Volley 및 최신 Kotlin/KMP 스택: Ktor, Apollo (GraphQL), Koin DI — 엔드포인트, 하드코딩된 URL, 인증 헤더, 토큰 및 HMAC 요청 서명 체계
호출 흐름 추적Activities/Fragments에서 ViewModels 및 저장소를 거쳐 HTTP 호출까지 추적합니다
구조 분석매니페스트, 패키지, 아키텍처 패턴
난독화 처리R8에 강한 경로/URL 추출 및 ProGuard/R8 출력 탐색 전략