모바일 앱 취약점 분석, 악성코드 앱 분석을 수행하게 되면 바이너리 파일로 분석한다. 바이너리 파일이 주어진 상태에서 보통 정적 분석 도구인 jd-gui, jadx 등의 도구를 이용한다.
하지만, 바이너리 파일을 이클립스 프로젝트로 변환한 상태에서 분석하게 되면 다른 도구보다 막강한 기능을 이용하게 되어 분석이 수월해진다.
자바 소스코드 추출
dex2jar 도구로 apk 파일을 인자로 지정하여 디컴파일을 하면 자바 바이트 코드(jar 파일)가 생성된다.
○ dex2jar APK이름
자바 바이트 코드로 변환된 jar 파일을 jd-gui 도구로 드래그하면 자바 소스코드로 변환된다.
jd-gui 도구는 자바 소스코드로 변환해서 UI로 보여주는 기능도 있지만 자바 소스코드를 실제로 파일로 저장하는 기능이 있다. 상단의 File 메뉴에서 Save All Sources를 클릭하면 zip 파일로 저장된다.
저장된 압축 파일을 해제하고, 디렉토리 이름을 src로 변경한다.
apktool 도구로 apk 파일을 인자로 지정하여 디컴파일을 하면 패키지명과 동일한 디렉토리가 생성된다.
디렉토리 내부를 살펴보면 다양한 파일이 있는데, 이클립스에서 인식한 파일(res, src, AndroidManifest.xml)을 제외한 모든 파일을 삭제하고, src 디렉토리를 해당 디렉토리로 이동한다.
이클립스 프로젝트 로드
이클립스를 실행해서 좌측 화면의 패키지 익스플로러에 마우스 우클릭을 해서 임포트를 누르고, Existing Android Code Into Workspace를 선택한다.
○ Package Explorer > Import > Android > Existing Android Code Into Workspace
Root Directory에 이클립스 프로젝트가 있는 절대 경로를 입력하면 하단의 메인 액티비티가 출력된다.
이클립스 프로젝트로 정상적으로 로드되면 패키지 익스플로러 창에 src, res, AndroidManifest.xml 등의 파일이 트리 구조로 되어있다.