안드로이드 애플리케이션 리버스 엔지니어링
도서명:안드로이드 애플리케이션 리버스 엔지니어링
저자/출판사:남대현,류재형/에이콘출판
쪽수:292쪽
출판일:2017-03-30
ISBN:9788960779983
목차
1장. 안드로이드 기본 개념
__1.1 안드로이드 필수 구성 요소
____1.1.1 액티비티
____onCreate( )
____startActivity( )
____startActivityForResult( )
____setResult( )
____액티비티 생명주기
____1.1.2 서비스
____서비스 생명주기
____1.1.3 브로드캐스트 수신자
____1.1.4 콘텐츠 제공자
2장. 안드로이드 리버스 엔지니어링을 위한 환경 구축
__2.1 디바이스 설정
____2.1.1 ADB 접속을 위한 USB 디버깅 활성화
____2.1.2 루팅
____2.1.3 다양한 명령을 사용하기 위한 BusyBox 설치
__2.2 안드로이드 SDK, NDK 설치
____2.2.1 윈도우 환경에서 안드로이드 SDK 설치
____자바 버전 확인
____자바 다운로드
____자바 설치
____2.2.2 안드로이드 스튜디오를 이용한 안드로이드 SDK 설치
____안드로이드 스튜디오 다운로드
____안드로이드 SDK 설치
____환경 변수 등록
__2.3 우분투 환경에서 안드로이드 SDK 설치
____2.3.1 자바 버전 확인 및 설치
____자바 버전 확인
____자바 설치
____자바 버전 확인
____2.3.2 안드로이드 SDK의 다운로드와 설치
____2.3.3 안드로이드 SDK 환경 변수 설정
____2.3.4 안드로이드 NDK 다운로드 및 설치
____압축 해제
____2.3.5 안드로이드 NDK 환경 변수 등록
3장. 안드로이드 앱 구성 및 코드 분석
__3.1 안드로이드 APK 구성
__3.2 APK Repackage
____3.2.1 Apktool
__3.3 무료 도구를 활용한 코드 분석
____3.3.1 JD - GUI
____실행 문제 해결
____3.3.2 JADX
____3.3.3 Androguard
____3.3.4 바이트코드 뷰어
__3.4 상용도구를 활용한 코드 분석
____3.4.1 JEB1
____쉬운 해킹대회 문제 풀어보기
____3.4.2 JEB2
____UI 배치
____아티팩트 추가
____애플리케이션 동적 디버깅
____SETPROPEX를 이용한 설정값 변경
____CVE-2016-5195 취약점을 이용한 설정값 변경
____JEB2 동적 디버깅 기능 사용 관련 문제 해결
____JEB2를 이용한 애플리케이션 디버깅
4장. 안드로이드 앱 정적 분석
__4.1 안드로이드 APK 추출
____4.1.1 ADB
____4.1.2 아스트로 파일관리자
__4.2 분석방지 솔루션 우회
____예제 1
____예제 2
__4.3 안드로이드 애플리케이션 정적 분석
____예제 1
____예제 2
__4.4 난독화된 애플리케이션 분석
____예제 1.
____예제 2.
5장. 안드로이드 앱 동적 분석
__5.1 안드로이드 LKM을 활용한 동적 분석
____5.1.1 모바일 기기에 맞는 커널 다운로드
____5.1.2 툴체인 다운로드
__5.2 Java API Hooking을 활용한 동적 분석
____5.2.1 Cydia Substrate를 이용한 자바 API 후킹
____주입기 설치
____자바 API 후킹 모듈 개발
____분석 및 코딩 시작
____직접 만들어보자
____5.2.2 Xposed를 이용한 자바 API 후킹
____개발 환경 구축
____모듈 업데이트
____후킹 모듈 개발
__5.3 Frida 활용한 동적 분석
____5.3.1 Frida 설치
____5.3.2 Frida-trace를 이용한 시스템콜 후킹
____5.3.3 Frida 모듈을 이용한 스크립트 작성
____5.3.4 Frida를 이용한 자바 후킹
6장. 안드로이드 앱(APK) 디버깅
__6.1 GDB를 이용한 Android Remote Debugging
____6.1.1 ADB를 이용한 안드로이드 기기 접속
__6.2 IDA Pro를 이용한 APK 디버깅
____6.2.1 환경 변수 설정
____6.2.2 앱 설치
____6.2.3 디버깅 시작
____6.2.4 문제 해결
__6.3 IDA 프로를 이용한 classes.dex & 공유 라이브러리 디버깅
____6.3.1 환경 변수 등록확인
____6.3.2 Android NDK 설치
____6.3.3 환경 변수 등록
____6.3.4 컴파일
____6.3.5 custom_rules.xml 수정
____6.3.6 두 개의 IDA 인스턴스 생성
__6.4 IDA Pro를 이용한 JNI 공유 라이브러리 디버깅 방법 1
____6.4.1 환경 구축
____6.4.2 Linker 복사
____6.4.3 공유 라이브러리 복사
____6.4.4 도구 개발
____6.4.5 Android.mk 파일 작성
____6.4.6 Makefile 작성
____6.4.7 컴파일
____6.4.8 안드로이드 기기 작업
____6.4.9 ADB 포트 포워딩
____6.4.10 IDA Pro 설정
____6.4.11 브레이크 포인트 설정
____6.4.12 디버그 설정
____6.4.13 안드로이드 기기 작업
____6.4.14 포트 포워딩
__6.5 IDA Pro를 이용한 JNI 공유 라이브러리 디버깅 방법 2
__6.6 IDA Pro를 이용한 JNI 공유 라이브러리 디버깅 방법 3
____6.6.1 STEP 1 달빅 런타임 후킹
____6.6.2 STEP 2 SDK에 포함된 ddms 실행
____6.6.3 STEP 3 안드로이드 서버 전송 및 실행
____6.6.4 STEP 4 adb forward
____6.6.5 STEP 5 애플리케이션 설치 및 실행
____6.6.6 STEP 6 IDA 실행 및 디버거 연결
__6.7 마치며