로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

Android Internals Vol.1

 [파워 유저 관점의 안드로이드 인터널]
   
지은이 조나단 레빈   |   출판사 에이콘  |   발행일 2016년 08월 26일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 33,000원29,700원 10%
마일리지 5% 1,650원
발행일 2016-08-26
ISBN 8960778974 | 9788960778979
기타정보 번역서 | 284쪽 | 일반
예상출고일 1~2일 이내 (근무일기준)
배송비 무료배송
   
운영체계(OS)
종합지수 0p
   
 

[ 요약 ]

안드로이드의 기반인 리눅스 시스템 및 구성 요소, 그리고 안드로이드 가상 머신을 소스 레벨에서 설명하고 있기 때문에 안드로이드의 내부 동작 모습을 깊이 살펴보거나 안드로이드를 디바이스에 포팅하고자 하는 사람 및 안드로이드 보안에 관심이 있는 모든 사람에게 많은 도움이 될 것이다.


[ 이 책에서 다루는 내용 ]

■ 파티션 및 파일시스템
■ 부트 프로세스
■ Init 및 Init 설정 파일
■ /system/bin의 네이티브 데몬
■ 프레임워크 서비스 아키텍처와 servicemanager
■ 리눅스 인터페이스를 통한 모니터링
■ 보안


[ 이 책의 구성 ]

1장에서는 운영체제를 소개한다. OS 버전별로(지금은 사용되지 않는 프로요(Froyo)부터 L 버전까지) 개선된 내용을 살펴본다. 또한 고수준의 관점에서 아키텍처를 설명하고, 안드로이드 스택의 각 레이어들을 알아보면서 리눅스의 토대를 살펴본다. 그런 다음 구글과 다른 벤더(예를 들면, 아마존 FireOS)의 안드로이드 변형 제품을 살펴보고, 향후의 방향과 몇 가지 논의에 대한 결론을 내린다.

2장에서는 좀 더 기술적으로 들어간다. 특히 안드로이드 파티션과 파일시스템을 다룬다. 안드로이드에서 사용되는 파티셔닝 스키마(불행하게도 표준화되어 있지 않다)와 파일시스템(Ext4와 F2FS)을 살펴본다. 다음으로 특정 시스템 디렉터리나 파일이 포함되어 있는지 알아내고자 할 때 유용한 ‘파일시스템 내용을 탐색하는 방법’을 알아본다. 그리고 포렌식을 수행할 경우에 편리하게 이용할 수 있는 내장 앱 데이터 디렉터리를 살펴본다. 또한 이 장에서는 안드로이드의 ‘보호된 파일시스템(OBB와 ASEC)’을 다룬다. 물론 루팅된 디바이스에서는 이 파일시스템이 보호되지 않는다. 마지막으로 리눅스의 가상(pseudo) 파일시스템인 cgroupfs, debugfs, procfs, sysfs 등을 설명한다.

3장은 이전에 배운 내용을 토대로 한다. 특히 파티션을 주로 다루면서 안드로이드 부트 프로세스 내에서의 파티션 역할에 대해 설명한다. 또한 안드로이드 부트 이미지(일부에서는 ‘ROM’이라는 용어로 사용되는데, 이는 틀리다)에 대해 설명하고, 디바이스 부트 파티션으로 전송하는 방법을 알아본다. 이 밖에 기본 안드로이드 부트 로더를 설명하고(좀 더 깊이 있는 내용은 이 책과 관련된 웹사이트에서 찾아볼 수 있다) 부트 이미지의 다른 컴포넌트(커널, 디바이스 트리 및 initramfs)를 상세하게 설명한다. 그리고 실험을 통해 이 컴포넌트들을 풀거나, 커스터마이즈하거나, 다시 묶는 방법을 설명한다(부트로더는 언록되어 있다고 가정한다). 또한 OTA 업데이트를 통해 이미지를 전송하는 방법과 백업 및 복구 프로세스 및 셧다운 프로세스에 대해서도 살펴본다.

4장에서는 하나의 프로세스(/init)에 대해서만 살펴본다. 이 프로세스는 UN*X에서와 같이 유저 모드에서 시스템을 시작할 책임이 있다. /init.rc 파일 구문을 자세히 살펴보면서 시동 프로세스를 자세히 설명한다. 또한 시스템 속성 관리 및 하드웨어 변경 내역 감시(ueventd)와 같은 /init의 다른 역할을 자세히 설명한다.

5장에서는 네이티브 서비스에 대해 논의한다. 예를 들어 네이티브 서비스는 /init.rc에 나와 있고, 리눅스 바이너리로 적재된다(system_server 내의 스레드로 적재되는 달빅-레벨 프레임워크와 대비된다. 달빅-레벨 프레임워크는 2권에서 다룬다). 또한 이번 장에서는 디바이스에서 볼 수 있는 모든 데몬에 대한 참조를 다룬다.

6장에서는 안드로이드에서 모든 프레임워크의 기반 역할을 하는 servicemanager 및 system_service 프로세스를 설명하면서 안드로이드 프레임워크 서비스 아키텍처에 대해 다룬다. 이번 장에서는 바인더에 대해 설명하지만, 대부분의 내용은 2권에서 살펴볼 것이다. 하지만 독자들이 안드로이드 인터널 커뮤니케이션과 리모트 프로시저 호출이 동작하는 방식에 대한 충분한 통찰력을 얻을 수 있도록 충분히 설명한다.

7장에서는 리눅스의 관점에서 안드로이드를 바라본다. 즉, 리눅스 레벨의 도구와 /proc 파일시스템을 통해 안드로이드 시스템 프로세스와 앱을 살펴본다. 또한 네이티브 레벨에 디버깅하기 위한 리눅스 시스템의 거의 모든 기술을 다룬다.

마지막 장인 8장에서는 보안에 대해 논의한다. 이 장은 미리보기용으로 만들었다(원래는 이 책을 21장으로 구성된 한 권의 책으로 만들려고 했다). 여기서는 리눅스 레벨과 프레임워크 레벨에서의 보안 기능에 대해 자세히 알아본다. 또한 ’승인’된 방법 및 뜻밖의 방법으로 안드로이드 디바이스를 루팅하는 방법을 살펴본다


[ 지은이의 말 ]

안드로이드는 오픈소스 시스템이지만, 과연 얼마나 많은 사람들이 안드로이드의 작동 원리를 이해하기 위해 실제로 자리에 앉아 자바, C, C++, XML로 만들어진 수백만 개의 라인을 훑어보겠는가?
안드로이드는 오픈소스지만 대부분의 사람들은 자바, C, C++, XML로 쓰여진 수백만 개의 라인을 모두 훑어보지 못한다.
이 책은 전 세계에서 가장 인기 있는 모바일 운영체제의 내부 동작을 문서화한 첫 번째 책이다. 장황한 코드를 직접 살펴보지 않고, 상세한 도표와 주석, 직접 해보는 실험을 통해 안드로이드의 다양한 컴포넌트의 흐름과 로직을 쉽게 설명한다. 이 책과 관련된 웹사이트(http://NewAndroidBook.com/)에서는 자료, 읽을거리 및 코드 샘플 등 다양한 추가 자료를 무료로 제공한다.
이 책에서는 Nexi, 삼성 갤럭시 S 시리즈, NVidia 쉴드, 아마존 킨들, HTC One M8, 안드로이드 에뮬레이터 디바이스에서 구동되는 롤리팝을 포함한 안드로이드의 모든 버전을 다룬다.
안드로이드 전체를 상세히 살펴보기 위한 시리즈의 첫 번째 책으로, 2권(프로그래머 관점의 안드로이드 인터널)은 1권에서 다루지 않았던 프레임워크, 입력, 오디오, 비디오, 네트워크 아키텍처를 꼭 필요한 코드와 함께 심도 있게 살펴볼 예정이다.

1. 안드로이드 아키텍처의 진화 __안드로이드 버전의 이력
____프로요
____진저브레드
____허니콤
____아이스크림 샌드위치
____젤리빈
____키켓
____롤리팝 ____마시멜로
__안드로이드 대 리눅스 ____리눅스의 또 다른 배포판이 아니다
____그러고 나서 안드로이드가 왔다
____리눅스와의 공통점과 차이점
____안드로이드 프레임워크
____달빅 가상 머신
____JNI
____네이티브 라이브러리
____바이오닉(Bionic)
____안드로이드 네이티브 라이브러리
____외부 네이티브 라이브러리
____하드웨어 추상화 레이어
____리눅스 커널
__안드로이드 파생물
____구글에서 만든 파생물
____구글이 아닌 곳에서 만든 파생물
__생각해보기
____64비트 호환성
____안드로이드 런타임(ART)
____분할-화면
____데스크톱 OS로서의 안드로이드
____안드로이드와 프로젝트 아라
____브릴로
__요약
__참조 2. 안드로이드 파티션 및 파일시스템
__파티셔닝 스키마
____별도의 파티션에 대한 필요성
____GUID 파티션 테이블
____플래시 저장 시스템
____파일시스템
____안드로이드 디바이스 파티션
__안드로이드 파일시스템 콘텐츠
____루트 파일시스템
____/system
____/system/bin
____/system/xbin
____/system/lib[64] ____/system/etc
____/data
____/data/data
____/data/misc
____/data/system
____/cache
____/vendor
____SD 카드
__보호된 파일시스템
____OBB
____ASec
__리눅스 가상 파일시스템 ____cgroupfs
____debugfs
____functionfs(/dev/usb-ffs/adb) ____procfs(/proc)
____pstore(/sys/fs/pstore)
____SELinuxfs(/sys/fs/selinux)
____sysfs(/sys)
__요약
__참조 3. 안드로이드 부팅, 백업 및 복구
__안드로이드 이미지
____부트로더
____부트로더 이미지 ____부트로더 잠금
____부트 이미지
____커널
____디바이스 트리(ARM) ____램디스크
____시스템 및 데이터 파티션
__부트 프로세스
____펌웨어 부트
____커널 부트
__종료 및 재부팅
__안드로이드 백업 및 복구 ____커맨드 라인 도구
____로컬 백업
____백업 동작 모니터링
__시스템 복구 및 업데이트
____OTA 업데이트
____OTA 업데이트 프로세스
____이미지 커스터마이징
____이미지 변경을 위한 리소스
__요약
__참조
4. init
__init의 역할과 책임 ____시스템 프로퍼티
____.rc 파일
____종합: init의 흐름
__Init 및 USB __init의 다른 역할
____ueventd
____watchdogd __요약
__이번 장에서 설명한 파일들 5. 안드로이드 데몬
__핵심 서비스 ____adbd
____healthd
____lmkd?(안드로이드 L)
____logd(안드로이드 L)
____vold
__네트워크 서비스
____netd
____mdnsd
____mtpd
____racoon
____rild
__그래픽 및 미디어 서비스
____부트애니메이션
____mediaserver
____drmserver
__다른 서비스들
____installd
____Commands
____키스토어
____debuggerd[64] ____sdcard
____자이고트[64]
__요약
__이번 장에서 설명한 파일들
__참조 6. 프레임워크 서비스 아키텍처
__서비스 매니저 다시 살펴보기
__서비스 호출 패턴
____장단점들
____직렬화와 AIDL(Android Interface Definition Language)
__바인더(Binder)
____짧은 역사
____그러면 정확하게 바인더는 무엇일까?
____바인더 사용하기
____바인더 추적하기
__system_server
____시작 및 흐름
____시작 동작 변경하기
__요약 __이번 장에서 사용된 파일
__참조

7. 리눅스 렌즈를 이용해 안드로이드 살펴보기
__/proc, revisited
____심링크: cwd, exe, root
____fdinfo
____status
____pid, tid, tgid 및 ppid 정리하기
__스레드 상태 및 컨텍스트 스위칭
__사용자 모드 메모리 관리
____가상 메모리 분류 및 생명주기
____메모리 메트릭
____아웃 오브 메모리 조건
__시스템 호출 추적하기
____toolbox ps 툴
____wchan 및 syscall
____strace 툴
__요약
__이번 장에서 사용된 참조 및 설명한 파일

8. 안드로이드 보안
__모바일 보안 위협 모델링
____공격 경로
____로드맵
__리눅스 레벨의 보안
____리눅스 퍼미션
____리눅스 케이퍼빌리티
____SELinux
____주목할 만한 다른 특징들
__달빅 레벨의 보안
____달빅 레벨 퍼미션
____달빅 코드 서명
__사용자 레벨 보안
____잠금 화면
____멀티-유저 지원
__키 매니지먼트
____인증서 관리
____비밀 및 개인 키 관리
__스토리지 보안
____/data 암호화
____시큐어 부트
__안드로이드 루팅
____루트로 부트하기
____취약점을 악용해 루팅하기
__요약
__참조

★ 지은이 소개 ★

조나단 레빈(Jonathan Levin)
10대 때부터 해킹(대부분 좋은 의미의 해킹)을 시작했고, 1993년에는 셸상에서 2400 전송 모뎀을 가진 XT의 작동 방식을 알기 위해 노력했다. 오로지 man 페이지에만 의지한 채, 이 모든 과정을 통과해야만 했다.
그 후로 20년 동안 OS 분야에는 많은 변화가 있었다. 이 기간 동안 유닉스, 리눅스, 윈도우, OS X을 다뤘다. 초창기에 보안 컨설팅 및 교육 분야에 종사했으며, 지금은 OS 전반에 걸친 컨설팅 및 교육을 하고 있다. 이 과정에서 보안은 결국 ‘내부를 보호하는 것’이라는 사실을 깨달았다. 지금은 몇몇 사람들과 함께 시작한 테크놀로긱스 닷컴(Technologeeks.com)의 최고 기술 책임자(CTO)로 일한다.
책을 쓰는 일은 다소 새로운 것이었다. 처음에는 애플의 OS와 관련해 『Mac OS X and iOS Internals』(와일리, 2012)를 썼는데, 매우 좋은 평을 받았다. 힘든 과정이기는 했지만, 굉장한 즐거움을 느끼기도 했다. 이제는 책을 쓰는 즐거움에 중독돼 안드로이드에 관련된 작업을 하게 됐으며, 이에 대한 첫 결과물이 바로 이 책이다. 이 책은 또한 셀프 출판에 대한 첫 시도였다. 이 작업을 마치고, MOXil의 2판을 쓰는 도중에 ‘마시멜로’가 출시되었다. 이제는 안드로이드 마시멜로가 안정화됐기 때문에 이 책의 시리즈인 2권(프로그래머 관점의 안드로이드 인터널)도 곧 출간될 예정이다.


★ 옮긴이의 말 ★

2003년 시작된 안드로이드는 이제 스마트폰 사용 인구의 82%가 사용하는 대중적인 모바일 OS로 발전했다. 스마트폰 이외에도 셋톱 박스 등 다양한 디바이스에 포팅된 안드로이드를 더하면 이 비율이 더욱 높아진다. 안드로이드 OS 시장이 커짐에 따라 안드로이드를 해킹하는 기법도 교묘해지고 있다. 오픈소스인 안드로이드는 누구나 쉽게 소스에 접근할 수 있기 때문에 보안을 위협하는 해킹도 다양하게 시도되고 있다. 안드로이드는 리눅스 OS를 기반으로 하기 때문에 리눅스 OS와 안드로이드 가상 머신의 해킹 기법이 모두 적용될 수 있다. 또한 안드로이드는 오픈소스기 때문에 소스를 자세히 살펴보면 누구나 디바이스에 포팅할 수 있고 이를 해킹할 수도 있다. 이 책은 안드로이드 기반인 리눅스 시스템 및 구성 요소와 안드로이드 가상 머신을 소스 레벨에서 설명한다. 주로 안드로이드 기반 시스템을 좀 더 깊이 공부하고자 하는 사람들에게 적합하다. 다시 말해 리눅스 OS와 자바 및 안드로이드 가상 머신에 대한 기본 지식이 있는 사람들을 대상으로 하는 책이다. 저자는 이 책을 약 3권의 시리즈로 출판할 계획이라고 한다. 그 첫 번째인 이 책은 안드로이드 운영체제의 디자인, 파일시스템의 구조, 부트 순서 및 네이티브 서비스와 함께 안드로이드 동작에 영향을 미치는 리눅스 및 관련 내용에 대해 살펴본다. 2권과 3권에서는 프로그래머 관점에서 안드로이드 프레임워크 구조를 소스 코드 레벨에서 살펴본다. 이 책의 내용은 최신 안드로이드 N 업데이트가 반영돼 있다.


★ 옮긴이 소개 ★

이지훈
아이폰/안드로이드 앱 및 서비스로 다양한 수익 모델을 창출하기 위해 노력하고 있지만 뜻대로 되지 않아 번역 및 저술을 열심히 하려고 하는 40대 개발자다. 한국에서 60대까지 개발자로 일하는 것이 목표다.
저서로는 『나홀로 개발자를 위한 안드로이드』(에이콘, 2011), 『Java 프로그래밍 입문』(북스홀릭퍼블리싱, 2013), 『프로그래머를 위한 안드로이드』(정보문화사, 2015) 등이 있다.
등록된 서평이 없습니다.
리눅스의 신...
정준석
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
이것이 우분투 리눅스다...
우재남
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
ARM 리눅스 커널...
윤석훈, 문영일, 구본규, 유희재
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(0)
회원평점   회원서평수 0
조나단 레빈 의 최근 저서
 
*OS Internals Vol.3
45,000원
(10%↓+5%)
 
에이콘 출판사의 신간
자바 데이터 분석
존 R. 허바드 [옮긴이] 김명훈 저
31,500원
(10%↓+5%)
 
보안 빅데이터 분석 플랫폼 구축과 활용
김대용 저
31,500원
(10%↓+5%)
 
Functional Programming in C++
이반 추키츠 [옮긴이]김점갑 저
31,500원
(10%↓+5%)
 
스프링 부트 2 레시피
마틴 데이넘 [옮긴이]최정호, 임진욱, 김명훈 저
27,000원
(10%↓+5%)
 
사운드 디자인
앰버 케이스, 애런 데이 저
25,200원
(10%↓+5%)
 
이메일주소수집거부