Android Internals Vol 1 (파워 유저 관점의 안드로이드 인터널)

Android Internals Vol 1 (파워 유저 관점의 안드로이드 인터널)

$33.38
Description
『Android Internals』Vol. 1. 이 책은 세계에서 인기 있는 모바일 운영체제의 내부 동작을 문서화한 첫 번째 책이다. 장황한 코드를 직접 살펴보지 않고, 상세한 도표와 주석, 직접 해보는 실험을 통해 안드로이드의 다양한 컴포넌트의 흐름과 로직을 쉽게 설명한다.
저자

조나단레빈

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

목차

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(AndroidInterfaceDefinitionLanguage)
__바인더(Binder)
____짧은역사
____그러면정확하게바인더는무엇일까?
____바인더사용하기
____바인더추적하기
__system_server
____시작및흐름
____시작동작변경하기
__요약__이번장에서사용된파일
__참조

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

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

출판사 서평

★요약★

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

★이책에서다루는내용★

■파티션및파일시스템
■부트프로세스
■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장으로구성된한권의책으로만들려고했다).여기서는리눅스레벨과프레임워크레벨에서의보안기능에대해자세히알아본다.또한’승인’된방법및뜻밖의방법으로안드로이드디바이스를루팅하는방법을살펴본다

★옮긴이의말★

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