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