TOP
0
0
魅麗。花火原創小說66折起
最強Android書:架構大剖析(簡體書)
滿額折

最強Android書:架構大剖析(簡體書)

人民幣定價:89 元
定  價:NT$ 534 元
優惠價:87465
缺貨無法訂購
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

本書首次將android的內部工作機制整理成了文檔,揭示了Android中各種組件的執行邏輯和工作流程。本書通過實驗而不是源碼,將Android系統層層拆解,令讀者深刻透徹地掌握Android系統的內部技術:以init進程為切入點詳細闡述了Android的啟動過程和關鍵服務;從Android作為資源協調者和服務提供者的角度,重點分析了servicemanager 和system_server 這兩個進程。同時,作者比較了Linux與Android系統的區別,並對Android系統的安全性做了深入的闡述。本書採用了大量的圖表示例和實驗,表達新穎清晰,讓讀者能直觀地掌握Android 的技術精髓。本書適合廣大移動開發者及對Android系統感興趣的人員閱讀。

作者簡介

JonathanLevin是一位經驗豐富的技術培訓師和諮詢師,他的關注點是"三大系統"(Windows、Linux和MacOS)以及它們的移動版本(Android和iOS)原理。15年來,Jonathan堅持傳播內核工程和修改技術的真知灼見,在DefCON會議上發表了很多技術演講。他是Technologeeks.com公司的創始人和首席技術官(CTO)這是由一些志趣相投的專家合夥創辦的公司,致力於通過技術培訓傳播知識,通過諮詢解決棘手的技術難題。他們的專業領域覆蓋軟件架構中的實時及其他關鍵部分、系統/核級編程、調試、逆向工程以及性能優化。
譯者簡介
崔孝晨,教師,專注于信息安全領域,研究深入。翻譯出版了多部著作,包括《黑客大追蹤》、《Android安全攻防實戰》,並致力於推動安全技術的發展。

名人/編輯推薦

本書作者以研究操作系統並從事相關培訓工作為生,是業內著名的操作系統專家、極客、果粉……著有多本操作系統的暢銷書。本書是他針對Android系統寫的第一本書。根據以往讀者的反饋,在本書的內容上摒棄了以源代碼講解的方式,而改用實驗的方法,直接拉低了學習的門檻――讀者無須費力也可根據實驗輕鬆地理解掌握Android內部技術的精髓!如業內眾大咖所說:本書是目前了流的Android書,也是學習Android內部技術的不二之選!
本書被美國中情局,國內部分手機廠商作為內部員工學習教材。

寫作特色
√ 拋棄傳統以源代碼講解的形式,直接從實驗入手,讀者無須瞭解代碼也能深入掌握Android技術精髓
√ 各章節相對獨立,可以跳躍式閱讀
√ 大量使用圖表、圖片,直觀易懂
√ 作者有多年培訓經驗,針對讀者的痛點下工夫,思路清晰、表述到位

推薦序一

Android是當今最主流的移動端操作系統,然而作為安全研究者要找到一本適合入門學習的書籍卻並不容易。本人總結其原因有三:第一,Android操作系統更新週期較短,特別是近兩年Android自4.4.X更新至7.1版,它的系統安全特性已經發生了翻天覆地的變化,許多Android書籍自開始撰寫到完工就需要幾年時間,如果是英文書籍還涉及翻譯的時間,通常讀者拿到書的時候,內容已經比較過時了。第二,由於Android系統的複雜性,對作者的技術要求比較高。作者不僅要熟悉其原生(Native)層,對其Java層等組件也需要有瞭解。市面上的很多Android書籍,很少能較好地覆蓋每一個面向,或者是只有一個側重點,這導致讀者即便通讀全書,也無法瞭解Android的全部。第三,很多書籍從Android源代碼入手來講解原理,雖有足夠的深度,但略嫌乏味,會給讀者一種紙上談兵的感覺,給讀者的閱讀增添了困難,令他們很難全部讀完並完全理解。

《最強Android書:架構大剖析》是我見過的Android書籍中,最適合安全研究人員閱讀的一本。此書的作者Johnathan Levin和譯者崔孝晨都是本人的朋友,相信與這兩位打過交道的朋友都會發現,他們精力非常充沛,雖然已經從事安全研究十幾年,但對新技術仍然充滿了熱情和好奇心。在面對面交流的時候,他們經常對著一個技術點侃侃而談、樂此不疲。而作者Johnathan Levin更是在本書中引入“互聯網思維”,為本書設立了網站http://newandroidbook.com,並不定期撰寫文章,聽取讀者的反饋和建議,把Android最新的、讀者最想瞭解的特性分析更新到本書中。以上特性,保證了本書與那些“拿到就過時”的Android書籍相比,具有明顯的優勢。

一本好書,光與時俱進、有技術深度還遠遠不夠,如何把一個複雜的操作系統的內部機制和原理,合理有序、循序漸進地傳授給讀者,也是一個需要推敲的問題,而這就不僅僅是要求作者技術功底深厚那麼簡單了。Johnathan Levin多年從事技術培訓工作,這些積累的培訓經驗確保了本書的易讀性:細心的讀者很快就能發現,本書的每一章節都相對獨立,無論是順序閱讀或者跳著看都沒有太大的問題;書中大量使用圖表、圖片來敘述,讓讀者更直觀地掌握各個知識點,並且通過實驗的方式加深對各個知識點的印象,充分掌握一些比較重要的概念。而譯者崔孝晨同志更是在確保把原書的含義完整無誤地傳授給讀者的同時,加入了許多中國元素,在表達上更為生動形象――這樣的合作,無疑是中國讀者的一大福音。

Android的安全防護機制是多維的,我的團隊成員何淇丹、劉耕銘在Mobile Pwn2Own 2016中遠程攻破搭載最新Android 7.1的Nexus 6p設備,從攻破所利用的漏洞來看,很明顯,安全研究者需掌握Android瀏覽器、框架組件、內核等安全特性並找出Java層、Web相關、原生層甚至內核層的漏洞,並串聯在一起才能對Android進行有效的遠程攻擊、突破沙盒,最終實現提權。本書對Android安全特性的分析也是一大亮點,很好地覆蓋了目前針對Android的攻擊面。相信閱讀本書一定會對您的工作有所幫助。

陳良 科恩實驗室高級研究員
2018年6月於上海


推薦序二

自2008年Google發佈Android的第一版以來,時至今日,無論是在系統特性、用戶規模還是生態規模上,它都取得了驚人的進展,獲得了移動操作系統領域的絕對優勢。Android是開源的,這對於任何想要一探究竟的人都提供了非常大的便利,但同時由於Android系統本身日趨複雜,對大家也是個很大的挑戰―― 一不小心就會陷進代碼的汪洋大海之中。

Jonathan Levin作為操作系統領域的專家,依賴自己深厚的技術功底和多年的研究,獨闢蹊徑地分別從高級用戶和開發者的角度來探索Android系統。讀者手上的這本書是從高級用戶的角度開始Android的探索之旅的。這本書我首先接觸的是英文版,現在非常高興看到這本書的中文版面世,能讓更多的讀者受益。

本書特別適合高級用戶(MIUI稱這部分用戶為發燒友)學習使用。目前不少手機用戶對各種硬件拆機評測很熟悉,
這本書有如一個軟件拆解,作者有如庖丁解牛一般,把運行在手機中的Android系統逐層拆解。在簡要地介紹了Android的版本演化歷史之後,作者先從分區和文件系統開始,詳細介紹了各個分區的作用,各個分區上存儲的內容和數據,還用實驗詳細演示了如何製作一個刷機包。在介紹了這些靜態的軟件組成之後,作者開始詳細探索這些靜態的內容是如何動態工作的。書中以關鍵的init進程作為切入點,詳細闡述分析了Android的啟動過程;接著分析了啟動過程中的關鍵服務:原生服務和Android框架服務。操作系統有兩個重要的角色:資源的協調者和服務的提供者。作者重點分析了servicemanager和system_server這兩個進程,它們構成了Android系統所扮演的兩個角色的基石。

對Android系統有一點瞭解的讀者可能知道,Android是基於Linux內核的,那麼Android和一個常用的Linux系統有何不同?作者接下來就從一個Linux用戶的視角來觀察和分析Android系統,剝去構築在Linux內核之上的那層Android外衣,讓一個熟悉Linux系統的人躍躍欲試:“我也能構建一個Android系統”。本書最後概要性地講述了一些Android的安全機制,雖然只有短短的一章,但是非常清晰,尤其是對selinux的描述。從上述的脈絡可以看出,作者動靜結合,抽絲剝繭一般把運行在手機裡的Android系統清晰地展示在大家眼前。

本書雖然是從高級用戶的角度來探索Android系統的,但也很適合Android開發者,尤其是Android系統工程師學習。要想剖析一個系統,得先瞭解使用它。這本書有如一盞指路明燈,讓我們在Android代碼的汪洋大海之中始終明確前進的方向。略有遺憾的是這本書來得有點晚,使我們在學習Android系統的過程中走過一些彎路,不過今天的讀者可以幸運地站在大師的肩膀上了!在小米MIUI,我們也打算使用其中的部分內容作為內部培訓材料。如果您正好打開本書看到了這篇序,誠邀您一起開始我們的Android系統探索之旅,這將是一個妙趣橫生的旅程。謝謝!

汪文俊 MIUI系統平臺部總經理
2018年6月


譯者序

市面上關於Android的書籍可謂汗牛充棟,我甚至都不敢把書名Android Internals按照慣例譯為《深入理解Android系統》――重名的書太多了。那麼為什麼還要把這本書介紹給國內的讀者呢?因為市面上絕大多數的Android書籍都是從程序員的視角展開的,入門的門檻相對比較高。儘管開發Android App的程序員們自然應該對Android系統有一個深入的理解,但這並不意味著其他人並不需要理解Android系統。比如,電子取證人員,他們需要對Android中的文件系統及數據存放位置有一個清晰的認識,以便從中提取相關數據;喜歡折騰的技術發燒友,root掉系統之後一般都喜歡自己修改一下系統,比如禁用一些開機啟動項之類的。如果無須依賴額外的App,只需一個文本編輯器就能完成相關修改,甚至給系統換上自己的開機動畫豈不是很酷……諸如此類。但這些人中只有很少的一部分接受過正規的編程訓練,因此市面上大部分的書籍對他們來說難度就太大了。

本書的作者Jonathan Levin,也是暢銷書Mac OS X and iOS Internals: To the Apple's Core(中文版為《深入解析Mac OS X & iOS操作系統》)一書的作者。按Jonathan自己的說法,Mac OS X and iOS Internals: To the Apple's Core一書的讀者反饋中,反映最激烈的問題是:太技術化了!許多讀者讀起來感到頭大!所以在這本後繼的Android Internals中,他把不需要代碼就能表達清晰以及與開發人員關係不太緊密的部分放在這一本書中,而把剩下的、與開發緊密相關的部分放在了另一本書中。這一點從本書英文版的副標題“Power User”就可以看出來。那麼什麼是“Power User”呢?如果一定要和傳統的桌面系統的用戶相對應,這個“Power User”就相當於系統管理員(administrator)的角色。相對于普通用戶,他需要對系統有更加深入的理解,能對系統進行更加詳細的配置,因而也被認為可以擁有較高的權限(比如root)――本書的部分實驗確實需要擁有root權限,且第8章中也專用了一個小節討論root這一主題。

有人問,既然是講系統內部實現,不講編程又是如何把它講清楚的呢?答案是使用實驗。本書的內容是根據作者多年講課的講義,整理、精選 而來,通過在ADB(Android調試橋)中執行各種命令的方式(相對於閱讀代碼),比較直觀地向讀者揭示Android內部的工作原理。效果如何呢?別看廣告,看療效。上次曝出的CIA Value7的相關內容顯示,這本書已經被CIA私下盜版,用於CIA特工的內部培訓了。而可憐的Jonathan Levin既不敢告CIA侵權,又不能告WikiLeaks……,只好在本書官網上提供了已經被洩密的2015年6月版的英文版的免費下載鏈接――與其去WikiLeaks下載,不如上官網下載。不過讀者也不必沮喪,自我開始本書的翻譯以來,幾乎每個季度都會收到Jonathan Levin發來的大量更新――其中包括歷次Android系統更新的新內容,以及書中已經發現的一部分錯誤的更新(包括一些我發現的錯誤:)),使得我也不得不多次將譯稿做一些必要的返工,目前出版的中文譯本是以2016年11月底的最新版本為准(更新至Android Marshmallow

目次

關於本書 XVIII
第1章 Android體系結構的變革之路 1
1.1 Android系統版本的歷史變遷 2
Froyo(凍酸奶) 3
Gingerbread(薑餅人) 3
Honeycomb(蜂巢) 4
Ice Cream Sandwich(冰激淩三明治) 5
JellyBean(果凍豆) 5
KitKat(奇巧) 6
Lollipop(棒棒糖) 7
Marshmallow(棉花糖) 8
Nougat(牛軋糖) 9
1.2 Android與Linux 11
並非另一個Linux發佈版本 11
然後Android就登場了 12
與Linux的異同 13
Android的框架 15
Dalvik虛擬機 18
JNI 19
原生二進制可執行文件 20
Bionic 22
Android的原生庫 25
源自其他項目的原生庫 27
硬件抽象層 28
Linux內核 29
1.3 Android的衍生產品 30
穀歌官方的衍生產品 30
非穀歌官方的衍生品 33
1.4 對前方道路的思考 36
兼容64位 36
ART(Android運行時) 37
多畫面 38
把Android用作台式機操作系統 38
Android和ARA項目 39
Brillo 40
本章小結 40
參考文獻 41
第2章 Android的分區和文件系統 43
2.1 分區架構 43
需要許多單獨分區的原因 44
GUID分區表 45
閃存(Flash Storage)系統 46
文件系統 46
Android設備中的分區 49
2.2 Android文件系統中存儲的內容 53
root文件系統 53
/system分區 54
/data分區 65
/cache分區 71
/vendor目錄 72
SD卡 73
2.3 受保護的文件系統 74
OBB:Opaque Binary Blobs 74
ASec:Android安全存儲(Android Secure Storage) 76
2.4 Linux偽文件系統 78
cgroupfs 78
debugfs 79
functionfs(/dev/usb-ffs/adb) 80
procfs(/proc) 81
pstore(/sys/fs/pstore) 81
selinuxfs(/sys/fs/selinux) 82
sysfs(/sys) 83
本章小結 84
參考文獻 84
第3章 Android的啟動、備份和重置 86
3.1 Android系統鏡像 87
Boot Loader 89
Boot鏡像 93
內核 95
RAM disk 97
/System和/Data分區鏡像 99
3.2 啟動過程 101
固件啟動過程 101
內核啟動過程 105
3.3 關機和重啟 109
3.4 應用的備份和恢復 112
命令行工具 113
本地備份 114
監視備份操作 117
3.5 系統重置(recovery)和升級 119
OTA(Over-The-Air)升級包 121
製作你自己的ROM 124
製作ROM時可用的網上資源 128
本章小結 130
參考文獻 130
第4章 init 132
4.1 init的角色和任務 132
系統屬性 134
.rc文件 140
總結:init的執行流程 146
4.2 init和USB 150
4.3 init的其他角色 152
ueventd 153
watchdogd 154
本章小結 154
本章討論所涉及的文件 155
第5章 Android的守護進程 156
5.1 core類中的服務 156
adbd 156
servicemanager 160
healthd 161
lmkd(Android L) 165
logd(Android L) 168
vold 173
5.2 網絡相關服務 182
netd 182
mdnsd 187
mtpd 187
racoon 188
rild 189
5.3 圖形及多媒體服務 190
surfaceflinger 190
bootanimation 192
mediaserver 194
drmserver 196
5.4 其他服務 197
installd 197
keystore 200
debuggerd 204
gatekeeper(Android M) 207
sdcard 208
Zygote 211
本章小結 214
本章討論涉及的文件 214
參考文獻 215
第6章 框架服務的架構 216
6.1 再探servicemanager 217
6.2 服務調用的模式 222
優點和缺點 224
序列化和Android接口定義語言(AIDL) 225
6.3 Binder 228
簡明歷史 228
那麼,Binder究竟是什麼 229
使用Binder 230
分析Binder的當前使用情況 231
6.4 system_server 232
啟動及執行流程 232
修改啟動時的行為 234
本章小結 237
本章討論涉及的文件 237
參考文獻 237
第7章 從Linux角度看Android 238
7.1 重溫/proc 239
符號鏈接:cwd、exe和root 240
fd 243
fdinfo 245
status 247
7.2 用戶模式內存管理 254
虛擬內存的分類和生命週期 254
內存的相關術語 258
內存不足時的應對方案 266
7.3 跟蹤系統調用 269
toolbox ps工具 269
wchan和syscall文件 270
strace工具 271
本章小結 272
參考文獻 272
第8章 Android安全性 274
8.1 移動安全威脅建模 275
攻擊向量 275
攻擊之道 278
8.2 Linux層上的安全措施 281
Android使用Linux權限的方式 281
Linux權能 289
SELinux 294
其他值得注意的特性 301
8.3 Dalvik層上的安全措施 305
Dalvik層上的權限 305
Dalvik代碼簽名 310
8.4 用戶層上的安全措施 312
鎖屏機制 312
支持多用戶 316
密鑰管理 318
證書管理 318
密鑰和私鑰管理 322
8.5 存儲安全 323
加密/data分區 323
基於文件的加密(Nougat 7.1) 326
Direct Boot (Nougat的新特性) 326
啟動過程中加強驗證 327
8.6 Root Android設備 328
在設備啟動環節中root 329
利用安全漏洞root 331
Root對安全的影響 332
本章小結 334
參考文獻 334

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
缺貨無法訂購

暢銷榜

客服中心

收藏

會員專區