[목차]

 

 

 

1. 진단 관련 도구

   - 안드로이드 스튜디오 + SDK

   - 에뮬레이터

          - AVD 

          - NOX

   - ADB

   - DEX2JAR

   - JAVA 디컴파일러

         - ja-gui

         - JADX

   - JEB

   - 리버싱 도구

          - Apktool

          - Frida

- Android-Logviewer

- fiddler

 

 

2. 도구 별 환경 구성

- 공통 사항 : 환경 변수 설정

 

 

 

 


 

 

 

[진단 관련 도구]

 

 

 

1. 안드로이드 스튜디오 + SDK

우선 안드로이드 SDK(Software Development Kit)는

안드로이드 애플리케이션 개발자들을 위한

Java 기반의 개발 도구이며 안드로이드 스튜디오 설치 시

함께 설치가 가능하다.

 

아래 에뮬레이터 항목에서 기술하겠지만

이전에는 안드로이드 스튜디오를 설치할 때

함께 설치할 수 있는 SDK 폴더 내 별도의

SDK Manager.exe와 AVD Manager.exe

파일을 통해 AVD라는 가상 에뮬레이터를 세팅,

사용할 수 있었는데

 

지금은 SDK-Platform으로 통합되어

안드로이드 스튜디오 내에 내장되어 있는

SDK Manager, Device Manager를

통해 가상 에뮬레이터(AVD)의 세팅 및

사용이 가능하다.

 

앞으로의 실습 과정에서 두 가지

가상 에뮬레이터(AVD, Nox)를

함께 사용할 것인데

 

AVD 사용 시, 안드로이드 스튜디오

설치 과정에 따라 실행이 안 되는 등

관련한 이슈가 많아 미리 서술한다.

 

안드로이드 스튜디오는 아래 경로에서 다운 가능하며

https://developer.android.com/studio

 

 

설치 시 주의사항으로

(1) 안드로이드 스튜디오 설치 경로에 한글이 있으면 안 됨

(2) SDK 설치 경로에 한글 및 공백이 있으면 안 됨

(3) SDK 관련 사항

최신 버전 안드로이드 스튜디오의 경우

SDK 설치 시 제공되던

 

 

AVD manager.exe

SDK manager.exe 제공 안됨

(안드로이드 스튜디오 안에

SDK Platform으로 통합 제공)

 

* AVD 관련 에러 나는 경우 에러 원인 확인 로그 파일 경로

> C:\Users\타쿠대디\AppData\Local\Google\AndroidStudio2021.2\log\idea.log

 

 

 

 

 

2. 에뮬레이터

(1) AVD 가상 단말기

ㄱ. 최신 버전의 안드로이드 스튜디오 설치 시

SDK-Platform을 통해 AVD

세팅 환경을 제공하며

 

진단할 앱에 맞는

안드로이드 기기 버전(패키지)

설치 후 사용할 수 있고,

 

 

ㄴ. 이전 안드로이드 스튜디오를 설치하는 경우

함께 설치할 수 있는 SDK 폴더 내

SDK Manager.exe와 AVD Manager

가 함께 생성되는데

 

 

먼저 SDK Manager.exe를

실행 후 진단할 앱에 맞는

안드로이드 기기 버전(패키지)

를 설치,

 

 

 

다음으로 AVD Manage.exe를

실행 후 새 가상 디바이스 생성

(SDK Manager.exe를 통해

설치한 패키지만 사용 가능)

 

 

생성 후 실행시키면

 

 

이처럼 작동하며

안드로이드 스튜디오와

연동되기 때문에

 

소스코드를 보면서

앱 진단이 가능

 

 


 

(2) NOX

루팅 된 단말기가 없는 경우

대체재로 많이 활용되는 툴이 바로

녹스 앱 플레이어

 

다운로드 :

https://kr.bignox.com/

 

환경설정 방법은

진단 실습 시 별도 기술함

 

 

 


 

 

3. ADB

: 안드로이드 단말기 또는 에뮬레이터(Emulator)를

관리, 통신할 수 있는 다목적 명령 줄 도구로

주요 기능으로는 기기 연결 확인, Shell 접속,

데이터 추출/삽입(루팅 된 기기인 경우),

애플리케이션 설치/실행 및 삭제 등이 있다.

 

이미지 출처 : 보안프로젝트

 

# 다운로드 :

https://developer.android.com/studio/releases/platform-tools

 

 

ADB를 사용하면

PC에서 단말 기기 및 에뮬레이터에 연결할 수 있는데

이를 위해선 ADB에서 해당 개체를 인식해야 한다.

 

기기를 연결하는 경우, 해당 제조사에서 제공하는

USB 드라이버를 PC에 설치해야 인식이 가능하다.

 

연결이 성공적으로 되었다면

adb devices 명령어로 인식된 기기나

에뮬레이터 목록을 확인할 수 있고

 

 

인식된 개체가 하나라면 ‘adb shell’ 명령으로

shell 연결이 가능하지만 인식된 개체가 여러 개일 경우

‘-s’ 옵션 뒤에 연결하려는 개체명을 입력해 주어야 한다.

 

 

안드로이드 단말기 연결 시

연결하려는 기기의 설정에서

USB debugging 모드를 활성화해야 하는데

해당 모드를 활성화시키는 절차는 다음과 같다.

 

 

설정 > 시스템 정보 > 휴대전화 정보 >

빌드번호 여러 번 클릭 후 개발자 옵션 메뉴 활성화 >

개발자 옵션 > USB 디버깅 기능 활성화

 

 

연결 후 터미널에서

C: > adb devices

 

 

 

 

 

4. dex2jar

: apk 파일의 압축을 풀면 나오는 dex 파일을

jar 파일로 변환시켜주는 도구.

 

dex 파일은 Dalvik Executabled의 약자로

안드로이드의 가상 머신인 Dalvik이 인식할 수 있도록

.class 파일을 바이트 코드로 변환한 파일인데

(Java로 짜인 코드가 컴파일되어

바이트 코드로 변환 된 소스 파일)

 

이 dex 파일을 jar(Java Archive) 바이트 코드로

변환시켜 준다.

https://sourceforge.net/projects/dex2jar/files/

 

이미지 출처 : 보안프로젝트

 

 


 

 

[JAVA 디컴파일러]

 

 

5. jd-gui

위 항목에서 변환시킨 jar 파일을 볼 수 있는

소스코드 뷰어.

 

dex 파일을 자바 바이트 코드로 바꾼 후

jd-gui로 볼 수 있다.

 

다운로드 :

http://java-decompiler.github.io

 

이미지 출처 : 보안프로젝트

 

 

 

6. JADX

jd-gui와 비슷한 프로그램이지만

jd-gui보다 디컴파일 결과가 좋고

dex2jar을 통하지 않고 디컴파일이 가능하다.

 

다운로드 :

https://github.com/skylot/jadx

 

 

 

 

7. JEB

실무에서 많이 사용하는 상용화 유료형 디컴파일러로

위 두 가지 툴 보다 디컴파일 결과가 좋고

동적 디버깅 등 추가로 지원하는 기능이 많아

모바일 앱 분석 시 가장 많이 사용되는 디컴파일러다.

 

다운로드 :

https://www.pnfsoftware.com/jeb

 

 

 

 


 

 

 

[리버싱 도구]

 

 

8. apktool

: 대표적인 안드로이드 앱 리버싱 도구로

APK 파일 내 주요 소스를 추출할 수 있고

추출된 코드를 수정 후 rebuild 할 수 있도록

개발된 도구

이미지 출처 : 보안프로젝트

활용 예) APK 파일을 디컴파일하여

'classes.dex'라는 앱의 소스코드를

추출한 뒤 분석, 리패키징하여

패치된 apk 파일 생성

 

다운로드 :

https://ibotpeaches.github.io/Apktool/

 

 

 

 

 

9. Frida

Frida는 리버싱 과정에서

동적분석(Dynamic Binary Instrumentation - DBI)을

가능하게 해주는 도구로

패키지와 서버로 구성된다.

 

분석하는 장치에는 패키지를 설치,

분석의 대상이 되는 단말기기나 에뮬레이터에는

서버를 삽입 후 구동한다.

 

다운로드 :

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

(다운로드 시 단말기기, AVD의 운영체제에

맞는 버전으로 받아야 함)

 

* 자세한 패키지 설치 방법 :

https://frida.re/docs/installation/

 

* 서버 설정 방법 :

https://frida.re/docs/android/

 

 

서버 실행 방법은

다운받은 frida-server 파일을 adb를 통해

연결된 장치로 넣어준 뒤

C:> adb push '파일경로\frida-server' /data/local/tmp

 

frida-server 파일이 있는 폴더로 이동 후

실행 권한을 준 뒤 실행시키면 끝

 

 


 

 

10. Android-Logviewer / adb -d logcat / DDMS

: 로그를 볼 수 있는 툴

 

이미지 출처 : 보안프로젝트

 

개발자들이 로그를 소스코드에 기록하는 경우가 있는데

(주석 처리는 실행 도중 정보가 나오지 않지만

로그는 실행 도중에 정보가 나옴(에러, 버그의 이유 등))

 

개발자 입장에서 로그는 같은 개발자들에게

굉장히 유용한 정보로 활용되지만

반대의 경우는 정보 노출의 취약점으로 작용된다.

예) 개인정보, 대칭키 등의 값이 로그에 노출된다

 

로그 분석이 필요한 이유.

 

 


 

 

 

11. Fiddler

이미지 출처 : 보안프로젝트

: 디버깅 & 프록시 툴 (버프로 대체 가능)

다음 경로에서 받아 설치해 사용

https://www.telerik.com/download/fiddler

 


 

 

 

[도구 별 환경 구성]

 

 

 

* 공통사항 : 환경 변수 설정

- 대상 : adb, dex2jar, jd-gui, jadx, apktool

 

시스템 속성 > 고급 > 환경변수 >

(단축키 : 윈도우 검색 창(win+r 또는 ctrl + esc)에

sysdm.cpl 또는 sysdm.cpl ,3 입력)

 

 

> 시스템 변수 > Path > 실행시킬 프로그램이 있는 경로 추가

 

 

* 환경 변수 경로 추가 시 주의사항

1. 경로명 중간에 공백(띄어쓰기)이 있는 경우

쌍 따옴표로 묶어서 설정

 

2. 경로 명에 한글이 포함되어 있는 경우

에러 발생 가능성이 있기 때문에

되도록 영문 경로 사용 추천

 

 

이후 cmd에서 호출 시 정상 사용 가능

- apktool

 

 

- adb

 

- dex2jar

 

- jadx

 

- jd-gui

 

 

이 외 도구의 경우

실습 과정에서 별도로 다룰 예정

 

728x90
반응형

+ Recent posts