x64匯編語言與逆向分析技術

王瑞敏,林鍵

  • 出版商: 科學出版
  • 出版日期: 2026-08-01
  • 售價: $474
  • 語言: 簡體中文
  • ISBN: 7030858093
  • ISBN-13: 9787030858092
  • 相關分類: Computer-architecture
  • 下單後立即進貨 (約4週~6週)

相關主題

商品描述

本書系統講解x64匯編語言及其在逆向分析領域的應用,面向網絡空間安全、系統軟件等方向的學習者與從業者。全書以x64架構為核心,全面覆蓋應用層匯編編程與系統級體系結構,深入介紹數據表示、指令集、子程序設計、向量計算等基礎知識,並剖析特權級、內存管理、中斷/異常等底層運行機制。
  本書以逆向分析為實踐主線,系統講解靜態分析與動態調試技術,結合Ghidra等主流開源工具,幫助讀者掌握從“讀懂匯編”到“完成逆向”的完整能力鏈條。全書共12章,分為x64匯編語言、x64系統級架構、逆向分析技術三部分,內容循序漸進、實例豐富。

目錄大綱

第1章 概述 1
1.1 匯編語言 1
1.1.1 匯編語言的定義 1
1.1.2 匯編語言的應用 2
1.1.3 匯編語言的不足 4
1.1.4 學習匯編語言的意義 5
1.2 逆向分析 6
1.2.1 逆向分析的定義 6
1.2.2 逆向分析的應用 7
1.2.3 逆向分析的技術手段 8
1.2.4 逆向分析的合法性 10
1.3 x64處理器 11
1.3.1 指令集架構 11
1.3.2 x86/x64 ISA演進 12
1.3.3 x64 ISA的擴展特性 13
習題 14
第2章 數據表示與存儲 16
2.1 數據的數學記法 16
2.1.1 進位計數制 16
2.1.2 二進制 17
2.1.3 十六進制 18
2.2 數據的編碼表示 19
2.2.1 整數的編碼 19
2.2.2 實數的編碼 22
2.2.3 文字的編碼 25
2.3 數據的組織 27
2.3.1 數據的位寬 27
2.3.2 數據的類型 28
2.4 數據的存取 30
2.4.1 內存編址 30
2.4.2 地址對齊 31
2.4.3 字節序 31
習題 32
第3章 x64應用執行環境 34
3.1 64位應用執行環境概述 34
3.2 基本寄存器 36
3.2.1 通用寄存器 36
3.2.2 段寄存器 37
3.2.3 指令指針寄存器 38
3.2.4 標誌寄存器 38
3.3 內存模型 39
3.4 指令集 40
3.4.1 指令的匯編語言表示 40
3.4.2 匯編語言表示的書寫約定 41
3.4.3 指令MOV 41
3.5 尋址方式 42
3.5.1 直接尋址 43
3.5.2 帶變址的寄存器間接尋址及其變種 43
3.5.3 RIP相對尋址 46
3.5.4 其他尋址方式 46
習題 47
第4章 匯編語言語法及程序開發 49
4.1 基礎語法成分 49
4.1.1 保留字 49
4.1.2 標號 51
4.1.3 常量 52
4.1.4 數值表達式 54
4.1.5 地址表達式 54
4.2 匯編語言語句 54
4.2.1 指令語句 55
4.2.2 偽指令語句 55
4.2.3 預處理指令語句 62
4.3 開發環境搭建 64
4.3.1 安裝VS Code 64
4.3.2 安裝NASM 65
4.3.3 安裝其他開發工具 66
4.4 基本開發活動 66
4.4.1 Hello World程序 66
4.4.2 程序的編輯/編譯/鏈接/運行 67
4.4.3 程序的調試 69
習題 70
第5章 數據處理指令 73
5.1 數據傳送指令 73
5.1.1 通用數據傳送指令 73
5.1.2 數據交換指令 74
5.1.3 棧操作指令 74
5.1.4 標誌寄存器棧操作指令 76
5.1.5 地址傳送指令 77
5.1.6 符號擴展指令 77
5.2 算術運算指令 78
5.2.1 加法指令 78
5.2.2 減法指令 81
5.2.3 乘法指令 82
5.2.4 除法指令 84
5.3 邏輯運算和移位指令 85
5.3.1 邏輯運算指令 85
5.3.2 移位指令 87
5.3.3 循環移位指令 89
5.4 串操作指令 90
5.4.1 字符串傳送指令 90
5.4.2 字符串存儲指令 91
5.4.3 字符串比較指令 91
5.4.4 字符串掃描指令 92
5.4.5 重覆前綴 92
習題 93
第6章 分支和循環指令 97
6.1 分支指令 97
6.1.1 無條件跳轉指令 97
6.1.2 條件跳轉指令 100
6.2 分支結構 102
6.2.1 單分支 102
6.2.2 雙分支 103
6.2.3 多路分支 104
6.3 循環指令 106
6.4 循環結構 106
6.4.1 do?while型循環 107
6.4.2 while型循環 107
6.4.3 for型循環 108
6.4.4 多重循環 109
習題 110
第7章 子程序設計 114
7.1 子程序調用和返回指令 114
7.1.1 CALL指令 115
7.1.2 RET指令 116
7.1.3 CALL/RET指令應用示例 117
7.2 調用約定 117
7.2.1 參數傳遞/清除與返回值 118
7.2.2 寄存器的保存與恢覆 120
7.3 棧幀結構 121
7.4 C庫函數調用 125
7.5 系統調用 127
習題 128
第8章 SSE及向量計算 131
8.1 IEEE 754?1985標準 131
8.1.1 舍入 132
8.1.2 浮點異常 134
8.2 SSE執行環境 134
8.3 SSE數據類型 136
8.4 SSE指令 137
8.4.1 數據傳送指令 138
8.4.2 數據轉換/重排指令 143
8.4.3 運算指令 150
8.5 SSE指令應用示例 157
8.5.1 矩陣轉置 157
8.5.2 灰度圖像生成 159
習題 161
第9章 x64系統級架構 163
9.1 系統級架構概述 163
9.1.1 操作系統對系統級架構的需求 163
9.1.2 存儲管理與橫向隔離 164
9.1.3 多特權態與縱向隔離 165
9.1.4 中斷/異常管理與服務通道 166
9.2 x64工作模式 167
9.3 x64實模式 169
9.3.1 系統資源 169
9.3.2 存儲管理 170
9.3.3 中斷/異常管理 172
9.4 x64保護模式 172
9.4.1 保護模式概述 173
9.4.2 段式存儲管理 175
9.4.3 頁式存儲管理 181
9.4.4 保護機制 188
9.4.5 中斷/異常管理 194
9.4.6 平面內存模型 201
9.5 x64長模式 203
9.5.1 段式存儲管理 203
9.5.2 頁式存儲管理 205
9.5.3 保護機制 208
9.5.4 中斷/異常管理 208
9.6 x64系統編程示例 210
習題 213
第10章 靜態分析技術 214
10.1 ELF文件格式 214
10.1.1 ELF頭 215
10.1.2 程序頭表 217
10.1.3 節頭表 220
10.1.4 動態鏈接 225
10.2 反匯編原理 229
10.2.1 x64指令格式 229
10.2.2 反匯編基本流程 235
10.2.3 反匯編引擎 235
10.2.4 反匯編策略 236
10.3 靜態分析工具Ghidra 238
10.3.1 Ghidra下載與啟動 238
10.3.2 Ghidra項目創建與文件導入 239
10.3.3 Ghidra CodeBrowser窗口 240
10.3.4 Ghidra基本導航 241
10.3.5 Ghidra的交互式分析 242
習題 242
第11章 動態調試技術 244
11.1 調試器概述 244
11.2 調試器原理 245
11.2.1 Intel處理器的調試支持 246
11.2.2 Linux操作系統的調試接口 248
11.3 調試器GDB 254
11.3.1 GDB的安裝 254
11.3.2 GDB的調試會話建立與終止 255
11.3.3 GDB控制程序的執行 256
11.3.4 GDB內存操作 257
11.3.5 GDB寄存器操作 257
11.3.6 GDB斷點 258
11.3.7 GDB的Python擴展 259
11.3.8 GDB遠程調試 261
習題 262
第12章 高級語言程序的逆向分析 264
12.1 C程序逆向分析 264
12.1.1 函數識別 264
12.1.2 棧幀分析 268
12.1.3 數據類型推斷 273
12.1.4 控制流分析 283
12.2 C++程序逆向分析 289
12.2.1 C++名稱修飾 289
12.2.2 std::string類型分析 290
12.2.3 C++類逆向分析 293
習題 296
參考文獻 298