注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)信息安全Android軟件安全權(quán)威指南

Android軟件安全權(quán)威指南

Android軟件安全權(quán)威指南

定 價(jià):¥95.00

作 者: 豐生強(qiáng) 著
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787121355202 出版時(shí)間: 2019-01-01 包裝: 平裝
開(kāi)本: 16 頁(yè)數(shù): 451 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)從平臺(tái)搭建和語(yǔ)言基礎(chǔ)開(kāi)始,循序漸進(jìn)地講解了Android平臺(tái)上的軟件安全技術(shù),提供了對(duì)Windows、Linux、macOS三個(gè)平臺(tái)的支持,涉及與Android軟件安全相關(guān)的環(huán)境搭建、文件格式、靜態(tài)分析、動(dòng)態(tài)調(diào)試、Hook與注入、軟件保護(hù)技術(shù)、軟件殼等主題,涵蓋OAT、ELF等新的文件格式。本書(shū)將Java與Native層的軟件安全技術(shù)分開(kāi)講解,加入了與軟件殼相關(guān)的章節(jié),內(nèi)容安排細(xì)致、合理。本書(shū)的每一章都以實(shí)例講解的方式來(lái)展開(kāi)內(nèi)容,實(shí)踐性較強(qiáng)。 本書(shū)適合Android開(kāi)發(fā)人員、安全研究人員及對(duì)Android系統(tǒng)安全感興趣的讀者閱讀。

作者簡(jiǎn)介

  網(wǎng)名非蟲(chóng)”,獨(dú)立軟件安全研究員,資深安全專(zhuān)家,ISC2016安全訓(xùn)練營(yíng)獨(dú)立講師,有豐富的軟件安全實(shí)戰(zhàn)經(jīng)驗(yàn)。自2008年起,在知名安全雜志《黑客防線(xiàn)》上發(fā)表多篇技術(shù)文章,從此踏上軟件安全研究道路,常年混跡于國(guó)內(nèi)各大軟件安全論壇,著有暢銷(xiāo)安全圖書(shū)《Android軟件安全與逆向分析》與《macOS軟件安全與逆向分析》。

圖書(shū)目錄

第1章 搭建Android程序分析環(huán)境
1.1 搭建Windows分析環(huán)境 1
1.1.1 安裝JDK 1
1.1.2 安裝Android SDK 2
1.1.3 安裝Android NDK 5
1.1.4 Android Studio集成開(kāi)發(fā)環(huán)境 6
1.1.5 創(chuàng)建Android模擬器 7
1.1.6 CygWin 9
1.1.7 Bash on Ubuntu on Windows 11
1.2 搭建macOS分析環(huán)境 12
1.2.1 安裝JDK 12
1.2.2 安裝Android SDK 14
1.2.3 安裝Android NDK 14
1.2.4 Android Studio集成開(kāi)發(fā)環(huán)境 15
1.3 搭建Ubuntu分析環(huán)境 15
1.3.1 安裝JDK 16
1.3.2 安裝Android SDK 17
1.3.3 安裝Android NDK 17
1.3.4 Android Studio集成開(kāi)發(fā)環(huán)境 18
1.4 常用逆向分析工具 19
1.5 常用Linux Shell命令 19
1.6 搭建源碼分析環(huán)境 20
1.6.1 在macOS中編譯Android源碼 20
1.6.2 在Ubuntu中編譯Android源碼 26
1.6.3 在Windows中編譯Android源碼 26
1.7 本章小結(jié) 27

第2章 如何分析Android程序
2.1 編寫(xiě)第一個(gè)Android程序 28
2.1.1 創(chuàng)建Android工程 28
2.1.2 編譯生成APK文件 31
2.2 破解第一個(gè)Android程序 35
2.2.1 破解入手 35
2.2.2 反編譯APK文件 35
2.2.3 分析APK文件 36
2.2.4 修改smali文件的代碼 44
2.2.5 重新編譯APK文件并簽名 45
2.2.6 安裝和測(cè)試 47
2.2.7 小結(jié) 48
2.3 本章小結(jié) 48

第3章 Dalvik可執(zhí)行格式與字節(jié)碼規(guī)范
3.1 Dalvik虛擬機(jī) 49
3.1.1 Dalvik虛擬機(jī)的特點(diǎn) 49
3.1.2 Dalvik虛擬機(jī)與Java虛擬機(jī)的區(qū)別 49
3.1.3 虛擬機(jī)的執(zhí)行流程 54
3.1.4 虛擬機(jī)的執(zhí)行方式 56
3.2 Dalvik語(yǔ)言基礎(chǔ) 56
3.2.1 Dalvik指令格式 57
3.2.2 DEX反匯編工具 58
3.2.3 Dalvik寄存器 59
3.2.4 寄存器命名法 61
3.2.5 Dalvik字節(jié)碼 61
3.3 Dalvik指令集 63
3.3.1 指令類(lèi)型 63
3.3.2 空操作指令 64
3.3.3 數(shù)據(jù)操作指令 64
3.3.4 返回指令 65
3.3.5 數(shù)據(jù)定義指令 65
3.3.6 鎖指令 66
3.3.7 實(shí)例操作指令 66
3.3.8 數(shù)組操作指令 66
3.3.9 異常指令 67
3.3.10 跳轉(zhuǎn)指令 67
3.3.11 比較指令 68
3.3.12 字段操作指令 69
3.3.13 方法調(diào)用指令 69
3.3.14 數(shù)據(jù)轉(zhuǎn)換指令 70
3.3.15 數(shù)據(jù)運(yùn)算指令 70
3.4 Dalvik指令練習(xí) 71
3.4.1 編寫(xiě)smali文件 71
3.4.2 編譯smali文件 73
3.4.3 測(cè)試運(yùn)行 73
3.5 本章小結(jié) 73

第4章 常見(jiàn)Android文件格式
4.1 庫(kù)文件 74
4.1.1 jar包 74
4.1.2 aar包 75
4.2 APK 78
4.2.1 APK文件結(jié)構(gòu) 78
4.2.2 APK文件的生成流程 79
4.2.3 APK的安裝流程 84
4.3 classes.dex 90
4.3.1 DEX文件結(jié)構(gòu) 90
4.3.2 DEX文件的驗(yàn)證與優(yōu)化過(guò)程 104
4.3.3 DEX文件的修改 108
4.3.4 MultiDex 111
4.4 AndroidManifest.xml 113
4.4.1 AndroidManifest.xml文件的格式 113
4.4.2 AXML文件格式 114
4.4.3 AXML文件的修改 121
4.5 resources.arsc 121
4.5.1 ARSC文件格式 122
4.5.2 ARSC文件的修改 128
4.6 META-INF目錄 128
4.6.1 CERT.RSA 128
4.6.2 MANIFEST.MF 129
4.6.3 CERT.SF 130
4.7 ODEX 132
4.7.1 生成ODEX文件 132
4.7.2 ODEX文件格式 132
4.7.3 將ODEX文件轉(zhuǎn)換成DEX文件 136
4.8 OAT 137
4.8.1 ART虛擬機(jī) 137
4.8.2 生成OAT文件 137
4.8.3 OAT文件格式 138
4.8.4 將OAT文件轉(zhuǎn)換成DEX文件 141
4.9 本章小結(jié) 143

第5章 靜態(tài)分析Android程序

5.1 靜態(tài)分析簡(jiǎn)介 145
5.2 閱讀smali代碼 145
5.2.1 smali文件結(jié)構(gòu) 145
5.2.2 循環(huán)語(yǔ)句 148
5.2.3 switch分支語(yǔ)句 153
5.2.4 try/catch語(yǔ)句 158
5.3 閱讀Java代碼 163
5.3.1 將DEX文件轉(zhuǎn)換成jar包 163
5.3.2 jar分析工具 163
5.4 代碼定位技巧 164
5.4.1 入口分析法 164
5.4.2 信息反饋法 165
5.4.3 特征函數(shù)法 165
5.5 使用JEB進(jìn)行靜態(tài)分析 165
5.5.1 安裝JEB 165
5.5.2 JEB的靜態(tài)分析功能 166
5.5.3 JEB的腳本化與插件 169
5.6 使用IDA Pro進(jìn)行靜態(tài)分析 170
5.6.1 IDA Pro對(duì)Android的支持 170
5.6.2 分析DEX文件 170
5.6.3 定位關(guān)鍵代碼 172
5.7 使用Androguard進(jìn)行靜態(tài)分析 174
5.7.1 安裝Androguard 175
5.7.2 Androguard的使用方法 175
5.7.3 使用androlyze.py進(jìn)行分析 179
5.8 本章小結(jié) 182

第6章 動(dòng)態(tài)分析Android程序
6.1 動(dòng)態(tài)分析框架 183
6.2 動(dòng)態(tài)分析技巧 189
6.2.1 代碼注入法 189
6.2.2 棧跟蹤法 192
6.2.3 Method Profiling 193
6.2.4 UI檢查 196
6.3 使用JDB動(dòng)態(tài)調(diào)試APK 198
6.4 使用JEB動(dòng)態(tài)調(diào)試APK 200
6.5 使用IDA Pro動(dòng)態(tài)調(diào)試APK 201
6.6 本章小結(jié) 203

第7章 ARM反匯編基礎(chǔ) 204
7.1 Android與ARM處理器 204
7.1.1 ARM處理器架構(gòu)概述 204
7.1.2 Android支持的處理器架構(gòu) 205
7.2 Android ARM EABI 206
7.2.1 armeabi 206
7.2.2 armeabi-v7a 207
7.2.3 arm64-v8a 208
7.3 ARM原生程序的生成過(guò)程 208
7.3.1 預(yù)處理 210
7.3.2 編譯 211
7.3.3 匯編 215
7.3.4 鏈接 215
7.4 ARM匯編語(yǔ)言 216
7.4.1 ARM匯編程序結(jié)構(gòu) 216
7.4.2 匯編指令 221
7.4.3 寄存器 223
7.4.4 處理器尋址方式 224
7.4.5 子程序參數(shù)傳遞 227
7.5 ARM匯編指令集 230
7.5.1 ARM指令集分類(lèi) 230
7.5.2 ARM指令編碼 231
7.5.3 ARM指令格式解析 233
7.5.4 常見(jiàn)ARM指令 234
7.6 Thumb匯編指令集 240
7.6.1 16位Thumb指令編碼 240
7.6.2 16位Thumb指令格式解析 241
7.6.3 32位Thumb指令編碼 242
7.6.4 32位Thumb指令格式解析 244
7.7 AArch64匯編指令集 246
7.7.1 AArch64指令編碼 246
7.7.2 AArch64指令格式解析 247
7.8 本章小結(jié) 250

第8章 Android原生程序開(kāi)發(fā)與逆向分析
8.1 原生程序開(kāi)發(fā) 251
8.1.1 原生程序工程 252
8.1.2 STL的選擇 253
8.1.3 JNI接口 254
8.1.4 編譯選項(xiàng)與配置 256
8.2 原生程序移植 256
8.2.1 ADT項(xiàng)目的移植 257
8.2.2 UNIX開(kāi)源項(xiàng)目的移植 258
8.2.3 CMake項(xiàng)目的移植 262
8.2.4 其他類(lèi)型項(xiàng)目的移植 264
8.3 原生程序入口函數(shù) 264
8.3.1 原生程序入口函數(shù) 264
8.3.2 so入口函數(shù) 269
8.4 原生程序文件格式 271
8.4.1 原生程序的文件類(lèi)型 271
8.4.2 AArch64 ELF文件格式 274
8.4.3 Program Header Table 278
8.4.4 Section Header Table 281
8.4.5 .dynamic節(jié)區(qū) 283
8.4.6 字符串表 285
8.4.7 符號(hào)表 286
8.4.8 got表與plt表 287
8.4.9 地址重定位表 291
8.5 原生程序逆向分析工具 295
8.5.1 NDK Toolchain 295
8.5.2 IDA Pro 297
8.5.3 Hopper 301
8.6 原生C程序逆向分析 302
8.6.1 編譯原生C程序 303
8.6.2 for循環(huán)分支結(jié)構(gòu) 305
8.6.3 while循環(huán)分支結(jié)構(gòu) 309
8.6.4 if……else分支結(jié)構(gòu) 312
8.6.5 switch循環(huán)分支結(jié)構(gòu) 316
8.6.6 優(yōu)化后的C程序 319
8.7 原生C++ 程序逆向分析 321
8.7.1 C++ STL的逆向分析 322
8.7.2 C++ 類(lèi)的逆向分析 327
8.7.3 C++ 程序的RTTI 332
8.8 原生so動(dòng)態(tài)庫(kù)逆向分析 336
8.9 本章小結(jié) 337

第9章 Android原生程序動(dòng)態(tài)調(diào)試
9.1 gdb調(diào)試器 338
9.1.1 ndk-gdb腳本 338
9.1.2 配置gdb調(diào)試器 339
9.1.3 gdb調(diào)試器的常用命令 340
9.1.4 使用gdb調(diào)試Android原生程序 342
9.1.5 gdb調(diào)試器的GUI前端 344
9.2 lldb調(diào)試器 346
9.2.1 配置lldb調(diào)試器 346
9.2.2 lldb調(diào)試器的常用命令 348
9.2.3 使用lldb調(diào)試Android原生程序 350
9.2.4 lldb調(diào)試器的GUI前端 353
9.3 使用IDA Pro調(diào)試Android原生程序 353
9.4 本章小結(jié) 358

第10章 Hook與注入
10.1 Hook的類(lèi)型 359
10.2 Xposed Hook框架 368
10.3 Hook場(chǎng)景與應(yīng)用 372
10.4 動(dòng)態(tài)注入 374
10.5 注入框架Frida 377
10.6 本章小結(jié) 386

第11章 軟件保護(hù)技術(shù)
11.1 軟件保護(hù)技術(shù)簡(jiǎn)介 387
11.2 軟件混淆技術(shù) 388
11.3 資源保護(hù) 401
11.4 完整性校驗(yàn) 403
11.5 反調(diào)試技術(shù) 404
11.6 運(yùn)行環(huán)境檢測(cè) 407
11.7 本章小結(jié) 411

第12章 軟件殼
12.1 Android軟件殼 412
12.2 軟件殼的特征與偵察 413
12.3 動(dòng)態(tài)加載型殼 418
12.4 代碼抽取型殼 425
12.5 代碼混淆殼 429
12.6 本章小結(jié) 451

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)