ARM 彙編與逆向工程藍狐捲基礎知識 Blue Fox: Arm Assembly Internals and Reverse Engineering

Maria Markstedter

買這商品的人也買了...

商品描述

本書為讀者提供有關Arm彙編內部機制和逆向工程的基礎知識,這是分析和保護數十億Arm設備的重要基礎。
本書由兩部分組成,
第一部分首先概述了ELF檔案格式和作業系統的內部結構,然後介紹了Arm架構基礎知識,並深入探討了A32和A64指令集;
第二部分深入探討逆向工程實踐,包括Arm環境、靜態分析和動態分析,以及韌體擷取和模擬分析等關鍵主題。

目錄大綱

譯者序
前言

作者簡介
第一分Arm彙編內機制
第1章逆向工程簡介2
1.1彙編簡介2
1.1.1位元和位元組2
1.1.2字元編碼3
1.1.3機器碼和彙編4
1.1.4彙編6
1.2高階語言11
1.3反彙編12
1.4反編譯13
第2章ELF文件格式的內結構15
2.1程序結構15
2.2高階語言與低階語言16
2.3編譯過程17
2.3.1不同架構的交編譯18
2.3.2彙編和 20
2.4ELF文件概述22
2.5ELF文件頭23
2.5.1ELF文件頭資訊欄位24
2.5.2目標平台字段24
2.5.3程序入口點字段25
2.5.4表格位置字段25
2.6ELF程序頭 26
2.6.1PHDR 程序頭27
2.6.2INTERP程序頭27
2.6.3LOAD程序頭27
2.6.4DYNAMIC程序頭28
2.6.5NOTE程序頭28
2.6.6TLS程序頭29
2.6.7GNU_EH_FRAME程式頭29
2.6.8GNU_STACK程序頭29
2.6.9GNU_RELRO程序頭31
2.7ELF節頭33
2.7.1ELF meta節35
2.7.2主要的ELF節36
2.7.3ELF符號37
2.8.dynamic節和動態載入40
2.8.1依賴項加載41
2.8.2程序重定位41
2.8.3ELF程序的初始化與止節44
2.9線程本地存儲47
2.9.1local-exec TLS存取模型50
2.9.2initial-exec TLS存取模型50
2.9.3general-dynamic TLS存取模型51
2.9.4local-dynamic TLS存取模型52
第3章作系統基本原理54
3.1作系統架構概述54
3.1.1用戶模式與核心模式54
3.1.2進程55
3.1.3系統調用56
3.1.4線程62
3.2進程記憶體管理63
3.2.1內存頁64
3.2.2內存護65
3.2.3匿名記憶體和記憶體映射65
3.2.4地址空間佈局隨機化69
3.2.5棧的實作71
3.2.6共享記憶體72
第4章Arm架構74
4.1架構和設定檔74
4.2Armv8-A架構75
4.2.1異常等級76
4.2.2Armv8-A執行狀態81
4.3AArch64執行狀態82
4.3.1A64指令集82
4.3.2AArch64寄存器83
4.3.3PSTATE89
4.4AArch32執行狀態90
4.4.1A32和T32指令集91
4.4.2AArch32寄存器94
4.4.3目前程式狀態暫存器96
4.4.4執行狀態暫存器99
第5章資料處理指令103
5.1移位和循環移位105
5.1.1邏輯左移105
5.1.2邏輯右移106
5.1.3算術右移106
5.1.4循環右移107
5.1.5帶擴展的循環右移107
5.1.6指令形式107
5.1.7位域作112
5.2邏輯運算120
5.2.1位與121
5.2.2位或122
5.2.3位異或124
5.3算術運算125
5.3.1加法和減法125
5.3.2比較127
5.4乘法運算130
5.4.1A64中的乘法運算130
5.4.2A32/T32中的乘法運算131
5.5除法運算145
5.6移動作146
5.6.1移動常數立數146
5.6.2移動暫存器149
5.6.3移動取反150
第6章記憶體存取指令151
6.1指令概述151
6.2尋址模式和偏移形式152
6.2.1偏移尋址155
6.2.2前索引尋址162
6.2.3後索引尋址164
6.2.4字面值尋址166
6.3載入和儲存指令172
6.3.1載入和儲存字或雙字172
6.3.2載入和儲存半字或位元組174
6.3.3A32多重加載和儲存177
6.3.4A64加載和存儲對186
第7章條件執行189
7.1條件執行概述189
7.2條件碼190
7.2.1NZCV條件標誌190
7.2.2條件碼193
7.3條件指令194
7.4標誌設定指令197
7.4.1指令的S後綴197
7.4.2測試和比較指令201
7.5條件選擇指令207
7.6條件比較指令209
7.6.1使用CCMP的布林與條件210
7.6.2使用CCMP的布林或條件212
第8章控制流215
8.1分支指令215
8.1.1條件分支和循環216
8.1.2測試和比較分支219
8.1.3表分支220
8.1.4分支和切換222
8.1.5子程序分支225
8.2函數和子程序227
8.2.1程序呼叫標準227
8.2.2易失性和非揮發性暫存器228
8.2.3參數和回傳值229
8.2.4傳遞較大值230
8.2.5葉子函數和非葉子函數233
第二分逆向工程
第9章Arm環境240
9.1Arm板241
9.2使用QEMU模擬虛擬環境242
9.2.1QEMU用戶模式模擬243
9.2.2QEMU系統模式模擬246
第10章靜態分析252
10.1靜態分析工具252
10.1.1命令列工具253
10.1.2反組譯器和反編譯器253
10.1.3Binary Ninja Cloud254
10.2引用調用範例258
10.3控制流分析263
10.3.1main函數264
10.3.2子程序265
10.3.3轉換為字元269
10.3.4if語句270
10.3.5商除法272...........