안드로이드 취약점 점검 시 자주 사용하거나 알아두면 유용한 adb 명령어에 대해 정리할 예정이다!

먼저 adb가 무엇인지부터 짚고 넘어가자.

adb란?

: Android Debug Bridge의 약자로서 명령줄 도구
: 앱 개발자가 데스크톱 컴퓨터를 사용해 연결된 Android 디바이스와 통신하거나 디바이스 애뮬레이터를 실행할 수 있도록 도와주는 도구
: 안드로이드 취약점 점검 시에는 루트 권한으로 명령어를 사용하기 위해 루팅된 폰에서 많이 사용한다.


adb 명령어

아직 adb를 사용해 본적이 없다면 이전 포스팅에 설명한 설정과정부터 진행하고 와야한다.

지난번 포스팅에서도 설명했던 명령어도 포함하여 설명한다.

  1. 연결된 device 목록 확인

      adb devices 

  1. 연결된 디바이스의 리모트 쉘 실행

1)  adb shell 

한개의 디바이스나 애뮬레이터가 연결되어 있으면 기본 명령어로 실행이 가능하지만 1개이상이면 실행이 불가능하다.
(LG로 시작하는 기기는 usb 연결 단말기이고, 127.0.0.1은 녹스 실행한 가상 에뮬레이터이다. )

따라서, 옵션 -d (usb 연결 단말기)나 -e (녹스 등의 가상에뮬레이터)를 사용해서 연결해야한다.

2) adb -d shell → usb 단말기 연결


3) adb -e shell → 가상 에뮬레이터 연결


** 이 때도, 둘 이상의 에뮬레이터가 연결되어 있으면 에러를 반환하므로 주의한다.

  1. adb 버전 확인

     adb version 
    

    



  1. 연결된 장치에 apk 파일을 설치하는 명령어 
     adb install [apk파일경로\파일명] 



  5.  로컬 컴퓨터에 존재하는 파일을 디바이스로 복사하는 명령어

     adb push [로컬파일 경로] [디바이스경로] 






  6. 디바이스에 존재하는 파일을 로컬 컴퓨터로 복사하는 명령어


      adb pull [디바이스 경로] [로컬컴퓨터 경로] 




7. 디바이스에 존재하는 애플리케이션(apk)의 저장 경로 확인

      adb pm list packages -f | grep [패키지명] 


녹스로 가상 디바이스 사용 시 adb devices에서 녹스를 인식하지 못한다.

그래서 따로 명령어를 입력해야 연결가능!


  • NOX adb 연결

        adb connect 127.0.0.1:62001 

  • NOX adb 연결 확인

        adb devices 



JADX

: 이전 포스팅에서 설명한 jd-gui와 동일하게 java 디컴파일러
    ** 하지만 jd-gui 보다 디컴파일 결과가 좋고, dex2jar를 사용하지 않고도 디컴파일이 가능하여 더 많이 사용

다운로드 경로: https://github.com/skylot/jadx

1) jadx-gui.jar 파일 실행 


2) 디컴파일하고자 하는 apk 파일을 가져오면 디컴파일 끝!


JEB2

: java 디컴파일러

JEB는 상용화툴이라 앞서 설명한 두개의 디컴파일러보다 조금 더 기능도 많고 디컴파일 결과가 젤 좋다. 
다음에 설명할 동적 디버깅 또한 지원하는 툴로 모바일 애플리케이션 분석 시 가장 많이 사용하는 디컴파일러이다.

(해당 경로에서는 Free trial만 제공한다)

1) jeb.exe 실행



2) 디컴파일하고자 하는 apk 파일을 가져오기 후 Bytecode 선택 (smali 코드 추출)


3) 커서를 해당 페이지에 놓고 q를 눌러 디컴파일 끝~!




+ Recent posts