apk는 안드로이드 어플리케이션의 확장자입니다.
Android PacKage의 줄임말이죠! 또한 형식은 ZIP과 동일하게 압축이 되어 있습니다.
안드로이드는 일반적으로 Java로 작성되고(요즘은 코틀린이 대세라ㄱ...), Java 코드는 Dalvik byte code로 컴파일 됩니다. 이 byte code는 일반적인 Java byte code와는 다릅니다! Java 코드를 먼저 .class 파일로 컴파일 한 후, JVM byte code를 .dex 형식으로 변환하여 만들어 집니다.
.class 파일을 .dex로 바꾸는 것은 안드로이드 가상머신인 Dalvik이 인식하도록 만들어 주는 것입니다. 따라서 거꾸로 .dex에서 .class를 추출하면 어플리케이션의 소스코드를 확인할 수 있게 되는것이죠(디컴파일!). 이것도 난독화가 적용이 되어 있다면 소용은 없지만 말입니다...
아무튼 따라서 apk 분석을 진행하려면 주어진 apk를 디컴파일 하는것이 필요합니다.
오늘 설치하는 툴은 apk를 디컴파일 하기 위해 필요한 것들입니다.
1. Java
2. apktool : apk > smali
3. dex2jar : dex > jar
4. jd-cmd : jar > java
그럼 이제 차례대로 설치하는 방법을 알아보도록 하겠습니다. 위 툴들 모두 windows와 linux에서 사용할수 있습니다.
1. Java install
자바는 위 홈페이지에서 간단히 다운받을 수 있습니다.
linux에서는
위와 같이 tar.gz 파일로 받게 됩니다. 따라서 압축을 먼저 풀어주고!
명령어를 차례대로 입력해서 /usr/bin/jvm 디렉토리 밑으로 압축 해제한 파일을 옮겨줍니다.
그리고 처음 다운로드 한 경우에는 명령어 설정이 되어있지 않기 때문에 명령어 설정을 해주면 됩니다.
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jre1.8.0_231/bin/java 1
2. apktool
apktool을 깔기 위해서는 java 1.8 이상 버전이 필요합니다. 따라서 java -version를 통해 자바 버전 확인을 먼저!!
https://ibotpeaches.github.io/Apktool/
이후 위 홈페이지에서 버전별 apktool을 다운로드 받을 수 있습니다. install 메뉴로 가보면 OS별로 친절하게 설명도 되어있습니다..!
1) windows
먼저 여기 를 우클릭해서 "다른이름으로 링크 저장"을 눌러서 "apktool.bat"으로 저장을 해줍니다.
https://bitbucket.org/iBotPeaches/apktool/downloads/
다음은 위 홈페이지에서 apktool-2를 다운로드 받습니다. 이 친구도 이름을 apktool.jar로 바꾸어줍니다!! 그리고 위에서 받은 .bat 파일과 .jar 파일 두개를 모두 C:\Windows 폴더 아래에 넣어주도록 합니다.
다음, cmd에서 apktool 명령을 입력했을 때 위와 같이 나온다면 windows에서 apktool은 설치가 완료 되었습니다.
2) linux
리눅스도 두개의 파일을 다운로드하는 부분 까지는 윈도우와 동일합니다. 위와 같은 링크로 접속하면 다운로드 할 수 있습니다! (apktool.bat 대신에 그냥 apktool로만 저장해주면 됩니다)
이름을 바꿔주고 나면 루트권한으로 두 파일을 /usr/local/bin 디렉토리 아래로 옮겨줍니다.
그리고 chmod 777 or chmod +x를 통해 실행권한을 주면
리눅스에도 설치 완료했습니다!
3. dex2jar
https://github.com/pxb1988/dex2jar
여기서 가장 최신 버전의 dex2jar를 설치하면 끝입니다. 실행파일이 아니라 쉘 스크립트로 실행이 되기 때문에 리눅스의 경우 alias로 path를 지정해 주거나 윈도우에서는 환경변수 지정을 해주어야 편리하게 사용이 가능할 것 같습니다..
sh d2j-dex2jar.sh -f ~ / path / to / apk_to_decompile.apk
깃헙에 있는 사용방법입니다. 좀... 길죠... 아 그리고 윈도우는 d2j-dexjar.sh가 아니라 .bat을 사용해야합니다!
리눅스는 위와같이, 윈도우는
저는 doskey를 이용해서 별명을 지어줬는데 다른방법이 있으면 다르게 해도 무관합니다!
4. jd-cmd
드디어 마지막... jd-cli를 설치하도록 합시다
https://github.com/kwart/jd-cmd/releases/tag/jd-cmd-0.9.2.Final
위 깃헙에서 받을 수 있습니다. 그리고 dex2jar와 같이
명령어를 설치해주면 이제 모든 툴 세팅이 완료되었습니다!!
자세한 사용법에 대해서는 나누어 글을 올리도록 하겠습니다.
+) 추가사항
https://biji-jjigae.tistory.com/38
doskey 명령어 컴퓨터 재부팅시에도 유지하는 방법
그리고 apkstudio라는 좋은... 툴이 있다는 것을 이걸 다 설치하고 알았습니다!!
https://github.com/vaibhavpandeyvpz/apkstudio/releases
여기서 최신 버전을 다운로드 받아주면 됩니다ㅏ
실행시켜보면 뭔 ~~~ missing이라고 나오는데 그때 확인을 누르면 위와 같은 창이 나옵니다. 위에 있는 Java, apktool, jadx, adb, uber apk signer 을 설치해주면 위 툴을 사용할 수 있습니다~~~ 근데 사실상 jadx 하나만 있어도... 충분...
'Mobile' 카테고리의 다른 글
[안드로이드 모바일 앱 모의해킹] 환경설정(drozer) (0) | 2020.03.19 |
---|---|
libpcap Android build(arm cross compile) (0) | 2020.03.13 |
[Android_Frida] 시작하기 (0) | 2019.12.31 |
[Android] ADB install (0) | 2019.12.31 |
[Android] Nexus5 Rooting (0) | 2019.12.31 |