최근 Android apk 파일 분석에 관심을 가지게 되어 조금씩 연습을 하고 있습니다.
이번 포스팅은 apk 파일 분석을 시작하면서 제일 먼저 접한 정적 분석 방법에 대한 내용입니다.
정적 분석 방법에는 압축해제를 통한 java source를 얻는 방법과 디컴파일을 통한 smali code를 얻는 방법 두 가지가 있습니다. 이번 글에서는 압축해제를 통한 방법을 다음 글에서는 디컴파일을 통한 방법을 소개하겠습니다. 대상 파일은 악성코드 샘플입니다.
- 압축해제를 통한 java source를 얻는 방법입니다.
- 다음 apk 파일의 확장자를 zip으로 변경한 후 압축을 풉니다.
- 여기서 필요한 파일은 classes.dex 파일입니다. AndroidManifest.xml의 경우 암호화로 인해 파일의 내용을 볼 수 없습니다. 이제 dex2jar 툴을 이용하여 jar파일을 얻어내면 됩니다. 방법은 다음과 갔습니다.
- Dex2jar 폴더에서 shift + 마우스 우클릭 -> 여기서 명령창 열기
(dex2jar의 위치를 환경변수로 지정한 후 classes.dex 폴더에서 바로 하셔도 됩니다.)
- dex2jar.bat "classes.dex 파일의 위치" 실행
- Done. 위에 우리가 원하는 jar 파일의 위치가 나옵니다. 보통 dex 파일의 위치에서 생성됩니다.
- 이제 jd-gui 툴을 실행시킵니다. 실행 후 classes_dex2jar.jar 파일을 jd-gui 창 위로 드래그를 하시거나
File -> Open File 을 통해 파일을 불러옵니다.
- 소스파일을 구하시고 싶다면, File -> Save All Sources 를 통해 저장하시면 됩니다.
- 아래 스샷은 Source 파일을 Notepad++로 열어본 모습입니다.
- 다음은 dex2jar 과 jd-gui 툴입니다.