"本書將基于Kali Linux系統(tǒng)介紹x86匯編語言程序的開發(fā)方法,從理論基礎出發(fā),結合實戰(zhàn)項目,詳細闡述匯編語言的語法規(guī)則和shellcode機器碼的編寫流程和分析方法,以及加密和混淆shellcode機器碼的方式。
本書共12章,第1~3章詳細講述Kali Linux的使用方法,從搭建Kali Linux虛擬機環(huán)境開始,逐步深入介紹Linux系統(tǒng)命令,以及調試器gdb基本用法等相關內容。第4~7章將介紹匯編語言的基礎語法規(guī)則,包括數(shù)據(jù)操作、流程控制、函數(shù)定義與調用,以及調用庫函數(shù)的方法。第8~12章闡述了使用匯編語言開發(fā)shellcode機器碼的流程、加密和混淆shellcode的方式,以及分析Metasploit工具內置Linux shellcode的方法。
本書示例代碼豐富,實際性和系統(tǒng)性較強,詳細闡述每個案例,助力讀者透徹地理解書中的重點、難點。本書既適合初學者入門,對于工作多年的安全工程師也有參考價值,并可作為高等院校和培訓機構相關專業(yè)的教學參考書。
"
第1章 搭建匯編語言開發(fā)環(huán)境
1.1 創(chuàng)建虛擬機實驗環(huán)境
1.1.1 虛擬機軟件
1.1.2 輕松安裝虛擬機軟件
1.1.3 Linux系統(tǒng)的基本概念
1.1.4 導入Kali的虛擬機文件
1.2 構建匯編開發(fā)工具包
1.2.1 編寫第1個匯編程序
1.2.2 編譯與鏈接匯編程序
第2章 輕松掌握Linux命令行
2.1 Linux文件管理
2.1.1 Linux文件系統(tǒng)結構
2.1.2 常用文件管理命令
2.2 Linux權限管理
2.2.1 Linux用戶的分類
2.2.2 Linux的文件權限
2.3 Linux網絡管理
2.3.1 配置網絡IP地址
2.3.2 測試網絡連通性
2.4 VIM的基本用法
2.5 Shell腳本基礎
第3章 輕松調試可執(zhí)行程序
3.1 探索程序的基本原理
3.1.1 存儲數(shù)據(jù)的基本格式
3.1.2 編程語言的發(fā)展歷史
3.2 初識Linux程序調試器
3.2.1 淺析調試程序的原理
3.2.2 調試器gdb的基本用法
第4章 匯編語言中的數(shù)據(jù)操作
4.1 常量與變量
4.1.1 內存空間的分段
4.1.2 不同格式的字面量
4.1.3 定義常量的方法
4.1.4 定義變量的方法
4.1.5 調試常量與變量程序
4.2 數(shù)據(jù)傳送
4.2.1 寄存器與內存地址
4.2.2 MOV指令
4.2.3 LEA指令
4.2.4 XCHG指令
4.3 算術運算
4.3.1 加法
4.3.2 減法
4.3.3 乘法
4.3.4 除法
4.3.5 自增
4.3.6 自減
4.4 邏輯運算
4.4.1 邏輯與
4.4.2 邏輯或
4.4.3 邏輯非
4.4.4 邏輯異或
第5章 匯編語言中的控制結構
5.1 順序結構
5.2 選擇結構
5.2.1 結束指令
5.2.2 比較指令
5.2.3 跳轉指令
5.3 循環(huán)結構
5.3.1 計數(shù)循環(huán)
5.3.2 條件循環(huán)
5.3.3 無限循環(huán)
第6章 匯編語言中的函數(shù)
6.1 函數(shù)的定義與調用
6.1.1 定義函數(shù)的指令
6.1.2 調用函數(shù)的指令
6.1.3 分析函數(shù)案例
6.2 程序棧幀
6.2.1 初識棧結構
6.2.2 x86棧空間
6.2.3 函數(shù)序言
6.2.4 函數(shù)尾聲
6.2.5 分析棧幀案例
第7章 匯編語言調用系統(tǒng)庫函數(shù)
7.1 函數(shù)調用約定
7.1.1 fastcall調用約定
7.1.2 stdcall調用約定
7.1.3 cdecl調用約定
7.2 初識系統(tǒng)庫函數(shù)
7.2.1 系統(tǒng)調用與庫函數(shù)的區(qū)別
7.2.2 系統(tǒng)庫函數(shù)的分類
7.2.3 調用庫函數(shù)的方法
第8章 初識shellcode代碼
8.1 shellcode的來源
8.1.1 使用msfvenom生成shellcode
8.1.2 從第三方網站獲取shellcode
8.2 C語言實現(xiàn)shellcode加載程序
8.2.1 基于Windows的shellcode加載程序
8.2.2 實現(xiàn)跨平臺shellcode加載程序
8.3 實現(xiàn)第1個shellcode
8.3.1 編寫正常退出的程序
8.3.2 解決壞字節(jié)問題的方法
8.3.3 編寫并測試shellcode
第9章 輕松編寫shellcode代碼
9.1 執(zhí)行/bin/sh程序的shellcode
9.1.1 /bin/sh程序
9.1.2 硬編碼問題
9.1.3 解決硬編碼問題
9.1.4 實現(xiàn)jmp-call-pop版的shellcode
9.1.5 實現(xiàn)push stack版的shellcode
9.2 綁定類型的shellcode
9.2.1 Bind shellcode套接字原理
9.2.2 實現(xiàn)Bind shellcode
9.3 反向類型的shellcode
9.3.1 反向shellcode套接字原理
9.3.2 實現(xiàn)反向shellcode
9.3.3 自定義IP和端口號的反向shellcode
第10章 解析shellcode代碼的加密技術
10.1 基于XOR加解密shellcode
10.1.1 XOR算法的基本原理
10.1.2 實現(xiàn)XOR算法的加解密
10.2 基于RC4加解密shellcode
10.3 基于AES加解密shellcode
第11章 解析shellcode代碼的混淆技術
11.1 基于IPv4混淆shellcode代碼
11.1.1 IPv4混淆的基本原理
11.1.2 實現(xiàn)IPv4混淆shellcode
11.1.3 將IPv4地址還原為shellcode
11.2 基于MAC地址混淆shellcode代碼
11.2.1 MAC地址混淆的基本原理
11.2.2 實現(xiàn)MAC地址混淆shellcode
11.2.3 將MAC地址還原為shellcode
第12章 實戰(zhàn)分析Metasploit內置的shellcode
12.1 常用分析工具
12.1.1 構建Libemu環(huán)境
12.1.2 反匯編工具ndisasm
12.2 分析綁定shellcode
12.3 分析反向shellcode