APK 분석의 패러다임을 바꾼 Droid ASC 엔진 소개 — AI 생성 일러스트
개발도구 도구

APK 분석의 패러다임을 바꾼 Droid ASC 엔진 소개

MG1937/ASC

GitHub9월 15일 발표 · 3분

대용량 안드로이드 APK 분석 시 발생하는 느린 전처리 과정을 우회하는 'Droid ASC' 엔진이 개발되었습니다. 이 도구는 복잡한 인덱싱 없이도 APK 파일을 데이터베이스처럼 직접 조회하여 작동합니다.

세 줄 요약GitHub 원문 기반
  1. 전통적인 방식의 병목 현상을 극복하고, 사전 처리 없이 코드 관계를 즉시 추출합니다. 352MB APK 분석에서 전역 참조 검색은 1.79초, 타겟 클래스 디컴파일은 단 177ms 만에 완료되는 성능을 입증했습니다.
  2. 이 기술은 컴파일된 코드를 분석하는 패러다임을 근본적으로 변화시킵니다. 메모리 과부하를 일으키는 기존의 인덱싱 도구가 아닌, 빠르고 즉각적인 온디맨드 디컴파일 엔진을 제공합니다.
  3. APK 파일을 읽기 전용 데이터베이스로 취급하며 필요한 최소한의 DEX만 동적 재구성하는 것이 특징입니다. `droidasc getclass`나 `findrefs` 등 CLI 명령어로 기능을 활용할 수 있습니다.

기존 안드로이드 APK를 디컴파일하는 전통적인 방식은 대용량 파일을 처리하기 위해 오랜 시간 동안 많은 RAM을 소모하며 무거운 전처리 과정을 거치는 것이 일반적입니다. 그러나 이 과정은 이미 구조화된 컴파일 아티팩트 데이터에 대해 과도한 코드 관계 데이터베이스를 재구성하느라 시간을 낭비한다는 비효율성이 있습니다. Droid ASC는 이러한 전통적인 병목 현상을 극복하기 위해, APK 파일을 무거운 인덱싱 도구가 아닌 읽기 전용 데이터베이스처럼 취급하여 필요할 때 직접 조회하는 방식으로 작동합니다.

Droid ASC는 사전 처리 과정 없이 코드 관계를 즉시 추출하는 제로 오버헤드 엔진을 구축했습니다. 구체적으로, 전체 인플레이트를 수행하지 않고 Deflate 비트스트림 내부를 직접 탐색하며 핵심 메타데이터를 추출하고, R8 컴파일러의 결정론적 상수 재배치 및 명령어 중복 제거와 같은 동작 방식을 활용합니다. 이를 통해 빠르고 집중된 물리적 레이아웃을 이용해 크로스 DEX 코드 검색을 수행할 수 있으며, 무거운 매핑 테이블 구축 없이 O(1) 시간 복잡도로 메서드를 해결하는 원시 기능을 구현했습니다.

이러한 아키텍처를 바탕으로 352MB 규모의 상용 APK에 대한 테스트 결과, Droid ASC는 전역 크로스 참조 검색을 1.79초 만에 완료했으며 타겟 클래스를 디컴파일하는 데는 단 177밀리초가 소요되었고 메모리 사용량은 141MB에 그쳤습니다. 사용자들은 `droidasc` CLI 명령어를 통해 `getclass`로 특정 클래스를 추출하거나, `findrefs`를 사용하여 문자열/타입/메서드 등의 코드 참조를 APK 내 모든 DEX 항목에서 찾을 수 있습니다.

원문GitHub · MG1937/ASC
원문 보기GitHub