舉報

會員
Linux系統(tǒng)安全基礎(chǔ):二進制代碼安全性分析基礎(chǔ)與實踐
最新章節(jié):
附錄I Python文件默認的開頭注釋格式
本書主要通過對二進制代碼安全性進行分析來介紹Linux系統(tǒng)安全。本書共分為6章,首先對Linux系統(tǒng)安全和二進制代碼安全性分析進行了概述;然后詳細地介紹了二進制代碼的生成以及二進制代碼信息的收集;在此基礎(chǔ)上,接著對靜態(tài)二進制代碼分析和二進制代碼脆弱性評估進行了深入的探討;最后詳細介紹了二進制代碼漏洞利用。為了幫助讀者更好地掌握相關(guān)的理論知識和技術(shù)原理,本書穿插了作者親自實踐過的軟件源碼,并對源碼的關(guān)鍵部分進行了說明。
最新章節(jié)
- 附錄I Python文件默認的開頭注釋格式
- 附錄H Linux死機的處理
- G.4 C++名字空間的問題
- G.3 符號改編問題的解決辦法
- G.2 符號改編問題
- G.1 C與C++程序的內(nèi)存分配
上架時間:2023-09-07 18:16:27
出版社:電子工業(yè)出版社
上海閱文信息技術(shù)有限公司已經(jīng)獲得合法授權(quán),并進行制作發(fā)行
- 附錄I Python文件默認的開頭注釋格式 更新時間:2023-09-07 18:32:03
- 附錄H Linux死機的處理
- G.4 C++名字空間的問題
- G.3 符號改編問題的解決辦法
- G.2 符號改編問題
- G.1 C與C++程序的內(nèi)存分配
- 附錄G 在C++程序中調(diào)用C 函數(shù)的問題
- 附錄F 在多模塊中使用ld手動鏈接生成可執(zhí)行文件
- E.4 共享庫的使用
- E.3 共享庫的鏈接
- E.2 共享庫文件的生成
- E.1.3 共享庫測試文件
- E.1.2 共享庫函數(shù)定義文件
- E.1.1 共享庫頭文件
- E.1 共享庫測試代碼
- 附錄E 共享庫鏈接的路徑問題
- D.3 程序裝載的基地址不同
- D.2 函數(shù)調(diào)用參數(shù)的傳遞方式不同
- D.1 數(shù)據(jù)類型大小的不同
- 附錄D 32位系統(tǒng)與64位系統(tǒng)中程序的區(qū)別
- C.4.3 棧幀中變量的對齊
- C.4.2 x86-64 系統(tǒng)下棧幀對齊
- C.4.1 x86 系統(tǒng)下的棧幀對齊
- C.4 棧幀對齊
- C.3 棧幀內(nèi)容的具體示例
- C.2 棧幀中的內(nèi)容有哪些
- C.1 什么是棧幀
- 附錄C 棧幀原理
- B.3 函數(shù)的后續(xù)
- B.2 函數(shù)的前導(dǎo)
- B.1 函數(shù)參數(shù)的傳遞
- 附錄B 函數(shù)調(diào)用約定
- A.3 計算機的字節(jié)順序
- A.2 非標(biāo)準(zhǔn)(復(fù)雜)類型數(shù)據(jù)的對齊
- A.1 基本數(shù)據(jù)類型的對齊
- 附錄A 數(shù)據(jù)對齊問題
- 6.3.3 任意跳轉(zhuǎn)
- 6.3.2 任意寫
- 6.3.1 任意讀
- 6.3 基于Angr的緩沖區(qū)溢出漏洞自動利用
- 6.2.7 被測目標(biāo)程序的代碼被執(zhí)行一次的多階段攻擊
- 6.2.6 被測目標(biāo)程序的代碼被執(zhí)行多次的多階段攻擊
- 6.2.5 ROP攻擊
- 6.2.4.got表覆蓋技術(shù)
- 6.2.3 ret2plt
- 6.2.2 ret2Libc攻擊
- 6.2.1 ret2shellcode
- 6.2 緩沖區(qū)溢出漏洞的利用
- 6.1.13 二進制代碼保護技術(shù)比較
- 6.1.12 ASCII-Armor地址映射保護機制
- 6.1.11 FORTIFY保護機制
- 6.1.10 RPATH存在的安全問題
- 6.1.9 RPATH和RUNPATH
- 6.1.8 繞過PIE保護機制的方法
- 6.1.7 PIE保護機制
- 6.1.6 地址空間布局隨機化
- 6.1.5 RELRO機制
- 6.1.4 Canary棧保護
- 6.1.3 Linux中的NX機制
- 6.1.2 去掉可執(zhí)行文件中的符號的方法
- 6.1.1 二進制代碼保護措施的查看
- 6.1 二進制代碼加固技術(shù)及其gcc編譯選項
- 第6章 二進制代碼漏洞利用
- 5.6.3 libFuzzer
- 5.6.2 內(nèi)存模糊測試
- 5.6.1 模糊測試的方式
- 5.6 基于模糊測試的代碼脆弱性評估
- 5.5.5 基于Pin的動態(tài)污點分析
- 5.5.4 基于Clang靜態(tài)分析儀的污點分析應(yīng)用
- 5.5.3 污點分析相關(guān)概念
- 5.5.2 污點分析的分類
- 5.5.1 污點分析原理
- 5.5 基于污點分析的代碼脆弱性評估
- 5.4.3 基于Angr的二進制代碼分析
- 5.4.2 符號執(zhí)行的優(yōu)、缺點
- 5.4.1 符號執(zhí)行的原理
- 5.4 基于符號執(zhí)行的代碼脆弱性評估
- 5.3.7 Pintools應(yīng)用示例:緩沖區(qū)溢出的檢測
- 5.3.6 Pintools的測試
- 5.3.5 Pintools的生成
- 5.3.4 分析代碼的過濾
- 5.3.3 Intel Pintools的編寫
- 5.3.2 插樁粒度
- 5.3.1 插樁模式
- 5.3 基于Intel Pin的代碼脆弱性評估
- 5.2.2 Linux系統(tǒng)下堆安全的增強措施
- 5.2.1 基于Clang Static Analyzer的安全檢測
- 5.2 基于系統(tǒng)工具對代碼脆弱性的評估
- 5.1.2 堆溢出的原理
- 5.1.1 棧溢出的原理
- 5.1 常見二進制代碼脆弱性
- 第5章 二進制代碼脆弱性評估
- 4.2.5 基于r2pipe的腳本文件執(zhí)行
- 4.2.4 基于r2pipe的腳本文件編寫
- 4.2.3 r2 對JSON格式數(shù)據(jù)的處理
- 4.2.2 r2 常用命令示例
- 4.2.1 r2 的常用命令
- 4.2 基于Radare2 的靜態(tài)分析
- 4.1.4 IDAPro插件的編寫
- 4.1.3 IDAPython腳本文件示例
- 4.1.2 IDAPython腳本文件
- 4.1.1 IDC腳本文件
- 4.1 基于IDAPro的靜態(tài)分析
- 第4章 靜態(tài)二進制代碼分析
- 3.13 LibcSearcher
- 3.12.18 基于Python腳本文件的Pwntools應(yīng)用舉例
- 3.12.17 腳本文件和被測目標(biāo)程序的交互
- 3.12.16 基于命名管道的數(shù)據(jù)交互
- 3.12.15 基于標(biāo)準(zhǔn)輸入/輸出的數(shù)據(jù)交互
- 3.12.14 DynELF模塊
- 3.12.13 GDB模塊
- 3.12.12 ROP模塊
- 3.12.11 shellcraft模塊
- 3.12.10 struct模塊
- 3.12.9 數(shù)據(jù)轉(zhuǎn)換
- 3.12.8 核心文件
- 3.12.7 cyclic命令的功能
- 3.12.6 search方法
- 3.12.5 ELF模塊
- 3.12.4 遠程進程對象的創(chuàng)建
- 3.12.3 本地進程對象的創(chuàng)建
- 3.12.2 通過上下文設(shè)置目標(biāo)平臺
- 3.12.1 Pwntools的安裝
- 3.12 Pwntools
- 3.11.6 PEDA基本使用
- 3.11.5 GDB命令的擴充
- 3.11.4 GDB命令的運行
- 3.11.3 GDB的常用命令示例
- 3.11.2 GDB的常用命令
- 3.11.1 GDB的初始化腳本文件
- 3.11 GDB
- 3.10 readelf
- 3.9 ob jdump
- 3.8 ROPgadget
- 3.7 ltrace
- 3.6 strace
- 3.5 ps
- 3.4.3 基于LIEF將可執(zhí)行文件轉(zhuǎn)變?yōu)楣蚕韼煳募?/span>
- 3.4.2 基于LIEF對.got.plt表的攻擊舉例
- 3.4.1 安裝
- 3.4 ELF文件分析工具LIEF
- 3.3 strings
- 3.2 ldd
- 3.1 nm
- 第3章 二進制代碼信息的收集
- 2.3.3 進程的虛擬地址空間及其訪問
- 2.3.2 可執(zhí)行文件調(diào)度運行的過程
- 2.3.1 可執(zhí)行文件的裝載
- 2.3 程序的裝載與調(diào)度執(zhí)行
- 2.2.6 ELF文件的主要段
- 2.2.5 ELF文件的頭
- 2.2.4 位置無關(guān)代碼
- 2.2.3 可執(zhí)行文件的主要節(jié)
- 2.2.2 ELF文件的頭
- 2.2.1 ELF文件的兩種視圖
- 2.2 ELF文件格式
- 2.1.8 二進制代碼的生成舉例
- 2.1.7 gcc的常用環(huán)境變量
- 2.1.6 ld的常用選項
- 2.1.5 gcc的常用選項
- 2.1.4 鏈接階段
- 2.1.3 匯編階段
- 2.1.2 編譯階段
- 2.1.1 編譯預(yù)處理階段
- 2.1 二進制代碼的生成過程
- 第2章 二進制代碼生成
- 1.6.4 二進制代碼利用
- 1.6.3 漏洞利用
- 1.6.2 軟件漏洞
- 1.6.1 軟件錯誤
- 1.6 軟件錯誤、漏洞以及利用
- 1.5 二進制代碼安全性分析的主要步驟
- 1.4 二進制代碼安全性分析的重要性
- 1.3 什么是二進制代碼安全性分析
- 1.2 代碼安全
- 1.1 Linux系統(tǒng)安全
- 第1章 概述
- 前言
- 內(nèi)容簡介
- 版權(quán)信息
- 封面
- 封面
- 版權(quán)信息
- 內(nèi)容簡介
- 前言
- 第1章 概述
- 1.1 Linux系統(tǒng)安全
- 1.2 代碼安全
- 1.3 什么是二進制代碼安全性分析
- 1.4 二進制代碼安全性分析的重要性
- 1.5 二進制代碼安全性分析的主要步驟
- 1.6 軟件錯誤、漏洞以及利用
- 1.6.1 軟件錯誤
- 1.6.2 軟件漏洞
- 1.6.3 漏洞利用
- 1.6.4 二進制代碼利用
- 第2章 二進制代碼生成
- 2.1 二進制代碼的生成過程
- 2.1.1 編譯預(yù)處理階段
- 2.1.2 編譯階段
- 2.1.3 匯編階段
- 2.1.4 鏈接階段
- 2.1.5 gcc的常用選項
- 2.1.6 ld的常用選項
- 2.1.7 gcc的常用環(huán)境變量
- 2.1.8 二進制代碼的生成舉例
- 2.2 ELF文件格式
- 2.2.1 ELF文件的兩種視圖
- 2.2.2 ELF文件的頭
- 2.2.3 可執(zhí)行文件的主要節(jié)
- 2.2.4 位置無關(guān)代碼
- 2.2.5 ELF文件的頭
- 2.2.6 ELF文件的主要段
- 2.3 程序的裝載與調(diào)度執(zhí)行
- 2.3.1 可執(zhí)行文件的裝載
- 2.3.2 可執(zhí)行文件調(diào)度運行的過程
- 2.3.3 進程的虛擬地址空間及其訪問
- 第3章 二進制代碼信息的收集
- 3.1 nm
- 3.2 ldd
- 3.3 strings
- 3.4 ELF文件分析工具LIEF
- 3.4.1 安裝
- 3.4.2 基于LIEF對.got.plt表的攻擊舉例
- 3.4.3 基于LIEF將可執(zhí)行文件轉(zhuǎn)變?yōu)楣蚕韼煳募?/span>
- 3.5 ps
- 3.6 strace
- 3.7 ltrace
- 3.8 ROPgadget
- 3.9 ob jdump
- 3.10 readelf
- 3.11 GDB
- 3.11.1 GDB的初始化腳本文件
- 3.11.2 GDB的常用命令
- 3.11.3 GDB的常用命令示例
- 3.11.4 GDB命令的運行
- 3.11.5 GDB命令的擴充
- 3.11.6 PEDA基本使用
- 3.12 Pwntools
- 3.12.1 Pwntools的安裝
- 3.12.2 通過上下文設(shè)置目標(biāo)平臺
- 3.12.3 本地進程對象的創(chuàng)建
- 3.12.4 遠程進程對象的創(chuàng)建
- 3.12.5 ELF模塊
- 3.12.6 search方法
- 3.12.7 cyclic命令的功能
- 3.12.8 核心文件
- 3.12.9 數(shù)據(jù)轉(zhuǎn)換
- 3.12.10 struct模塊
- 3.12.11 shellcraft模塊
- 3.12.12 ROP模塊
- 3.12.13 GDB模塊
- 3.12.14 DynELF模塊
- 3.12.15 基于標(biāo)準(zhǔn)輸入/輸出的數(shù)據(jù)交互
- 3.12.16 基于命名管道的數(shù)據(jù)交互
- 3.12.17 腳本文件和被測目標(biāo)程序的交互
- 3.12.18 基于Python腳本文件的Pwntools應(yīng)用舉例
- 3.13 LibcSearcher
- 第4章 靜態(tài)二進制代碼分析
- 4.1 基于IDAPro的靜態(tài)分析
- 4.1.1 IDC腳本文件
- 4.1.2 IDAPython腳本文件
- 4.1.3 IDAPython腳本文件示例
- 4.1.4 IDAPro插件的編寫
- 4.2 基于Radare2 的靜態(tài)分析
- 4.2.1 r2 的常用命令
- 4.2.2 r2 常用命令示例
- 4.2.3 r2 對JSON格式數(shù)據(jù)的處理
- 4.2.4 基于r2pipe的腳本文件編寫
- 4.2.5 基于r2pipe的腳本文件執(zhí)行
- 第5章 二進制代碼脆弱性評估
- 5.1 常見二進制代碼脆弱性
- 5.1.1 棧溢出的原理
- 5.1.2 堆溢出的原理
- 5.2 基于系統(tǒng)工具對代碼脆弱性的評估
- 5.2.1 基于Clang Static Analyzer的安全檢測
- 5.2.2 Linux系統(tǒng)下堆安全的增強措施
- 5.3 基于Intel Pin的代碼脆弱性評估
- 5.3.1 插樁模式
- 5.3.2 插樁粒度
- 5.3.3 Intel Pintools的編寫
- 5.3.4 分析代碼的過濾
- 5.3.5 Pintools的生成
- 5.3.6 Pintools的測試
- 5.3.7 Pintools應(yīng)用示例:緩沖區(qū)溢出的檢測
- 5.4 基于符號執(zhí)行的代碼脆弱性評估
- 5.4.1 符號執(zhí)行的原理
- 5.4.2 符號執(zhí)行的優(yōu)、缺點
- 5.4.3 基于Angr的二進制代碼分析
- 5.5 基于污點分析的代碼脆弱性評估
- 5.5.1 污點分析原理
- 5.5.2 污點分析的分類
- 5.5.3 污點分析相關(guān)概念
- 5.5.4 基于Clang靜態(tài)分析儀的污點分析應(yīng)用
- 5.5.5 基于Pin的動態(tài)污點分析
- 5.6 基于模糊測試的代碼脆弱性評估
- 5.6.1 模糊測試的方式
- 5.6.2 內(nèi)存模糊測試
- 5.6.3 libFuzzer
- 第6章 二進制代碼漏洞利用
- 6.1 二進制代碼加固技術(shù)及其gcc編譯選項
- 6.1.1 二進制代碼保護措施的查看
- 6.1.2 去掉可執(zhí)行文件中的符號的方法
- 6.1.3 Linux中的NX機制
- 6.1.4 Canary棧保護
- 6.1.5 RELRO機制
- 6.1.6 地址空間布局隨機化
- 6.1.7 PIE保護機制
- 6.1.8 繞過PIE保護機制的方法
- 6.1.9 RPATH和RUNPATH
- 6.1.10 RPATH存在的安全問題
- 6.1.11 FORTIFY保護機制
- 6.1.12 ASCII-Armor地址映射保護機制
- 6.1.13 二進制代碼保護技術(shù)比較
- 6.2 緩沖區(qū)溢出漏洞的利用
- 6.2.1 ret2shellcode
- 6.2.2 ret2Libc攻擊
- 6.2.3 ret2plt
- 6.2.4.got表覆蓋技術(shù)
- 6.2.5 ROP攻擊
- 6.2.6 被測目標(biāo)程序的代碼被執(zhí)行多次的多階段攻擊
- 6.2.7 被測目標(biāo)程序的代碼被執(zhí)行一次的多階段攻擊
- 6.3 基于Angr的緩沖區(qū)溢出漏洞自動利用
- 6.3.1 任意讀
- 6.3.2 任意寫
- 6.3.3 任意跳轉(zhuǎn)
- 附錄A 數(shù)據(jù)對齊問題
- A.1 基本數(shù)據(jù)類型的對齊
- A.2 非標(biāo)準(zhǔn)(復(fù)雜)類型數(shù)據(jù)的對齊
- A.3 計算機的字節(jié)順序
- 附錄B 函數(shù)調(diào)用約定
- B.1 函數(shù)參數(shù)的傳遞
- B.2 函數(shù)的前導(dǎo)
- B.3 函數(shù)的后續(xù)
- 附錄C 棧幀原理
- C.1 什么是棧幀
- C.2 棧幀中的內(nèi)容有哪些
- C.3 棧幀內(nèi)容的具體示例
- C.4 棧幀對齊
- C.4.1 x86 系統(tǒng)下的棧幀對齊
- C.4.2 x86-64 系統(tǒng)下棧幀對齊
- C.4.3 棧幀中變量的對齊
- 附錄D 32位系統(tǒng)與64位系統(tǒng)中程序的區(qū)別
- D.1 數(shù)據(jù)類型大小的不同
- D.2 函數(shù)調(diào)用參數(shù)的傳遞方式不同
- D.3 程序裝載的基地址不同
- 附錄E 共享庫鏈接的路徑問題
- E.1 共享庫測試代碼
- E.1.1 共享庫頭文件
- E.1.2 共享庫函數(shù)定義文件
- E.1.3 共享庫測試文件
- E.2 共享庫文件的生成
- E.3 共享庫的鏈接
- E.4 共享庫的使用
- 附錄F 在多模塊中使用ld手動鏈接生成可執(zhí)行文件
- 附錄G 在C++程序中調(diào)用C 函數(shù)的問題
- G.1 C與C++程序的內(nèi)存分配
- G.2 符號改編問題
- G.3 符號改編問題的解決辦法
- G.4 C++名字空間的問題
- 附錄H Linux死機的處理
- 附錄I Python文件默認的開頭注釋格式 更新時間:2023-09-07 18:32:03