Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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.7k737739일 전Kitploit 검토 완료

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

License: Apache-2.0 GitHub stars GitHub last commit

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

Kotlin 최우선 지원: 최신 Android 앱은 Kotlin/KMP 기반이며 R8로 강하게 난독화되어 있습니다. 이 스킬은 R8이 제거할 수 없는 메타데이터에서 원본 Kotlin 클래스 이름을 복원하고, 고전적인 Retrofit/OkHttp 스택뿐만 아니라 Ktor, Apollo (GraphQL), Koin에서도 API를 추출합니다. 아래 Kotlin 이름 복원을 참고하세요.

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

목차

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

기능

기능설명
핑거프린트 우선 (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 요청 서명 방식
호출 흐름 추적Activity/Fragment에서 ViewModel과 Repository를 거쳐 HTTP 호출까지 추적
구조 분석Manifest, 패키지, 아키텍처 패턴
난독화 처리R8에 강한 경로/URL 추출과 ProGuard/R8 출력을 탐색하기 위한 전략

요구 사항

필수:

  • 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 내에서 다음을 실행하세요:

/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를 디컴파일해줘"
  • "이 Android 앱을 리버스 엔지니어링해줘"
  • "이 앱에서 API 엔드포인트를 추출해줘"
  • "LoginActivity에서 호출 흐름을 따라가줘"
  • "이 AAR 라이브러리를 분석해줘"

수동 스크립트

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

# 의존성 확인
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 클라이언트
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%를 복원합니다.

# 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/

저장소 구조

도구 다운로드