注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)操作系統(tǒng)WindowsWindows PE權(quán)威指南:剖析Windows PE文件格式的原理及編程技術(shù)

Windows PE權(quán)威指南:剖析Windows PE文件格式的原理及編程技術(shù)

Windows PE權(quán)威指南:剖析Windows PE文件格式的原理及編程技術(shù)

定 價:¥89.00

作 者: 戚利 著
出版社: 機械工業(yè)出版社
叢編項:
標(biāo) 簽: WINDOWS

ISBN: 9787111354185 出版時間: 2011-10-01 包裝: 平裝
開本: 16開` 頁數(shù): 657 字?jǐn)?shù):  

內(nèi)容簡介

  內(nèi)容全面,詳盡地剖析了WindowsPE文件格式的原理及其編程技術(shù),涉及安全領(lǐng)域的各個方面和Windows系統(tǒng)的進(jìn)程管理和底層機制;實戰(zhàn)性強,以案例驅(qū)動的方式講解了WindowsPE文件格式在加密與解密、軟件漢化、逆向工程、反病毒等安全領(lǐng)域的應(yīng)用,不僅每個知識點都配有小案例,而且還有多個完整的商業(yè)案例。 戚利編著的《WindowsPE權(quán)威指南》共分為三大部分:第一部分簡單介紹了學(xué)習(xí)本書需要搭建的工作環(huán)境和必須具備的工具,深入分析了PE文件頭、導(dǎo)入表、導(dǎo)出表、重定位表、資源表、延遲導(dǎo)入表、線程局部存儲、加載配置信息等核心技術(shù)的概念、原理及其編程方法,有針對性地講解了程序設(shè)計中的重定位、程序堆棧、動態(tài)加載等;第二部分討論了PE頭部的變形技術(shù)及靜態(tài)附加補丁的技術(shù),其中靜態(tài)附加補丁技術(shù)重點講解了如何在空閑空間、間隙、新節(jié)、最后一節(jié)四種情況下打補丁和進(jìn)行編碼的方法;第三部分精心編寫了多個大型而完整的PE應(yīng)用案例,以PE補丁作為重要手段,通過對目標(biāo)PE文件實施不同的補丁內(nèi)容來實現(xiàn)不同的應(yīng)用,詳細(xì)展示了EXE捆綁器、軟件安裝自動化、EXE加鎖器、EXE加密、PE病毒提示器以及PE解毒的實現(xiàn)過程和方法。 《WindowsPE權(quán)威指南》不僅適合想深入理解Windows系統(tǒng)進(jìn)程管理和運作機制的讀者,而且還適合從事加密與解密、軟件漢化、逆向工程、反病毒工作的安全工作者。此外,它還適合想全面了解WindowsPE文件結(jié)構(gòu)和對程序字節(jié)碼感興趣的讀者。

作者簡介

暫缺《Windows PE權(quán)威指南:剖析Windows PE文件格式的原理及編程技術(shù)》作者簡介

圖書目錄

前言
第一部分 pe的原理和基礎(chǔ)

第1章 windows pe 開發(fā)環(huán)境
1.1 開發(fā)語言masm32
1.1.1 設(shè)置開發(fā)環(huán)境
1.1.2 開發(fā)第一個源程序helloworld.asm
1.1.3 運行helloworld.exe
1.2 調(diào)試軟件ollydbg
1.2.1 調(diào)試helloworld.exe
1.2.2 修改exe文件字節(jié)碼
1.3 十六進(jìn)制編輯軟件flexhex
1.4 破解實例:u盤監(jiān)控器
1.5 初識pe文件
1.6 小結(jié)

第2章 三個小工具的編寫
2.1 構(gòu)造基本窗口程序
2.1.1 構(gòu)造窗口界面
2.1.2 編寫相關(guān)的資源文件
2.1.3 通用程序框架的實現(xiàn)
.2.2 pedump的實現(xiàn)
2.2.1 編程思路
2.2.2 pedump編碼
2.2.3 pedump代碼中的數(shù)據(jù)結(jié)構(gòu)
2.2.4 運行pedump
2.3 pecomp的實現(xiàn)
2.3.1 編程思路
2.3.2 定義資源文件
2.3.3 pecomp編碼
2.3.4 運行pecomp
2.4 peinfo的實現(xiàn)
2.4.1 編程思路
2.4.2 peinfo編碼
2.4.3 運行peinfo
2.5 小結(jié)

第3章 pe文件頭
3.1 pe的數(shù)據(jù)組織方式
3.2 與pe有關(guān)的基本概念
3.2.1 地址
3.2.2 指針
3.2.3 數(shù)據(jù)目錄
3.2.4 節(jié)
3.2.5 對齊
3.2.6 unicode字符串
3.3 pe文件結(jié)構(gòu)
3.3.1 16位系統(tǒng)下的pe結(jié)構(gòu)
3.3.2 32位系統(tǒng)下的pe結(jié)構(gòu)
3.3.3 程序員眼中的pe結(jié)構(gòu)
3.4 pe文件頭部解析
3.4.1 dos mz頭image_dos_header
3.4.2 pe頭標(biāo)識signature
3.4.3 標(biāo)準(zhǔn)pe頭image_file_header
3.4.4 擴展pe頭image_optional_header32
3.4.5 pe頭image_nt_headers
3.4.6 數(shù)據(jù)目錄項image_data_directory
3.4.7 節(jié)表項image_section_header
3.5 數(shù)據(jù)結(jié)構(gòu)字段詳解
3.5.1 pe頭image_nt_header的字段
3.5.2 標(biāo)準(zhǔn)pe頭iamge_file_header的字段
3.5.3 擴展pe頭image_optional_header32的字段
3.5.4 數(shù)據(jù)目錄項image_data_directory的字段
3.5.5 節(jié)表項image_section_header的字段
3.5.6 解析helloworld程序的字節(jié)碼
3.6 pe內(nèi)存映像
3.7 pe文件頭編程
3.7.1 rva與foa的轉(zhuǎn)換
3.7.2 數(shù)據(jù)定位
3.7.3 標(biāo)志位操作
3.7.4 pe校驗和
3.8 小結(jié)

第4章 導(dǎo)入表
4.1 何謂導(dǎo)入表
4.2 導(dǎo)入函數(shù)
4.2.1 invoke指令分解
4.2.2 導(dǎo)入函數(shù)地址
4.2.3 導(dǎo)入函數(shù)宿主
4.3 pe中的導(dǎo)入表
4.3.1 導(dǎo)入表定位
4.3.2 導(dǎo)入表描述符image_import_descriptor
4.3.3 導(dǎo)入表的雙橋結(jié)構(gòu)
4.3.4 導(dǎo)入函數(shù)地址表
4.3.5 構(gòu)造調(diào)用同一個dll文件的多個函數(shù)的導(dǎo)入表
4.4 導(dǎo)入表編程
4.4.1 導(dǎo)入表遍歷的思路
4.4.2 編寫函數(shù)_getimportinfo
4.4.3 運行測試
4.5 綁定導(dǎo)入
4.5.1 綁定導(dǎo)入機制
4.5.2 綁定導(dǎo)入數(shù)據(jù)定位
4.5.3 綁定導(dǎo)入數(shù)據(jù)結(jié)構(gòu)
4.5.4 綁定導(dǎo)入實例分析
4.6 手工重組導(dǎo)入表
4.6.1 常用注冊表api
4.6.2 構(gòu)造目標(biāo)指令
4.6.3 pe頭部變化
4.6.4 手工重組
4.6.5 程序?qū)崿F(xiàn)
4.6.6 思考:關(guān)于iat的連貫性
4.6.7 思考:關(guān)于導(dǎo)入表的位置
4.7 小結(jié)

第5章 導(dǎo)出表
5.1 導(dǎo)出表的作用
5.1.1 分析動態(tài)鏈接庫功能
5.1.2 獲得導(dǎo)出函數(shù)地址
5.2 構(gòu)造含導(dǎo)出表的pe文件
5.2.1 dll源代碼
5.2.2 編寫def文件
5.2.3 編譯和鏈接
5.2.4 編寫頭文件
5.2.5 使用導(dǎo)出函數(shù)
5.3 導(dǎo)出表數(shù)據(jù)結(jié)構(gòu)
5.3.1 導(dǎo)出表定位
5.3.2 導(dǎo)出目錄image_export_directory
5.3.3 導(dǎo)出表實例分析
5.4 導(dǎo)出表編程
5.4.1 根據(jù)編號查找函數(shù)地址
5.4.2 根據(jù)名字查找函數(shù)地址
5.4.3 遍歷導(dǎo)出表
5.5 導(dǎo)出表的應(yīng)用
5.5.1 導(dǎo)出函數(shù)覆蓋
5.5.2 導(dǎo)出私有函數(shù)
5.6 小結(jié)
第6 章 棧與重定位表
6.1 棧
6.1.1 棧的應(yīng)用場合
6.1.2 call調(diào)用中的棧實例分析
6.1.3 棧溢出
6.2 代碼重定位
6.2.1 重定位的提出
6.2.2 實現(xiàn)重定位的方法
6.2.3 重定位編程
6.3 pe文件頭中的重定位表
6.3.1 重定位表定位
6.3.2 重定位表項image_base_relocation
6.3.3 重定位表的結(jié)構(gòu)
6.3.4 遍歷重定位表
6.3.5 重定位表實例分析
6.4 小結(jié)

第7章 資源表
7.1 資源分類
7.1.1 位圖、光標(biāo)、圖標(biāo)資源
7.1.2 菜單資源
7.1.3 對話框資源
7.1.4 自定義資源
7.2 pe資源表組織
7.2.1 資源表的組織方式
7.2.2 資源表數(shù)據(jù)定位
7.2.3 資源目錄頭image_resource_directory
7.2.4 資源目錄項image_resource_directory_entry
7.2.5 資源數(shù)據(jù)項image_resource_data_entry
7.2.6 三級結(jié)構(gòu)中目錄項的區(qū)別
7.3 資源表遍歷
7.4 pe資源深度解析
7.4.1 資源腳本
7.4.2 使用peinfo分析資源表
7.4.3 菜單資源解析
7.4.4 圖標(biāo)資源解析
7.4.5 圖標(biāo)組資源解析
7.4.6 對話框資源解析
7.5 資源表編程
7.5.1 更改圖標(biāo)實驗
7.5.2 提取程序圖標(biāo)實例
7.5.3 更改程序圖標(biāo)實例
7.6 小結(jié)

第8章 延遲加載導(dǎo)入表
8.1 延遲加載導(dǎo)入的概念及其作用
8.1.1 提高應(yīng)用程序加載速度
8.1.2 提高應(yīng)用程序兼容性
8.1.3 提高應(yīng)用程序可整合性
8.2 pe中的延遲加載導(dǎo)入表
8.2.1 延遲加載導(dǎo)入表數(shù)據(jù)定位
8.2.2 延遲加載導(dǎo)入描述符image_delay_import_descriptor
8.2.3 延遲加載導(dǎo)入表實例分析
8.3 延遲加載導(dǎo)入機制詳解
8.4 延遲加載導(dǎo)入編程
8.4.1 修改資源文件pe.rc
8.4.2 修改源代碼pe.asm
8.5 關(guān)于延遲加載導(dǎo)入的兩個問題
8.5.1 異常處理
8.5.2  dll的卸載
8.6 小結(jié)

第9章 線程局部存儲
9.1 windows進(jìn)程與線程
9.1.1 windows體系結(jié)構(gòu)
9.1.2 進(jìn)程與線程創(chuàng)建
9.1.3 進(jìn)程環(huán)境塊peb
9.1.4 線程環(huán)境塊teb
9.2 什么是線程局部存儲
9.3 動態(tài)線程局部存儲
9.3.1 動態(tài)tls實例
9.3.2 獲取索引tlsalloc
9.3.3 按索引取值tlsgetvalue
9.3.4 按索引存儲tlssetvalue
9.3.5 釋放索引tlsfree
9.4 靜態(tài)線程局部存儲
9.4.1 tls定位
9.4.2 tls目錄結(jié)構(gòu)image_tls_directory32
9.4.3 靜態(tài)tls實例分析
9.4.4 tls回調(diào)函數(shù)
9.4.5 測試靜態(tài)tls下的線程存儲初始化回調(diào)函數(shù)
9.5 小結(jié)

第10章 加載配置信息
10.1 何謂加載配置信息
10.2 windows結(jié)構(gòu)化異常處理
10.2.1 什么是seh
10.2.2 windows異常分類
10.2.3 內(nèi)核模式下的異常處理
10.2.4 用戶模式下的異常處理
10.2.5 windows seh機制解析
10.2.6 seh編程實例
10.3 pe中的加載配置信息
10.3.1 加載配置信息定位
10.3.2 加載配置目錄image_load_config_directory
10.3.3 加載配置信息實例分析
10.4 加載配置編程
10.4.1 程序源代碼分析
10.4.2 為pe添加加載配置信息
10.4.3 運行測試
10.4.4 注冊多個異常處理函數(shù)示例
10.5 小結(jié)

第11章 動態(tài)加載技術(shù)
11.1 windows虛擬地址空間分配
11.1.1 用戶態(tài)低2gb空間分配
11.1.2 核心態(tài)高2gb空間分配
11.1.3 helloworld進(jìn)程空間分析
11.2 windows動態(tài)庫技術(shù)
11.2.1  dll靜態(tài)調(diào)用
11.2.2  dll動態(tài)調(diào)用
11.2.3 導(dǎo)出函數(shù)起始地址實例
11.3 在編程中使用動態(tài)加載技術(shù)
11.3.1 獲取kernel32.dll基地址
11.3.2 獲取getprocaddress地址
11.3.3 在代碼中使用獲取的函數(shù)地址編程
11.3.4 動態(tài)api技術(shù)編程實例
11.4 小結(jié)
第二部分 pe進(jìn)階

第12章 pe變形技術(shù)
12.1 變形技術(shù)的分類
12.1.1 結(jié)構(gòu)重疊技術(shù)
12.1.2 空間調(diào)整技術(shù)
12.1.3 數(shù)據(jù)轉(zhuǎn)移技術(shù)
12.1.4 數(shù)據(jù)壓縮技術(shù)
12.2 變形技術(shù)可用的空間
12.2.1 文件頭部未用的字段
12.2.2 大小不固定的數(shù)據(jù)塊
12.2.3 因?qū)R產(chǎn)生的補足空間
12.3 pe文件變形原則
12.3.1 關(guān)于數(shù)據(jù)目錄表
12.3.2 關(guān)于節(jié)表
12.3.3 關(guān)于導(dǎo)入表
12.3.4 關(guān)于程序數(shù)據(jù)
12.3.5 關(guān)于對齊
12.3.6 幾個關(guān)注的字段
12.4 將pe變小的實例helloworldpe
12.4.1 源程序helloworld的字節(jié)碼(2560字節(jié))
12.4.2 目標(biāo)pe文件的字節(jié)碼(432字節(jié))
12.5 打造目標(biāo)pe的步驟
12.5.1 對文件頭的處理
12.5.2 對代碼段的處理
12.5.3 對導(dǎo)入表的處理
12.5.4 對部分字段值的修正
12.5.5 修改后的文件結(jié)構(gòu)
12.5.6 修改后的文件分析
12.5.7 目標(biāo)文件更小的實例分析
12.6 小結(jié)

第13章 pe補丁技術(shù)
13.1 動態(tài)補丁
13.1.1 進(jìn)程間的通信機制
13.1.2 讀寫進(jìn)程內(nèi)存
13.1.3 目標(biāo)進(jìn)程枚舉
13.1.4 執(zhí)行遠(yuǎn)程線程
13.2 靜態(tài)補丁
13.2.1 整體替換pe文件
13.2.2 整體替換dll文件
13.2.3 部分修改pe文件
13.3 嵌入補丁程序
13.3.1 嵌入補丁程序框架
13.3.2 嵌入補丁程序編寫規(guī)則
13.3.3 嵌入補丁字節(jié)碼實例分析
13.4 萬能補丁碼
13.4.1 原理
13.4.2 源代碼
13.4.3 字節(jié)碼
13.4.4 運行測試
13.5 小結(jié)

第14章 在pe空閑空間中插入程序
14.1 什么是 pe空閑空間
14.1.1 pe文件中的可用空間
14.1.2 獲取pe文件可用空間的代碼
14.1.3 獲取pe文件可用空間的測試
14.2 添加注冊表啟動項的補丁程序?qū)嵗?
14.2.1 補丁程序的源代碼
14.2.2 補丁程序的字節(jié)碼
14.2.3 目標(biāo)pe的字節(jié)碼
14.3 手工打造目標(biāo)pe的步驟
14.3.1 基本思路
14.3.2 對代碼段的處理
14.3.3 對導(dǎo)入表的處理
14.3.4 對數(shù)據(jù)段的處理
14.3.5 修改前后pe文件對比
14.4 開發(fā)補丁工具
14.4.1 編程思路
14.4.2 數(shù)據(jù)結(jié)構(gòu)分析
14.4.3 運行測試
14.4.4 適應(yīng)性測試實例分析
14.5 小結(jié)

第15章 在pe間隙中插入程序
15.1 什么是pe間隙
15.1.1 構(gòu)造間隙一
15.1.2 間隙一與參數(shù)
15.2 插入helloworld的補丁程序?qū)嵗?
15.2.1 補丁程序字節(jié)碼
15.2.2 目標(biāo)pe結(jié)構(gòu)
15.3 開發(fā)補丁工具
15.3.1 編程思路
15.3.2 數(shù)據(jù)結(jié)構(gòu)分析
15.3.3 主要代碼
15.3.4 運行測試
15.4 存在綁定導(dǎo)入數(shù)據(jù)的pe補丁程序?qū)嵗?
15.4.1 改進(jìn)補丁程序
15.4.2 修正補丁工具
15.4.3 為記事本程序打補丁
15.5 小結(jié)

第16章 在pe新增節(jié)中插入程序
16.1 新增pe節(jié)的方法
16.2 在本地建立子目錄的補丁程序?qū)嵗?
16.2.1 補丁程序源代碼
16.2.2 目標(biāo)pe結(jié)構(gòu)
16.3 開發(fā)補丁工具
16.3.1 編程思路
16.3.2 為變量賦值
16.3.3 構(gòu)造新文件數(shù)據(jù)
16.3.4 修正字段參數(shù)
16.3.5 主要代碼
16.3.6 運行測試
16.4 小結(jié)

第17章 在pe最后一節(jié)中插入程序
17.1 網(wǎng)絡(luò)文件下載器補丁程序?qū)嵗?
17.1.1 用到的api函數(shù)
17.1.2 補丁功能的預(yù)演代碼
17.1.3 補丁程序的源代碼
17.1.4 目標(biāo)pe結(jié)構(gòu)
17.2 開發(fā)補丁工具
17.2.1 編程思路
17.2.2 主要代碼
17.2.3 運行測試
17.3 小結(jié)
第三部分 pe的應(yīng)用案例

第18章 exe捆綁器
18.1 基本思路
18.2 exe執(zhí)行調(diào)度機制
18.2.1 相關(guān)api函數(shù)
18.2.2 控制進(jìn)程同步運行實例分析
18.3 字節(jié)碼轉(zhuǎn)換工具h(yuǎn)ex2db
18.3.1 hex2db源代碼
18.3.2 運行測試
18.4 執(zhí)行調(diào)度程序_host.exe
18.4.1 主要代碼
18.4.2 數(shù)據(jù)結(jié)構(gòu)分析
18.5 宿主程序host.exe
18.5.1 宿主程序的功能
18.5.2 宿主程序的狀態(tài)
18.5.3 遍歷文件
18.5.4 釋放文件
18.5.5 宿主程序主函數(shù)
18.6 exe捆綁器bind.exe
18.6.1 綁定列表定位
18.6.2 捆綁步驟及主要代碼
18.6.3 測試運行
18.7 小結(jié)

第19章 軟件安裝自動化
19.1 基本思路
19.2 補丁程序patch.exe
19.2.1 相關(guān)api函數(shù)
19.2.2 執(zhí)行線程函數(shù)
19.2.3 簡單測試
19.3 消息發(fā)送器_message.exe
19.3.1 窗口枚舉回調(diào)函數(shù)
19.3.2 調(diào)用窗口枚舉函數(shù)
19.3.3 向指定窗口發(fā)送消息
19.3.4 消息發(fā)送器源代碼
19.3.5 測試運行
19.4 消息發(fā)送器生成工廠messagefactory.exe
19.4.1 消息發(fā)送函數(shù)
19.4.2 鍵盤虛擬碼
19.4.3 改進(jìn)的消息發(fā)送器實例分析
19.4.4 消息發(fā)送器生成工廠代碼結(jié)構(gòu)
19.4.5 代碼與數(shù)據(jù)的定位
19.4.6 提取代碼字節(jié)碼
19.5 軟件安裝自動化主程序autosetup.exe
19.5.1 主要代碼
19.5.2 測試運行
19.6 小結(jié)

第20章 exe加鎖器
20.1 基本思路
20.2 免資源文件的窗口程序nores.asm
20.2.1 窗口創(chuàng)建函數(shù)createwindowex
20.2.2 創(chuàng)建用戶登錄窗口的控件
20.2.3 窗口程序源代碼
20.3 免重定位的窗口程序login.asm
20.4 補丁程序patch.asm
20.4.1 獲取導(dǎo)入庫及函數(shù)
20.4.2 按照補丁框架修改login.asm
20.4.3 補丁程序主要代碼
20.5 附加補丁運行
20.6 小結(jié)

第21章  exe加密
21.1 基本思路
21.2 加密算法
21.2.1 加密算法的分類
21.2.2 自定義可逆加密算法實例
21.2.3 構(gòu)造加密基表
21.2.4 利用基表測試加密數(shù)據(jù)
21.3 開發(fā)補丁工具
21.3.1 轉(zhuǎn)移數(shù)據(jù)目錄
21.3.2 傳遞程序參數(shù)
21.3.3 加密節(jié)區(qū)內(nèi)容
21.4 處理補丁程序
21.4.1 還原數(shù)據(jù)目錄表
21.4.2 解密節(jié)區(qū)內(nèi)容
21.4.3 加載目標(biāo)dll
21.4.4 修正目標(biāo)iat
21.5 小結(jié)

第22章 pe病毒提示器
22.1 基本思路
22.1.1 志愿者的選擇條件
22.1.2 判斷病毒感染的原理
22.2 手工打造pe病毒提示器
22.2.1 編程思路
22.2.2 分析目標(biāo)文件的導(dǎo)入表
22.2.3 補丁程序的源代碼
22.2.4 補丁程序的字節(jié)碼
22.2.5 修正函數(shù)地址
22.2.6 測試運行
22.3 補丁版的pe病毒提示器
22.3.1 將提示器寫入啟動項
22.3.2 檢測特定位置校驗和
22.3.3 測試運行
22.4 小結(jié)

第23章 破解pe病毒
23.1 病毒保護技術(shù)
23.1.1 花指令
23.1.2 反跟蹤技術(shù)
23.1.3 反調(diào)試技術(shù)
23.1.4 自修改技術(shù)
23.1.5 注冊表項保護技術(shù)
23.1.6 進(jìn)程保護技術(shù)
23.2 pe病毒補丁程序解析
23.2.1 病毒特征
23.2.2 補丁程序的源代碼分析
23.2.3 病毒傳播測試
23.2.4 感染前后pe結(jié)構(gòu)對比
23.3 解毒代碼的編寫
23.3.1 基本思路
23.3.2 計算病毒代碼大小
23.3.3 獲取原始入口地址
23.3.4 修正pe頭部的其他參數(shù)
23.3.5 主要代碼
23.3.6 運行測試
23.4 小結(jié)
后記

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號