길벗·이지톡

도서 IT전문서/IT입문서 모바일
좋은 애플리케이션과 나쁜 애플리케이션 디컴파일링 안드로이드
정 가
33,000원
I S B N
9788966184347
출 간
2012-09-03
분 량
352쪽
지 은 이
가드프리 놀란 (Godfrey Nolan)
난 이 도
중급
부 록
소스 코드

소스 코드와 개발 노하우를 보호하고 디컴파일링에 강력하게 대응하는 방법을 자세하게 소개한다.

내가 만든 소스 코드를 지키려면 먼저 상대가 어떻게 뚫고 들어오는지를 알아야 한다. 

안드로이드 애플리케이션 소스 코드가 어떻게 파괴되는지 그리고 어떻게 하면 막을 수 있는지 알아본다. 

 

안드로이드 애플리케이션은 모바일 기기에서 동작하며 쉽게 접근이 가능하고 역공학을 통해서 원래의 소스 코드를 알아내는 것도 쉽다. 디컴파일이라는 것은 기계어 형태의 코드를 사람이 읽을 수 있는 형태로 변환하는 과정이다. 실행 파일이나 자바 클래스 파일, DLL 파일 등을 디컴파일하게 되면 원래의 소스 코드와는 사뭇 다른 형태의 코드를 얻을 수 있다. 이 코드는 비록 불완전하고 읽기에도 쉽지는 않지만 그래도 기계어에 비하면 원래의 코드를 알아내는데 훨씬 더 수월한 편이다.  

 

이 책 디컴파일링 안드로이드에서는 다른 일반적인 출판물에서는 쉽게 볼 수도 없으며 다루지 못하고 있는 내용을 설명하고 있다. 원래의 소스 코드를 얻어내기 위해서 노력하는 많은 사람들이 사용하는 도구나 기법을 재조명하고 이들부터 개발자가 힘들여 만든 안드로이드 애플리케이션의 코드를 보호할 수 있는 난독화와 같은 기법을 아울러 설명하고 있다. 

디컴파일링 안드로이드는 일반적인 안드로이드 프로그래밍 가이드북이 아니다. 일반적으로 프로그래밍 책은 개발자의 아이디어를 어떻게 소스 코드로 구현하는지 설명하지만 이 책은 정 반대이다. 이 책을 통해서 안드로이드 옵코드(opcode)들을 원래의 소스 코드로 변환하고, 이를 통해서 프로그램을 개발한 사람이 어떤 생각을 가지고 있었는지 추측하게 된다. 따라서 언어 구조를 구체적으로 다루는 대신 DVM과 옵코드에 관련된 내용 위주로 자세히 설명하고 있다. 이 책에서 중요한 것은 언어의 문법이 아니라 저수준에서 가상 머신이 어떻게 동작하느냐이다. 

 

결론적으로 저자는 이 책을 통해 많은 개발자들이 힘들게 만든 안드로이드 애플리케이션을 소중하게 생각하고 스스로를 어떻게 하면 지킬 수 있는지 그 길을 제시하고 있다.

 

 

이 책을 통해 배울 수 있는 것들

 

- 안드로이드 애플리케이션을 디컴파일하고 보호하는 도구 및 기법

- 잠재적인 보안 위협을 진단하고 피할 수 있는 팁

- JVM과 Dalvik VM의 차이점에 대한 분석

- 안드로이드 디컴파일러 및 난독화 도구를 만드는 자세한 방법

- 자바 바이트 코드와 옵코드에 대한 이해가 쉬우면서도 자세한 설명 

- DEX 파일과 옵코드에 대한 구조를 설명하고, 자바 클래스 파일과의 차이점을 비교 

- 안드로이드 APK 파일을 디컴파일하는 다양한 예제

 

목차

Chapter 01 디컴파일링의 기초

01_ 컴파일러와 디컴파일러
02_ 가상 머신 디컴파일러
03_ 왜 자바인가?
04_ 왜 안드로이드인가?
05_ 디컴파일러의 역사
06_ 디컴파일에 관련된 법적 문제
07_ 도덕적 문제
08_ 여러분 스스로를 보호하는 방법
09_ 정리


Chapter 02 기계 속의 유령

01_ 태생적으로 디컴파일에 취약한 구조를 가진 JVM
02_ 간단한 스택 머신 구조의 JVM
03_ 클래스 파일의 내부
04_ 정리


Chapter 03 DEX 파일 구조

01_ 기계에서 사는 유령(제2탄)
02_ DEX 파일을 각각의 영역으로 나누기
03_ 정리


Chapter 04 디컴파일링에 유용한 프로그램들

01_ APK 다운로드
02_ APK 파일 디컴파일링
03_ 디어셈블러
04_ 디컴파일러
05_소스 코드 보호하기
06_정리


Chapter 05 디컴파일러 디자인

01_ 설계에 대한 기본 지식
02_ 무엇이 문제인가
03_ (디)컴파일러를 만들기 위해 필요한 도구들
JLex와 CUP 210
04_ 파서 디자인 결정하기
05_ 파서 디자인
06_ 정리


Chapter 06 디컴파일러 구현

01_ DexToXML
02_ DexToSource
03_ 예제 1 : Casting.java
04_ 예제 2 : Hello World
05_ 예제 3 : if 구문
06_ 재구성(Refactoring)
07_ 정리


Chapter 07 예가 아니면 보지도, 듣지도, 말하지도, 행하지도 말라

01_ 난독화 사례 연구
02_ 근거없는 주장들
03_ 해결책 1 : ProGuard
04_ 해결책 2 : DashO
05_사례 연구에 대한 리뷰
06_ 정리

Appendix 옵코드(opcode) 표
더보기접기

저자

ㆍ지은이 가드프리 놀란 (Godfrey Nolan)

지은이 소개

MI, Southfield의 RISS LLC 창립자인 동시에 회장이다. 소프트웨어 개발 팀에서 20년 이상 일한 경험을 가지고 있다. Ireland Dublin에서 태어났으며 University College Dublin에서 기계공학을 전공하고 West of England 대학에서 컴퓨터 과학 석사를 마쳤다. 또한 2004년 Apress에서 출판된 Decompiling Java의 저자이기도 하다.

 

저서

<<Decompiling Java>>


연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.