幫助中心 | 我的帳號 | 關於我們

Frida Android SO逆向深入實踐

  • 作者:陳佳林|責編:王金柱
  • 出版社:清華大學
  • ISBN:9787302645597
  • 出版日期:2023/10/01
  • 裝幀:平裝
  • 頁數:505
人民幣:RMB 149 元      售價:
放入購物車
加入收藏夾

內容大鋼
    本書主要介紹使用Frida輔助分析SO進行逆向工程項目開發。首先從基礎開始介紹NDK編譯套件,開發編譯包含SO的應用軟體並進行動靜態分析調試;接著介紹如何將演算法移植到SO中保護App,並使用模擬執行框架載入SO運行演算法,使用GDB、HyperPwn、Objection、Frida聯合調試SO中的演算法;此外,還將介紹ARM/ELF的文件格式和反編譯工具IDA,Frida/Jnitrace Hook/Invoke JNI,JNI與反射及簡單風控案例設計分析,onCreate的Native化,分析Android源碼追蹤JNI的綁定流程。最後介紹哈希和對稱加解密演算法的核心原理與實現細節,以及使用Frida輔助逆向分析的工作流程。
    本書按照由易到難、由淺入深的方式進行講解,適合Native層的初、中級讀者閱讀。

作者介紹
陳佳林|責編:王金柱
    陳佳林,技術極客,「骨灰級」樹莓派愛好者,在機器人、智能硬體、軟硬體協同開發等方面有較深入的研究。     資深安全技術專家,看雪科技高級研究員,在移動安全領域經驗豐富,多次主持召開銀行、電信、政府等行業的培訓並參與安全項目的研究。作為團隊成員參與GeekPwn 2018挑戰賽並獲得亞軍,多次在「看雪安全開發者峰會」「補天白帽大會」等會議上發表主題演講。     另著有《樹莓派創客:手把手教你搭建機器人》《樹莓派創客:手把手教你玩轉人工智慧》。

目錄
第1章  基本開發環境配置
  1.1  虛擬機環境搭建
  1.2  逆向環境搭建
    1.2.1  Android Studio安裝NDK編譯套件
    1.2.2  ADB的配置和使用
    1.2.3  Python版本管理
    1.2.4  移動設備環境準備
    1.2.5  Frida版本管理
    1.2.6  Objection的安裝和使用
  1.3  Frida基本源碼開發環境搭建
  1.4  初識NDK
  1.5  其他工具
  1.6  本章小結
第2章  Android SO動態調試入門
  2.1  Android SO基本動態分析調試
    2.1.1  第一個NDK程序
    2.1.2  動態調試NDK程序
    2.1.3  交叉編譯
  2.2  LLDB動態調試(三方)Android SO
  2.3  Capstone/Keystone/Unicorn(反)彙編器
  2.4  Frida動態調試Android Native部分
  2.5  Frida Instruction模塊動態反彙編
  2.6  本章小結
第3章  靜態分析工具的安裝和基本使用
  3.1  使用objdump反彙編目標文件命令顯示二進位文件信息
  3.2  使用010 Editor解析SO文件顯示二進位基本信息
  3.3  Ghidra/JEB/IDA高級反彙編器
  3.4  Binary Ninja新晉反彙編器
  3.5  本章小結
第4章  C演算法開發及模擬執行
  4.1  Native層密碼學套件移植開發
  4.2  Frida Hook/主動調用執行演算法
  4.3  使用AndroidNativeEmu模擬執行演算法
  4.4  本章小結
第5章  動態調試:GDB動態調試、Hyperpwn/(內存)斷點/棧幀
  5.1  GDB C/S的調試架構
  5.2  將App編譯成帶調試符號的SO文件
  5.3  使用Android調試模式來啟動App
  5.4  Hyperpwn調試入門
  5.5  Objection+Frida+Hyperpwn聯合調試
  5.6  本章小結
第6章  彙編開發:ARM彙編原理/流程/調用約定/動態調試
  6.1  Android和ARM處理器
  6.2  ARM原生程序的生成過程
  6.3  彙編語言簡介
    6.3.1  彙編程序組成
    6.3.2  ARM處理器的工作模式與定址方式
  6.4  ARM彙編指令及動態調試分析
  6.5  多功能CPU模擬器:Unicorn
  6.6  本章小結

第7章  逆向分析:ELF文件結構、節/區/表/段/符號/鏈接器
  7.1  操作系統ELF文件動態載入的基礎知識
    7.1.1  從幾個問題入手
    7.1.2  操作系統的核心概念
  7.2  可執行文件的載入過程
  7.3  使用Unidbg模擬執行SO文件中的函數
    7.3.1  Unidbg框架的基本運作原理
    7.3.2  Unidbg各組件的基本功能
    7.3.3  追蹤SO文件的載入與解析流程
  7.4  本章小結
第8章  反編譯工具IDA
  8.1  IDA入門
    8.1.1  IDA的安裝與使用
    8.1.2  IDA插件的使用
    8.1.3  IDA反彙編介紹
    8.1.4  IDA分析與Frida Hook結合
  8.2  動靜態SO演算法還原與離線
    8.2.1  IDA動態調試SO演算法
    8.2.2  Keypatch原理/實戰硬改演算法邏輯
  8.3  本章小結
第9章  JNI介面初識
  9.1  JNI及其工作原理
    9.1.1  NDK簡介
    9.1.2  JNI——NDK具體的實現介面
  9.2  Frida手動追蹤JNI介面
  9.3  jnitrace自動追蹤JNI
  9.4  JNI介面大橫評
    9.4.1  Frida Hook並主動調用
    9.4.2  jnitrace
    9.4.3  ExAndroidNativeEmu
  9.5  本章小結
第10章  JNI的特性:Java/Native互相調用、反射/全局/局部引用
  10.1  反射「濫用」類和對象的基本屬性
    10.1.1  反射的概念與相關的Java類
    10.1.2  實例:Xposed刷機和編譯使用的插件
    10.1.3  反射設置/調用類和對象的域和方法
    10.1.4  來自Native層的反射調用追蹤
  10.2  設計簡單風控SDK並主動調用觀察效果
    10.2.1  收集設備關鍵信息的常見方向和思路
    10.2.2  Native層使用反射調用Java層API獲取設備信息
  10.3  本章小結
第11章  onCreate進行Native化和引用
  11.1  將onCreate函數Native化
  11.2  Java內存管理
    11.2.1  C和Java內存管理的差異
    11.2.2  JNI的三種引用
  11.3  本章小結
第12章  JNI動靜態綁定和追蹤
  12.1  Dalvik下動靜態註冊流程追蹤
  12.2  ART下動靜態註冊流程追蹤

  12.3  本章小結
第13章  MD5演算法分析和魔改
  13.1  MD5演算法的描述
  13.2  MD5工程實現
  13.3  哈希演算法逆向分析
    13.3.1  Findcrypt/Signsrch源碼剖析
    13.3.2  演算法識別插件的核心原理與改進方向
    13.3.3  使用findhash插件檢測哈希演算法
    13.3.4  SHA1演算法逆向分析實戰
  13.4  哈希演算法的擴展延伸
    13.4.1  哈希演算法的特徵
  13.4  2  大廠最愛:HMAC-MD5/SHA1詳解
  13.5  Frida MemoryAccessMonitor的使用場景
  13.6  本章小結
第14章  對稱加密演算法逆向分析
  14.1  DES詳解
    14.1.1  分組密碼的填充與工作模式
    14.1.2  三重DES
  14.2  AES
    14.2.1  AES初識
    14.2.2  深入了解AES
    14.2.3  Unicorn輔助分析
    14.2.4  AES的工作模式
  14.3  本章小結
第15章  讀懂DEX並了解DexDump解析過程
  15.1  環境及開發工具
  15.2  認識DEX文件結構
    15.2.1  DEX文件格式概貌
    15.2.2  DEX文件格式項目搭建
    15.2.3  DEX文件詳細分析
  15.3  DexDump解析
    15.3.1  ULEB128格式講解
    15.3.2  DexDump解析過程
  15.4  本章小結
第16章  ELF文件格式解讀及其生成過程
  16.1  ELF文件頭
    16.1.1  分析環境搭建
    16.1.2  elf_header
    16.1.3  program_header_table
    16.1.4  section_header_table
  16.2  ELF可執行文件的生成過程與執行視圖
    16.2.1  ARM可執行文件的生成過程
    16.2.2  執行視圖
    16.2.3  GOT和PLT
  16.3  本章小結
第17章  高版本Android函數地址索引徹底解決方案
  17.1  不同版本對於動態鏈接庫的調用對比
  17.2  高版本載入SO文件
    17.2.1  自定義庫查看庫函數的偏移
    17.2.2  自定義庫實現的背景

    17.2.3  自定義庫findsym的實現
  17.3  SO符號地址尋找
    17.3.1  通過節頭獲取符號地址
    17.3.2  模仿Android通過哈希尋找符號
  17.4  本章小結
第18章  從findExportByName源碼分析到anti-frida新思路
  18.1  兩種模式下anti-frida的演示
    18.1.1  Frida attach模式下的anti-frida
    18.1.2  Frida spawn模式下的anti-frida
  18.2  源碼分析
    18.2.1  Frida編譯
    18.2.2  源碼追蹤分析
  18.3  本章小結
第19章  PLT和GOT的Hook
  19.1  GOT的Hook
    19.1.1  根據節頭實現Hook
    19.1.2  根據程序頭來實現Hook
  19.2  PLT的Hook
    19.2.1  根據節頭來實現Hook
    19.2.2  根據程序頭來實現Hook
  19.3  從GOT和PLT的Hook到xHook原理剖析
    19.3.1  xHook的優點
    19.3.2  源碼賞析
  19.4  本章小結
第20章  番外篇——另類方法尋找SO文件首地址
  20.1  項目搭建
  20.2  封裝成庫
  20.3  通過soinfo的映射表遍歷符號
  20.4  dlopen和dlsym獲取符號地址
  20.5  本章小結
第21章  Java Hook的原理
  21.1  Java函數源碼追蹤
    21.1.1  什麼是Java Hook
    21.1.2  源碼追蹤
  21.2  Java Hook實踐
  21.3  Frida中Java Hook的實現
    21.3.1  Frida perform源碼追蹤
    21.3.2  Frida implementation源碼追蹤
  21.4  本章小結
第22章  inline Hook中用到的彙編指令
  22.1  兩種Hook方式的介紹
  22.2  定向跳轉
  22.3  寄存器保存
    22.3.1  寄存器選擇
    22.3.2  3種寄存器賦值的方案
  22.4  本章小結
第23章  基於Capstone處理特殊指令
  23.1  編譯Capstone並配置測試環境
  23.2  Capstone官方測試案例演示
  23.3  自定義彙編翻譯函數

  23.4  基於Capstone修正指令
    23.4.1  指令修復的目的
    23.4.2  修復指令的原理
    23.4.3  指令修復的種類
  23.5  本章小結
第24章  inline Hook框架集成
  24.1  inline Hook框架測試
  24.2  結合Capstone框架
  24.3  本章小結
第25章  通殺的檢測型框架r0Invoke
  25.1  r0Invoke牛刀小試脫殼fulao
    25.1.1  APK靜態分析
    25.1.2  使用r0Invoke脫殼
    25.1.3  脫殼操作
  25.2  r0Invoke進階:跟蹤所有運行在ART下的Java函數
  25.3  r0Invoke主動調用Native函數並且修改參數
  25.4  r0Invoke Trace高度混淆OLLVM
  25.5  本章小結
第26章  SO文件載入流程分析與注入實戰
  26.1  SO文件的載入方式
  26.2  SO文件載入流程
  26.3  Frida Hook dlopen和android_dlopen_ext
  26.4  編譯AOSP注入SO
    26.4.1  直接載入sdcard中的SO文件
    26.4.2  載入私有目錄的SO文件
    26.4.3  編譯AOSP注入SO文件
  26.5  注入優化
  26.6  本章小結

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032