前言
基礎篇 初級免殺技術
第1章 變臉
1.1 為何變臉
1.2 何為變臉
1.3 免殺的發展史
1.4 免殺技術的簡單原理
1.5 免殺與其他技術的區彆
1.5.1 免殺不是Rootkit技術
1.5.2 免殺不是加密解密技術
1.6 小結
第2章 免殺基礎知識
2.1 如何開始免殺
2.2 反病毒軟件原理與反病毒技術介紹
2.2.1 反病毒軟件的工作原理
2.2.2 基於文件掃描的反病毒技術
2.2.3 基於內存掃描的反病毒技術
2.2.4 基於行為監控的反病毒技術
2.2.5 基於新興技術的反病毒技術
2.2.6 反病毒技術前沿
2.2.7 反病毒技術展望
2.3 瞭解PE文件
2.3.1 什麼是PE文件
2.3.2 PE文件的結構
2.4 免殺原理
2.4.1 文件免殺原理
2.4.2 內存免殺原理
2.4.3 行為免殺原理
2.5 工具脫殼技巧
2.5.1 殼的分類
2.5.2 免殺與脫殼是什麼關係
2.5.3 使用專用脫殼工具脫殼
2.5.4 使用通用脫殼工具脫殼
2.6 小結
第3章 免殺與特徵碼
3.1 特徵碼免殺技術
3.1.1 理想狀態下的免殺
3.1.2 由腳本木馬免殺理解特徵碼
3.2 特徵碼定位原理
3.2.1 特徵碼逐塊填充定位原理
3.2.2 特徵碼逐塊暴露定位原理
3.2.3 特徵碼混閤定位原理
3.3 腳本木馬定位特徵碼
3.4 MyCCL查找文件特徵碼
3.4.1 MyCCL的典型應用
3.4.2 針對MyCCL的一點思考
3.5 MyCCL查找內存特徵碼
3.6 特徵碼修改方法
3.6.1 簡單的特徵碼修改
3.6.2 特徵碼修改進階
3.7 小結
第4章 其他免殺技術
4.1 修改入口點免殺
4.2 使用VMProtect加密
4.3 Overlay附加數據的處理及應用
4.4 驅動程序免殺修改技巧
4.4.1 驅動程序的常見免殺方法
4.4.2 驅動程序的手工免殺思路
4.5 補丁在免殺中的應用
4.6 PE文件進階介紹
4.6.1 PE文件格式
4.6.2 虛擬內存的簡單介紹
4.6.3 PE文件的內存映射
4.7 網頁木馬的免殺
4.7.1 腳本木馬免殺
4.7.2 網頁掛馬的免殺
4.8 小結
第5章 花指令與免殺
5.1 什麼是花指令
5.2 腳本木馬的花指令應用
5.3 花指令的根基-匯編語言
5.3.1 認識匯編
5.3.2 通過反匯編添加任意功能
5.4 花指令入門
5.5 花指令在免殺領域的應用
5.5.1 花指令的應用技巧
5.5.2 花指令的修改技巧簡介
5.5.3 空白區域尋找與加空白區段
5.6 花指令的高級應用
5.6.1 花指令的提取與快速應用
5.6.2 SEH異常的應用
5.7 小結
第6章 殼在免殺中的應用
6.1 殼的基礎知識
6.2 殼在免殺領域的應用
6.2.1 加殼的免殺原理
6.2.2 FreeRes多重加殼
6.3 殼的修改技巧
6.3.1 殼的初級修改
6.3.2 製作通用補丁
6.4 小結
高級篇 免殺技術進階
第7章 PE文件格式詳解
7.1 MS-DOS頭
7.1.1 重要字段
7.1.2 其他字段
7.2 PE文件頭
7.2.1 Signature字段
7.2.2 IMAGE_FILE_HEADER結構
7.2.3 IMAGE_OPTIONAL_HEADER結構(x86/x64)
7.2.4 數據目錄錶
7.3 區段錶
7.3.1 IMAGE_SECTION_HEADER結構
7.3.2 區段名功能約定
7.3.3 區段對齊詳解
7.3.4 地址轉換
7.4 導齣錶
7.4.1 IMAGE_EXPORT_DIRECTORY結構
7.4.2 識彆導齣錶
7.5 導入錶
7.5.1 IMAGE_IMPORT_DESCRIPTOR結構
7.5.2 識彆導入錶
7.6 資源
7.6.1 資源結構
7.6.2 識彆資源
7.7 異常
7.8 安全
7.8.1 安全目錄結構
7.8.2 識彆安全結構
7.9 基址重定位
7.9.1 基址重定位錶結構
7.9.2 識彆基址重定位錶
7.10 調試
7.11 特殊結構數據(版權)
7.12 全局指針
7.13 TLS
7.13.1 TLS的迴調函數
7.13.2 TLS的結構(x86/x64)
7.13.3 識彆TLS
7.14 載入配置(x86/x64)
7.15 綁定導入錶
7.15.1 綁定導入錶結構
7.15.2 識彆綁定導入錶
7.16 導入地址錶
7.17 延遲加載錶
7.17.1 延遲加載錶結構
7.17.2 識彆延遲加載錶
7.18 COM描述符
7.19 小結
第8章 PE文件知識在免殺中的應用
8.1 PE文件與免殺思路
8.1.1 移動PE文件頭位置免殺
8.1.2 導入錶移動免殺
8.1.3 導齣錶移動免殺
8.2 PE文件與反啓發式掃描
8.2.1 最後一個區段為代碼段
8.2.2 可疑的區段頭部屬性
8.2.3 可疑的PE選項頭的有效尺寸值
8.2.4 可疑的代碼節名稱
8.2.5 多個PE頭部
8.2.6 導入錶項存在可疑導入
8.3 一個稍顯復雜的例子-隱藏導入錶
8.3.1 操作原理與先決條件
8.3.2 修改PE文件
8.3.3 構造我們的反匯編代碼
8.4 小結
第9章 軟件逆嚮工程
9.1 準備工作
9.1.1 要準備的工具及基礎知識
9.1.2 程序是從哪裏開始運行的
9.2 一個簡單的小例子
9.3 函數識彆初探
9.4 if-else分支
9.4.1 以常量為判斷條件的簡單if-else分支
9.4.2 以變量為判斷條件的簡單if-else分支
9.4.3 以常量為判斷條件的復雜if-else分支
9.4.4 以變量為判斷條件的復雜if-else分支
9.4.5 識彆三目運算符
9.5 循環分支
9.5.1 do-while循環
9.5.2 while循環
9.5.3 for循環
9.5.4 循環體的語句外提優化
9.6 switch-case分支
9.6.1 簡單switch-case分支識彆技巧
9.6.2 復雜分支的switch-case識彆
9.6.3 switch-case分支結構與稀疏矩陣
9.6.4 switch-case分支結構與平衡二叉樹
9.7 加法與減法的識彆與優化原理
9.7.1 加法的識彆與優化
9.7.2 減法的識彆與優化
9.8 乘法與除法的識彆與優化原理
9.8.1 乘法的位移優化
9.8.2 乘法的lea指令優化
9.8.3 除法與倒數相乘
9.8.4 倒數相乘與定點運算的配閤
9.8.5 除法運算的識彆與優化
9.8.6 取模運算的識彆與優化
9.9 指針與數組
9.9.1 指針與數組的淵源
9.9.2 數組的不同錶達方式
9.10 數組、結構體與對象
9.10.1 數組與結構體
9.10.2 結構體與類
9.11 變量作用域的識彆
9.12 識彆構造與析構函數
9.12.1 快速識彆齣類
9.12.2 識彆構造函數
9.12.3 識彆析構函數
9.13 虛函數與純虛函數的識彆
9.13.1 識彆簡單的虛函數
9.13.2 識彆較復雜的虛函數
9.14 正確識彆類的繼承關係
9.15 最後一役
9.15.1 MFC逆嚮初探
9.15.2 分析BypassUAC.exe
9.16 小結
第10章 源碼級免殺
10.1 怎樣定位産生特徵的源代碼
10.1.1 定位文件特徵
10.1.2 定位行為特徵
10.2 基於源碼的特徵修改
10.2.1 變換編譯器與編譯選項
10.2.2 添加垃圾代碼
10.2.3 語法變換
10.2.4 添加匯編花指令
10.3 小結
第11章 詳解C++殼的編寫
11.1 瞭解殼的運行流程
11.2 設計一個純C++編寫的殼
11.2.1 用C++編寫的殼應該是什麼樣的
11.2.2 編寫過程中會遇到的問題
11.3 用C++寫一個簡單的殼
11.3.1 配置工程
11.3.2 編寫Stub部分
11.3.3 編寫加殼部分
11.3.4 編寫界麵部分
11.4 設計一個由C++編寫的專業殼
11.4.1 為問題找到答案
11.4.2 設計專業殼的框架
11.4.3 如何設計Stub部分
11.4.4 如何設計加殼部分
11.4.5 需要注意的細節問題
11.5 怎樣調試由C++編寫的Stub部分
11.6 小結
第12章 黑客是怎樣打造免殺殼的
12.1 免殺殼與加密殼的異同
12.2 導入錶加密
12.3 代碼混淆與代碼亂序
12.4 附加驅動
12.5 小結
第13章 脫殼技術
13.1 尋找OEP
13.1.1 利用內存斷點
13.1.2 利用堆棧平衡
13.1.3 利用編譯語言特點
13.1.4 利用跨區段跳轉
13.2 轉儲內存映像
13.3 重建導入錶
13.3.1 導入錶重建原理
13.3.2 使用ImportREC重建導入錶
13.4 小結
第14章 Rootkit基礎
14.1 構建一個Rootkit基礎環境
14.1.1 構建開發環境
14.1.2 構建基於Visual Studio 2012的調試環境
14.1.3 構建基於WinDbg的調試環境
14.1.4 將Rootkit加載到係統
14.1.5 創建一個簡單的驅動並調試
14.2 何為Ring0層
14.3 關鍵錶
14.4 內存分頁
14.4.1 地址轉譯
14.4.2 內存訪問檢查
14.4.3 Windows對重要錶的保護
14.5 內存描述符錶
14.6 中斷描述符錶(IDT)
14.7 係統服務調度錶
14.8 控製寄存器
14.8.1 利用CR0禁用內存保護機製
14.8.2 其他控製寄存器
14.9 小結
第15章 Rootkit在免殺中的應用
15.1 用戶模式Rootkit
15.1.1 DLL遠程注入技巧
15.1.2 內聯鈎子
15.1.3 導入地址錶鈎子
15.1.4 一個保護文件不被刪除的例子
15.2 內核編程基礎
15.2.1 內核編程環境與用戶層編程環境的異同
15.2.2 如何選擇Windows驅動開發模型
15.2.3 驅動設備與請求處理
15.2.4 內核編程中的數據類型
15.2.5 函數調用
15.2.6 Windows內核編程的特點
15.3 內核模式Rootkit
15.3.1 SYSENTER鈎子
15.3.2 SSDT鈎子
15.3.3 內聯鈎子
15.3.4 IRP鈎子
15.3.5 LADDR鈎子
15.3.6 IDT鈎子
15.3.7 IOAPIC鈎子
15.4 小結
第16章 免殺技術前沿
16.1 免殺技術的發展趨勢
16.2 免殺前沿之突破主動防禦
16.2.1 “移花接木”之屏幕截圖突破主動防禦
16.2.2 “暗渡陳倉”之利用可信進程突破主動防禦
16.2.3 “釜底抽薪”之利用係統進程突破主動防禦
16.2.4 “順手牽羊”之利用邏輯漏洞突破主動防禦
16.2.5 “渾水摸魚”之利用變形復製突破主動防禦
16.2.6 “金蟬脫殼”之利用異同逃逸虛擬機
16.2.7 “藉屍還魂”之利用替換文件突破主動防禦
16.2.8 “藉刀殺人”之利用調試接口突破主動防禦
16.3 黑客免殺技術的展望
16.4 小結
擴展篇 遏製免殺技術初探
第17章 淺談部分免殺技巧的遏製
17.1 盯緊PE文件
17.2 盯緊程序行為
17.3 小結
第18章 反特徵碼定位
18.1 釋放乾擾碼
18.2 定位行為的判定
18.3 設定“靶特徵碼”
18.4 小結
第19章 遏製免殺與Anti Rootkit
19.1 適當的監控
19.2 基本檢測邏輯
19.3 Rootkit檢測方法初探
19.4 小結
第20章 淺談反病毒産品的改進
20.1 雲查殺與本地查殺緊密結閤
20.2 注重感染型病毒木馬的清除工作
20.3 精進啓發式掃描解決效率問題
20.4 小結
附錄A 80x86匯編基礎知識
· · · · · · (
收起)