Android / 중급 / 읽는 시간: 18분

REA Android 분석: 이 APK는 요청을 어디로 보낼까요?

REA로 Android APK를 분석하세요. 요청 구성 코드를 찾고 호출자를 추적하며 엔드포인트 후보와 관찰된 네트워크 트래픽을 구분합니다.

이 페이지의 내용
얻게 될 결과

기능 하나에서 요청 빌더까지 이어지는 경로에 호스트, 경로, 매개변수 후보를 주석으로 정리합니다.

준비물

분석 가능한 APK, 전체 JDK 17+, 이미 준비한 jadx-headless-mcp 0.7.1 JAR이 필요합니다. 사용 중인 호스트의 프로바이더 지원 여부를 확인하세요.

01. 화면 또는 동작 하나 고르기

‘모든 API 나열’은 보통 범위가 너무 넓습니다. 공개 카탈로그 불러오기처럼 눈에 보이는 동작부터 시작하세요. APK 버전과 화면 이름을 기록하세요. 목표는 패키지의 모든 URL 형태 문자열이 아니라 해당 요청을 만드는 코드입니다.

정적 분석이므로 APK는 실행하지 않습니다. 포함된 문자열에는 더 이상 쓰지 않는 호스트, 테스트 환경, 런타임 설정과 결합되는 경로가 있을 수 있습니다.

코딩 에이전트에 요청하기
REA로 /absolute/path/app.apk를 분석하세요. 공개 카탈로그를 불러오는 코드를 찾으세요. 관련 가능성이 있는 화면 또는 리포지터리 클래스에서 네트워크 메서드까지 추적하세요. 클래스와 메서드 근거를 바탕으로 호스트, 경로, HTTP 메서드, 매개변수 후보를 보고하세요. 정적 선언과 확인된 런타임 트래픽을 구분하세요.

02. Android 프로바이더 연결하기

컴파일러 모듈을 포함한 전체 JDK를 사용하세요. REA가 이미 설치한 프로바이더 JAR을 가리키도록 설정하세요. 에이전트를 통해 REA를 실행한다면 해당 서버에도 같은 환경을 설정하고 다시 시작하세요. 다른 터미널에서 변수를 설정해도 기존 프로세스에는 반영되지 않습니다.

터미널
export REA_JADX_MCP_JAR="/absolute/path/jadx-headless-mcp-0.7.1-all.jar"
npx -y rea-agents@6.4.0 inspect-android-package "/absolute/path/app.apk" --json
npx -y rea-agents@6.4.0 search-android-classes "/absolute/path/app.apk" Catalog --json

03. 클래스 확인 후 메서드 선택하기

클래스 검색은 메서드 본문의 임의 문자열이 아닌 클래스 이름을 찾습니다. 기능명이나 Api, Service, Repository 같은 흔한 네트워크 관련 이름을 시도하세요. 난독화된 패키지는 매니페스트의 액티비티에서 의존성을 따라가는 등 다른 진입점이 필요할 수 있습니다.

아래 클래스를 검색 결과의 정확한 이름으로 바꾸세요. 메서드를 고르기 전에 멤버를 확인하세요. 같은 이름의 오버로드 메서드가 있으면 클래스 목록에서 반환된 오버로드 인덱스를 사용하세요.

터미널
npx -y rea-agents@6.4.0 inspect-android-class "/absolute/path/app.apk" com.example.CatalogRepository --json
npx -y rea-agents@6.4.0 inspect-android-method "/absolute/path/app.apk" com.example.CatalogRepository loadCatalog --json

04. 요청 구성과 호출자 따로 추적하기

요청을 구성하는 위치와 메서드를 호출하는 위치를 읽으세요. 상수 기본 URL은 한 부분일 뿐입니다. 빌더가 이를 바꾸거나 인터셉터가 매개변수를 추가하거나 네이티브 라이브러리가 과정 일부를 숨길 수 있습니다. 각 경계를 기록하세요.

들어오는 참조는 분석 엔진이 파악한 정적 관계를 보여 줍니다. 리플렉션과 동적으로 로드된 코드는 여기에 나타나지 않을 수 있습니다. 결과가 Java 대신 smali로 나오면 같은 메서드의 다른 표현으로 보고 명시적으로 분석하세요.

터미널
npx -y rea-agents@6.4.0 trace-android-references "/absolute/path/app.apk" com.example.CatalogRepository --method-name loadCatalog --json
  • 어떤 호출자가 이 메서드를 선택한 기능과 연결하나요?
  • 기본 URL은 리터럴, 리소스, 설정값, 런타임 결과 중 무엇인가요?
  • 요청에 실제로 추가되는 필드는 무엇인가요?
  • 정적 추적은 어디에서 멈추나요?

05. 분석 결과를 작은 명세로 정리하기

메서드 후보, URL 구성, 매개변수 이름, 근거가 되는 메서드 참조를 표로 정리하세요. 런타임에서만 알 수 있는 값은 미상으로 남기세요. 로컬 모의 서버를 사용해 이 명세에 맞는 자체 클라이언트를 프로토타입으로 만드세요.

정적 엔드포인트 목록을 요청 캡처 성공으로 간주하지 마세요. 그렇게 주장하려면 적절한 테스트 환경에서 같은 앱 버전을 실행한 별도 기록이 필요합니다. 이 튜토리얼은 분석 절차를 제공하며 APK 테스트나 API 응답 캡처를 수행했다고 주장하지 않습니다.

명령은 REA 6.4.0 기준으로 확인했습니다. 대상별 결과는 아티팩트와 프로바이더에 따라 달라집니다. 원본 자료와 검증 범위 읽기 →

분석 이어가기다음 튜토리얼 선택 →

REA가 처음인가요? REA란? · 가이드 검증 방법