百人牛牛棋牌
Android軟件安全權威指南
  • 推薦2
  • 收藏9
  • 瀏覽866

Android軟件安全權威指南

豐生強 (作者)  潘昕 (責任編輯)

  • 叢  書:安全技術大系
  • 書  號:978-7-121-35520-2
  • 出版日期:2019-02-01
  • 頁  數:451
  • 開  本:16(185*235)
  • 出版狀態:上市銷售
  • 維護人:潘昕

相關圖書

加密與解密(第4版)

段鋼 (作者)

本書以軟件逆向為切入點,講述了軟件安全領域相關的基礎知識和技能。讀者閱讀本書后,很容易就能在逆向分析、漏洞分析、安全編程、病毒分析等領域進行擴展。這些知識點的相...

¥198.00

Kali Linux大揭秘

(美國)Raphael Hertzog,(美國)Jim O'Gorman (作者) 諸葛建偉 (譯者)

Kali Linux是設計用于數字取證和滲透測試的操作系統,本書是官方出版的僅有的一本著作。講述了如何上手、配置、安全加固、自定義、安全評估等概念。<br>在本...

¥59.00

Web安全攻防:滲透測試實戰指南

徐焱 李文軒 王東亞 (作者)

  本書由淺入深、全面、系統地介紹了當前流行的高危漏洞的攻擊手段和防御方法,并力求語言通俗易懂,舉例簡單明了,便于讀者閱讀、領會。結合具體案例進行講解,可以讓讀...

¥89.00

iOS逆向與安全

劉培慶 (作者)

本書從正向開發、工具的使用、逆向實戰及安全保護等方面,對iOS應用的逆向與安全進行了講解。本書內容包括基本概念、逆向環境的準備、常用逆向分析工具、類的結構、Ap...

¥85.00

網絡安全法與網絡安全等級保護制度培訓教程(2018版)

郭啟全 (作者)

本書共9章,包括網絡安全概述、《網絡安全法》解讀、網絡安全等級保護制度、網絡安全等級保護政策體系和標準體系、網絡安全等級保護的定級與備案、網絡安全等級保護的建設...

¥79.00

云虛擬化安全攻防實踐

唐青昊 (作者)

云計算市場已經達到千億美元量級,云計算形態不斷豐富,在企業政府的現在和未來布局中都占據著重要位置。作為云生態的關鍵部分,Hypervisor使人類具備了對計算機...

¥39.00
本書從平臺搭建和語言基礎開始,循序漸進地講解了Android平臺上的軟件安全技術,提供了對Windows、Linux、macOS三個平臺的支持,涉及與Android軟件安全相關的環境搭建、文件格式、靜態分析、動態調試、Hook與注入、軟件保護技術、軟件殼等主題,涵蓋OAT、ELF等新的文件格式。本書將Java與Native層的軟件安全技術分開講解,加入了與軟件殼相關的章節,內容安排細致、合理。本書的每一章都以實例講解的方式來展開內容,實踐性較強。
本書適合Android開發人員、安全研究人員及對Android系統安全感興趣的讀者閱讀。
覆蓋Windows、Linux、macOS上的Android軟件開發、逆向分析及動態調試
關注ARM匯編、Hook、軟件保護、軟件殼及Java層與Native層的逆向分析
系統化的命令和工具介紹、循序漸進的學習路線及生動的應用場景指引動手實踐

目錄

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

第2章 如何分析Android程序
2.1 編寫第一個Android程序 28
2.1.1 創建Android工程 28
2.1.2 編譯生成APK文件 31
2.2 破解第一個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 安裝和測試 47
2.2.7 小結 48
2.3 本章小結 48

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

第4章 常見Android文件格式
4.1 庫文件 74
4.1.1 jar包 74
4.1.2 aar包 75
4.2 APK 78
4.2.1 APK文件結構 78
4.2.2 APK文件的生成流程 79
4.2.3 APK的安裝流程 84
4.3 classes.dex 90
4.3.1 DEX文件結構 90
4.3.2 DEX文件的驗證與優化過程 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文件轉換成DEX文件 136
4.8 OAT 137
4.8.1 ART虛擬機 137
4.8.2 生成OAT文件 137
4.8.3 OAT文件格式 138
4.8.4 將OAT文件轉換成DEX文件 141
4.9 本章小結 143

第5章 靜態分析Android程序

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

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

第7章 ARM反匯編基礎 204
7.1 Android與ARM處理器 204
7.1.1 ARM處理器架構概述 204
7.1.2 Android支持的處理器架構 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原生程序的生成過程 208
7.3.1 預處理 210
7.3.2 編譯 211
7.3.3 匯編 215
7.3.4 鏈接 215
7.4 ARM匯編語言 216
7.4.1 ARM匯編程序結構 216
7.4.2 匯編指令 221
7.4.3 寄存器 223
7.4.4 處理器尋址方式 224
7.4.5 子程序參數傳遞 227
7.5 ARM匯編指令集 230
7.5.1 ARM指令集分類 230
7.5.2 ARM指令編碼 231
7.5.3 ARM指令格式解析 233
7.5.4 常見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 本章小結 250

第8章 Android原生程序開發與逆向分析
8.1 原生程序開發 251
8.1.1 原生程序工程 252
8.1.2 STL的選擇 253
8.1.3 JNI接口 254
8.1.4 編譯選項與配置 256
8.2 原生程序移植 256
8.2.1 ADT項目的移植 257
8.2.2 UNIX開源項目的移植 258
8.2.3 CMake項目的移植 262
8.2.4 其他類型項目的移植 264
8.3 原生程序入口函數 264
8.3.1 原生程序入口函數 264
8.3.2 so入口函數 269
8.4 原生程序文件格式 271
8.4.1 原生程序的文件類型 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節區 283
8.4.6 字符串表 285
8.4.7 符號表 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循環分支結構 305
8.6.3 while循環分支結構 309
8.6.4 if……else分支結構 312
8.6.5 switch循環分支結構 316
8.6.6 優化后的C程序 319
8.7 原生C++ 程序逆向分析 321
8.7.1 C++ STL的逆向分析 322
8.7.2 C++ 類的逆向分析 327
8.7.3 C++ 程序的RTTI 332
8.8 原生so動態庫逆向分析 336
8.9 本章小結 337

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

第10章 Hook與注入
10.1 Hook的類型 359
10.1.1 Dalvik Hook 359
10.1.2 ART Hook 362
10.1.3 LD_PRELOAD Hook 364
10.1.4 GOT Hook 366
10.1.5 Inline Hook 367
10.2 Xposed Hook框架 368
10.3 Hook場景與應用 372
10.3.1 開啟日志調試輸出 372
10.3.2 APK插件 373
10.3.3 繞過SSL Pinning 373
10.4 動態注入 374
10.4.1 so動態庫注入 374
10.4.2 DEX注入 376
10.5 注入框架Frida 377
10.5.1 安裝配置Frida 377
10.5.2 執行注入與Hook 378
10.5.3 跟蹤Native方法 384
10.6 本章小結 386

第11章 軟件保護技術
11.1 軟件保護技術簡介 387
11.2 軟件混淆技術 388
11.2.1 源碼混淆 389
11.2.2 模板混淆 389
11.2.3 AST混淆 391
11.2.4 IR混淆 397
11.2.5 DEX混淆 397
11.2.6 DEX二次混淆 399
11.3 資源保護 401
11.4 完整性校驗 403
11.5 反調試技術 404
11.5.1 調試器狀態檢測 404
11.5.2 調試器端口檢測 404
11.5.3 進程狀態檢測 406
11.6 運行環境檢測 407
11.6.1 模擬器檢測 407
11.6.2 Root檢測 409
11.6.3 Hook檢測 409
11.7 本章小結 411

第12章 軟件殼
12.1 Android軟件殼 412
12.2 軟件殼的特征與偵察 413
12.2.1 編譯器指紋 413
12.2.2 軟件殼的特征 416
12.2.3 查殼工具 418
12.3 動態加載型殼 418
12.3.1 緩存脫殼法 418
12.3.2 內存Dump脫殼法 419
12.3.3 動態調試脫殼法 420
12.3.4 Hook脫殼法 423
12.3.5 系統定制脫殼法 424
12.4 代碼抽取型殼 425
12.4.1 內存重組脫殼法 425
12.4.2 Hook脫殼法 427
12.4.3 系統定制脫殼法 427
12.5 代碼混淆殼 429
12.5.1 LLVM基礎 430
12.5.2 編寫Pass 434
12.5.3 Obfuscator-LLVM 440
12.5.4 代碼混淆殼的脫殼 443
12.6 本章小結 451

讀者評論

  • 搞啥~wechat上的資源不能下載阿!被封了

    way55667788發表于 2019/6/17 11:48:19
  • 書上有很多錯誤的地方,作者寫完書也不管了,看這書還不如看視頻了

    sour發表于 2019/6/6 11:20:05
  • 為什么很多環境都搭建不成功呢 比如第一張unbuntu j**a實驗環境的搭建和書上一模一樣都不成功。雖然查找網上的資料可以搭建成功,但是書上的為什么就不對呢 還有第7章 7.3 arm原生程序的生成過程 使用GCC編譯按照書上做,也是不成功 ,我不知道作者是怎么做的。

    zghh發表于 2019/5/13 16:07:18
  • 作者您好,mac docker aosp 地址怎么和你書上的不一樣, 沒有發現Volumes/ 下有kitkat 呢

    ranshon發表于 2019/4/24 17:43:53
  • 希望作者能夠把源碼和編譯出來的apk,提交到github。 我自己將作者提供的源代碼用Android studio編譯后生成的apk,然后用apktool反編譯成smail,發現生成的smail文件和書上展示的不一樣,我猜應該是編譯的問題吧。

    lushann發表于 2019/3/16 14:24:10
    • 在哪下載的源碼?我沒找到啊

      blueair發表于 2019/3/20 19:09:52
    • @blueair 同意沒找到

      6021037發表于 2019/3/23 15:48:13
    • @blueair 關注微信公眾號“軟件安全與逆向分析” (feicong_sec)輸入關鍵字“安卓源碼” 即可

      lushann發表于 2019/3/23 17:03:17
    • @6021037 關注微信公眾號“軟件安全與逆向分析” (feicong_sec)輸入關鍵字“安卓源碼” 即可

      lushann發表于 2019/3/23 17:03:27
    • @lushann 沒有啊,公眾號回復也沒有響應

      binny1024發表于 2019/5/30 11:57:33
    • 搞啥~wechat上的資源不能下載阿!被封了

      way55667788發表于 2019/6/17 11:48:48

圖書類別

推薦用戶

同系列書

  • Android軟件安全權威指南

    豐生強 (作者)

    本書從平臺搭建和語言基礎開始,循序漸進地講解了Android平臺上的軟件安全技術,提供了對Windows、Linux、macOS三個平臺的支持,涉及與Andro...

     
  • 黑客攻防:實戰加密與解密

    陳小兵 (作者)

    本書從黑客攻防的專業角度,結合網絡攻防中的實際案例,圖文并茂地再現Web滲透涉及的密碼獲取與破解過程,是一本對密碼獲取與破解進行全面研究的圖書。本書共分7章,由...

    ¥69.00
  • 阻擊黑客:技術、策略與案例

    Steven M. Bellovin (作者) 徐菲 (譯者)

    作者是世界上最受尊重和認可的安全專家之一,他在本書中提供了一種看安全的新視角。<br>本書第1部分從問題定義開始,從系統化的角度看待安全,討論當前安全發展的變化...

    ¥79.00
  • 軟件保護及分析技術——原理與實踐

    章立春 (作者)

    本書對軟件安全領域的保護與分析技術進行了全面的討論和剖析,通過保護與分析的對比講解,結合代碼和操作流程,對軟件安全領域的各種技術進行了詳盡的討論,并將理論與實踐...

    ¥59.00
  • 數據恢復技術(經典重現版)

    戴士劍 (作者)

    數據恢復技術逐漸成為一門常用技術,它通過各種手段把丟失和遭到破壞的數據還原為正常數據。本書通過多個典型實例詳細介紹了Windows系統下數據恢復技術的原理和方法...

    ¥99.00
百人牛牛棋牌