본문 바로가기

해킹/Mobile application Hacking

[ Mobile App Hacking ] - Jadx-gui & Frida 설치 및 세팅

모바일 앱 해킹을 본격적으로 시작하기 위해선 nox player와 안드로이드 스튜디오 빼고도 몇가지가 더 필요합니다.

 

그 중, 대표적인 2가지가 Jadx-gui라고 불리는 APK 디컴파일 프로그램과 후킹을 도와주는 Frida 입니다. 

 

차후에, 게임 해킹을 할 때는 IDA Pro라는 프로그램을 추가로 설치해주면 됩니다.

 

 

Jadx-gui 설치 (윈도우용)

https://github.com/skylot/jadx/releases/download/v1.1.0/jadx-1.1.0.zip

이 링크를 타고 jadx-gui를 다운받은 후, 압축을 해제 해줍니다.

 

 

Jadx로 APK 파일 디컴파일하기

압축을 푼 폴더의 bin 폴더에 들어가

jadx-gui.bat 파일을 실행시켜 줍니다.

 

그리고 디컴파일하고 싶은 APK 파일을 열어줍니다.

 

그럼 APK가 디컴파일되고 분석하고싶은 파일을 클릭하면 코드가 보여집니다.

 

안드로이드 단말기에 설치되어 있는 모바일 앱의 APK 파일은 기본적으로 /data/app/패키지 이름 디렉토리에 저장되는데, 

단말기와 CMD가 연결된 adb shell을 이용해 아래 명령어로 다운받는다.

adb pull "APK 파일이 존재하는 절대 경로"

 

APK 파일은 모바일 앱을 설치할 때 사용하는 파일로 ZIP 형태로 압축되어 있다.

추출한 apk 파일을 압축 프로그램으로 열어보면 인증 파일, 리소스 파일, AndroidManifest.xml 파일, dex 파일이 포함되어 있다.

- META-INF : 모바일 앱의 배포자 관련 인증

- res : 모바일 앱의 리소스

- AndroidManifest.xml : 모바일 앱의 전반적인 정보, 권한, 패키지 이름, 컴포넌트 정보

- classes.dex :  가상 머신에서 동작한는 실행 파일, 기계어 코드

 

jadx-gui : APK > 자바 소스코드

jadx-gui 도구를 활용하면 분석할 APK 파일을 지정할 수 있다.

 

Jadx-gui의 기능

  • APK, dex, aar, zip 등 파일을 자바 소스코드로 변환
  • AndroidManifest.xml 리소스 파일 확인
  • 난독화 해제 지원
  • 함수 선언부 이동
  • 소스코드 하이라이팅
  • 키워드 검색

APK 파일을 선택하면 자동으로 디컴파일하여 원본 수준의 자바 소스코드를 확인할 수 있으며

하단의 AndroidManifest.xml 파일의 내용도 확인할 수 있다.

 


 

 

 

다음은 Frida 를 설치해보겠습니다.

Frida는 웹 해킹에서 했던 Burp Suite처럼 단말기에서 나가는 앱 정보를 가로채고 수정할 수 있는 도구입니다.

Frida 설치

python이 있다면 cmd 창에 해도 되지만,

python이 없다면 python을 선행 설치 후 pip 명령어로 frida를 Windows에 설치해줍니다

pip install frida
pip install frida-tools

 

전 python이 이미 설치되어있어서 바로 pip를 이용해 cmd에서 frida와 frida-tools를 설치했습니다.

 

잘 설치되었는지 확인하고 싶다면

frida --version

이 명령어를 입력해주면 됩니다.

 

전 16.1.1 버전이네요

 

 

단말기 (Nox Player)에 Frida 서버 설치

https://github.com/frida/frida/releases

이 주소에서 frida 서버 파일을 받아줍니다. 대신, 주의할 점은 받을 때 설치된 frida 버전과 같은 버전의 파일을 받아야 한다는 점입니다.

 

Releases · frida/frida

Clone this repo to build Frida. Contribute to frida/frida development by creating an account on GitHub.

github.com

전 frida-server-16.1.1-android-arm.xz 를 받아주겠습니다.

Nox에서는 x86버전을 이용해야 된다고 하네요

 

x86_64를 받아서 다운받은 파일의 압축을 풀어줍니다

그래도 여전히 안되네요 ^^

adb shell을 열고 다음 명령어를 입력하면 

getprop ro.product.cpu.abi

x86 이 출력되는 걸 볼 수 있습니다. 단말은 32bit였네요 ㅎㅎ...

다시 다운받아 줍니다.

완료되었으면 다음 명령어를 순차적으로 입력해줍니다

adb shell
cd /data/local/tmp
ls -al
chmod 777 frida-server-16.1.1
./frida-server-16.1.1 &
ps -ef | grep frida

만약 permission denied 에러가 뜬다면 

kill -9 [pid]

위 명령어를 통해 기존에 실행되고 있는 frida server를 죽이고 다시 실행시켜 봅니다

 

exit를 입력해 컴퓨터 cmd로 이동해서 이 명령어를 입력하면 단말기의 정보를 출력해줍니다.

컴퓨터와 단말기가 연결되었는지 확인할 수 있습니다.

frida-ps -Uai

 

입력하니 잘 나오는 것 같습니다.


<소스 참조>

  • Jadx-gui & Frida 설치 링크

https://hacked-by-minibeef.tistory.com/28

  • 안드로이드 후킹 설명

http://linforum.kr/bbs/board.php?bo_table=android&wr_id=731 

 

  • 안드로이드 디컴파일 방법

https://dazemonkey.tistory.com/166