"本書(shū)將基于Kali Linux系統(tǒng)介紹x86匯編語(yǔ)言程序的開(kāi)發(fā)方法,從理論基礎(chǔ)出發(fā),結(jié)合實(shí)戰(zhàn)項(xiàng)目,詳細(xì)闡述匯編語(yǔ)言的語(yǔ)法規(guī)則和shellcode機(jī)器碼的編寫(xiě)流程和分析方法,以及加密和混淆shellcode機(jī)器碼的方式。
本書(shū)共12章,第1~3章詳細(xì)講述Kali Linux的使用方法,從搭建Kali Linux虛擬機(jī)環(huán)境開(kāi)始,逐步深入介紹Linux系統(tǒng)命令,以及調(diào)試器gdb基本用法等相關(guān)內(nèi)容。第4~7章將介紹匯編語(yǔ)言的基礎(chǔ)語(yǔ)法規(guī)則,包括數(shù)據(jù)操作、流程控制、函數(shù)定義與調(diào)用,以及調(diào)用庫(kù)函數(shù)的方法。第8~12章闡述了使用匯編語(yǔ)言開(kāi)發(fā)shellcode機(jī)器碼的流程、加密和混淆shellcode的方式,以及分析Metasploit工具內(nèi)置Linux shellcode的方法。
本書(shū)示例代碼豐富,實(shí)際性和系統(tǒng)性較強(qiáng),詳細(xì)闡述每個(gè)案例,助力讀者透徹地理解書(shū)中的重點(diǎn)、難點(diǎn)。本書(shū)既適合初學(xué)者入門(mén),對(duì)于工作多年的安全工程師也有參考價(jià)值,并可作為高等院校和培訓(xùn)機(jī)構(gòu)相關(guān)專(zhuān)業(yè)的教學(xué)參考書(shū)。
"
第1章 搭建匯編語(yǔ)言開(kāi)發(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)建匯編開(kāi)發(fā)工具包
1.2.1 編寫(xiě)第1個(gè)匯編程序
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用戶(hù)的分類(lèi)
2.2.2 Linux的文件權(quán)限
2.3 Linux網(wǎng)絡(luò)管理
2.3.1 配置網(wǎng)絡(luò)IP地址
2.3.2 測(cè)試網(wǎng)絡(luò)連通性
2.4 VIM的基本用法
2.5 Shell腳本基礎(chǔ)
第3章 輕松調(diào)試可執(zhí)行程序
3.1 探索程序的基本原理
3.1.1 存儲(chǔ)數(shù)據(jù)的基本格式
3.1.2 編程語(yǔ)言的發(fā)展歷史
3.2 初識(shí)Linux程序調(diào)試器
3.2.1 淺析調(diào)試程序的原理
3.2.2 調(diào)試器gdb的基本用法
第4章 匯編語(yǔ)言中的數(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章 匯編語(yǔ)言中的控制結(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 無(wú)限循環(huán)
第6章 匯編語(yǔ)言中的函數(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 初識(shí)棧結(jié)構(gòu)
6.2.2 x86?臻g
6.2.3 函數(shù)序言
6.2.4 函數(shù)尾聲
6.2.5 分析棧幀案例
第7章 匯編語(yǔ)言調(diào)用系統(tǒng)庫(kù)函數(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 初識(shí)系統(tǒng)庫(kù)函數(shù)
7.2.1 系統(tǒng)調(diào)用與庫(kù)函數(shù)的區(qū)別
7.2.2 系統(tǒng)庫(kù)函數(shù)的分類(lèi)
7.2.3 調(diào)用庫(kù)函數(shù)的方法
第8章 初識(shí)shellcode代碼
8.1 shellcode的來(lái)源
8.1.1 使用msfvenom生成shellcode
8.1.2 從第三方網(wǎng)站獲取shellcode
8.2 C語(yǔ)言實(shí)現(xiàn)shellcode加載程序
8.2.1 基于Windows的shellcode加載程序
8.2.2 實(shí)現(xiàn)跨平臺(tái)shellcode加載程序
8.3 實(shí)現(xiàn)第1個(gè)shellcode
8.3.1 編寫(xiě)正常退出的程序
8.3.2 解決壞字節(jié)問(wèn)題的方法
8.3.3 編寫(xiě)并測(cè)試shellcode
第9章 輕松編寫(xiě)shellcode代碼
9.1 執(zhí)行/bin/sh程序的shellcode
9.1.1 /bin/sh程序
9.1.2 硬編碼問(wèn)題
9.1.3 解決硬編碼問(wèn)題
9.1.4 實(shí)現(xiàn)jmp-call-pop版的shellcode
9.1.5 實(shí)現(xiàn)push stack版的shellcode
9.2 綁定類(lèi)型的shellcode
9.2.1 Bind shellcode套接字原理
9.2.2 實(shí)現(xiàn)Bind shellcode
9.3 反向類(lèi)型的shellcode
9.3.1 反向shellcode套接字原理
9.3.2 實(shí)現(xiàn)反向shellcode
9.3.3 自定義IP和端口號(hào)的反向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