登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書

『簡體書』逆向工程核心原理

書城自編碼: 3643643
分類:簡體書→大陸圖書→計算機/網絡软件工程/开发项目管理
作者: [韩]李承远 著
國際書號(ISBN): 9787115350183
出版社: 人民邮电出版社
出版日期: 2021-06-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:HK$ 162.3

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
共享现实:是什么让我们成为人类
《 共享现实:是什么让我们成为人类 》

售價:HK$ 153.6
女佣异闻:乙一出道25周年纪念短篇集
《 女佣异闻:乙一出道25周年纪念短篇集 》

售價:HK$ 59.9
生活观察图鉴 中国常见鸟类观察图鉴
《 生活观察图鉴 中国常见鸟类观察图鉴 》

售價:HK$ 179.8
父亲身份:探寻血缘之谜
《 父亲身份:探寻血缘之谜 》

售價:HK$ 105.6
悠游人间 赛博朋克少女插画绘制教程
《 悠游人间 赛博朋克少女插画绘制教程 》

售價:HK$ 119.8
“李晓鹏说中华史”系列(全二册)
《 “李晓鹏说中华史”系列(全二册) 》

售價:HK$ 175.2
绿色剧变:能源大革命与世界新秩序
《 绿色剧变:能源大革命与世界新秩序 》

售價:HK$ 82.8
你的韧性超乎你的想象
《 你的韧性超乎你的想象 》

售價:HK$ 71.8

 

建議一齊購買:

+

HK$ 111.3
《 OpenCV 4.5计算机视觉开发实战(基于VC++) 》
+

HK$ 111.3
《 人件(原书第3版)(英文版) 》
+

HK$ 209.4
《 软件构架实践(第3版 影印版) 》
+

HK$ 106.7
《 ANSYS 18.2有限元分析与应用实例 》
+

HK$ 202.5
《 嵌入式系统软件工程——方法、实用技术及应用 》
+

HK$ 117.5
《 中台实践:数字化转型方法论与解决方案 》
編輯推薦:
书中用到的几乎所有示例都基于作者在逆向分析实践中获得的知识与经验,是其亲自开发的程序,紧扣各章主题,无累赘。作者将培训经验应用到本书的组织结构、内容讲解、示例选择等各方面,以求将较为难懂的技术以更易懂的方式呈现给各位。作者几年前就开设了一个逆向技术学习博客并运营到今,通过与访问者之间的交流,充分了解了初学者们的困惑和需求。
內容簡介:
《逆向工程核心原理》十分详尽地介绍了代码逆向分析的核心原理。作者在Ahnlab 研究所工作多年,书中不仅包括其以此经验为基础亲自编写的大量代码,还包含了逆向工程研究人员必须了解的各种技术和技巧。彻底理解并切实掌握逆向工程这门技术,就能在众多IT相关领域进行拓展运用,这本《逆向工程核心原理》就是通向逆向工程大门的捷径。  想成为逆向工程研究员的读者或正在从事逆向开发工作的开发人员一定会通过《逆向工程核心原理》获得很大帮助。同时,想成为安全领域专家的人也可从《逆向工程核心原理》轻松起步。
關於作者:
李承远在AhnLab从事恶意代码分析工作,一直维护着一个逆向分析技术专业学习博客。从接触逆向分析技术开始就为其迷人魅力深深吸引,对逆向分析技术的传播及多领域应用非常关注,喜欢读书、发呆,也向往新的挑战。武传海擅韩语,喜计算机,有多年翻译经验,内容涉及多个领域,尤其擅长翻译各类计算机图书,已出版多部韩语译著。QQ:768160125jeonhae@126.com
目錄
目 录 第 一部分 代码逆向技术基础第 1章 关于逆向工程 21.1 逆向工程 21.2 代码逆向工程 21.2.1 逆向分析法 21.2.2 源代码、十六进制代码、汇编代码 41.2.3 “打补丁”与“破解” 51.3 代码逆向准备 51.3.1 目标 51.3.2 激情 61.3.3 谷歌 61.4 学习逆向分析技术的禁忌 61.4.1 贪心 61.4.2 急躁 71.5 逆向分析技术的乐趣 7第 2章 逆向分析Hello World!程序 82.1 Hello World!程序 82.2 调试HelloWorld.exe程序 92.2.1 调试目标 92.2.2 开始调试 92.2.3 入口点 102.2.4 跟踪40270C函数 102.2.5 跟踪40104F跳转语句 122.2.6 查找main()函数 122.3 进一步熟悉调试器 142.3.1 调试器指令 142.3.2 “大本营” 152.3.3 设置“大本营”的四种方法 152.4 快速查找指定代码的四种方法 172.4.1 代码执行法 182.4.2 字符串检索法 192.4.3 API检索法(1):在调用代码中设置断点 202.4.4 API检索法(2):在API代码中设置断点 212.5 使用“打补丁”方式修改“Hello World!”字符串 232.5.1 “打补丁” 232.5.2 修改字符串的两种方法 242.6 小结 28第3章 小端序标记法 313.1 字节序 313.1.1 大端序与小端序 323.1.2 在OllyDbg中查看小端序 32第4章 IA-32寄存器基本讲解 344.1 什么是CPU寄存器 344.2 IA-32寄存器 344.3 小结 40第5章 栈 415.1 栈 415.1.1 栈的特征 415.1.2 栈操作示例 41第6章 分析abex’ crackme#1 446.1 abex’ crackme #1 446.1.1 开始调试 456.1.2 分析代码 456.2 破解 476.3 将参数压入栈 476.4 小结 48第7章 栈帧 497.1 栈帧 497.2 调试示例:stackframe.exe 497.2.1 StackFrame.cpp 507.2.2 开始执行main()函数&生成栈帧 517.2.3 设置局部变量 527.2.4 add()函数参数传递与调用 537.2.5 开始执行add()函数&生成栈帧 547.2.6 设置add()函数的局部变量(x, y) 557.2.7 ADD运算 557.2.8 删除函数add()的栈帧&函数执行完毕(返回) 567.2.9 从栈中删除函数add()的参数(整理栈) 577.2.10 调用printf()函数 587.2.11 设置返回值 587.2.12 删除栈帧&main()函数终止 587.3 设置OllyDbg选项 597.3.1 Disasm选项 597.3.2 Analysis1选项 607.4 小结 61第8章 abex’ crackme #2 628.1 运行abex’ crackme #2 628.2 Visual Basic文件的特征 638.2.1 VB专用引擎 638.2.2 本地代码和伪代码 638.2.3 事件处理程序 638.2.4 未文档化的结构体 638.3 开始调试 638.3.1 间接调用 648.3.2 RT_MainStruct结构体 648.3.3 ThunRTMain()函数 658.4 分析crackme 658.4.1 检索字符串 658.4.2 查找字符串地址 668.4.3 生成Serial的算法 688.4.4 预测代码 698.4.5 读取Name字符串的代码 698.4.6 加密循环 708.4.7 加密方法 708.5 小结 72第9章 Process Explorer——**优 秀的进程管理工具 749.1 Process Explorer 749.2 具体有哪些优点呢 759.3 sysinternals 75第 10章 函数调用约定 7610.1 函数调用约定 7610.1.1 cdecl 7610.1.2 stdcall 7710.1.3 fastcall 78第 11章 视频讲座 7911.1 运行 7911.2 分析 7911.2.1 目标(1):去除消息框 7911.2.2 打补丁(1):去除消息框 8111.2.3 目标(2):查找注册码 8311.3 小结 85第 12章 应当如何学习代码逆向分析 8612.1 逆向工程 8612.1.1 任何学习都应当有目标 8612.1.2 拥有积极心态 8612.1.3 要感受其中的乐趣 8612.1.4 让检索成为日常生活的一部分 8712.1.5 **重要的是实践 8712.1.6 请保持平和的心态 87第 二部分 PE文件格式第 13章 PE文件格式 9013.1 介绍 9013.2 PE文件格式 9013.2.1 基本结构 9113.2.2 VA&RVA 9213.3 PE头 9213.3.1 DOS头 9313.3.2 DOS存根 9413.3.3 NT头 9413.3.4 NT头:文件头 9513.3.5 NT头:可选头 9713.3.6 节区头 10113.4 RVA to RAW 10413.5 IAT 10513.5.1 DLL 10513.5.2 IMAGE_IMPORT_DESCRIPTOR 10713.5.3 使用notepad.exe练习 10813.6 EAT 11213.6.1 IMAGE_EXPORT_DIRECTORY 11313.6.2 使用kernel32.dll练习 11413.7 高 级PE 11613.7.1 PEView.exe 11613.7.2 Patched PE 11713.8 小结 118第 14章 运行时压缩 12114.1 数据压缩 12114.1.1 无损压缩 12114.1.2 有损压缩 12114.2 运行时压缩器 12214.2.1 压缩器 12214.2.2 保护器 12314.3 运行时压缩测试 123第 15章 调试UPX压缩的notepad程序 12715.1 notepad.exe的EP代码 12715.2 notepad_upx.exe的EP代码 12715.3 跟踪UPX文件 12915.3.1 OllyDbg的跟踪命令 12915.3.2 循环 #1 12915.3.3 循环 #2 13015.3.4 循环 #3 13115.3.5 循环 #4 13115.4 快速查找UPX OEP的方法 13215.4.1 在POPAD指令后的JMP指令处设置断点 13215.4.2 在栈中设置硬件断点 13315.5 小结 133第 16章 基址重定位表 13516.1 PE重定位 13516.1.1 DLL/SYS 13516.1.2 EXE 13616.2 PE重定位时执行的操作 13616.3 PE重定位操作原理 13816.3.1 基址重定位表 13816.3.2 IMAGE_BASE_RELOCATION结构体 13916.3.3 基址重定位表的分析方法 13916.3.4 练习 141第 17章 从可执行文件中删除.reloc节区 14217.1 .reloc节区 14217.2 reloc.exe 14217.2.1 删除.reloc节区头 14217.2.2 删除.reloc节区 14317.2.3 修改IMAGE_FILE_HEADER 14317.2.4 修改IMAGE_OPTIONAL_HEADER 14417.3 小结 145第 18章 UPack PE文件头详细分析 14618.1 UPack说明 14618.2 使用UPack压缩notepad.exe 14618.3 使用Stud_PE工具 14818.4 比较PE文件头 14818.4.1 原notepad.exe的PE文件头 14918.4.2 notepad_upack.exe运行时压缩的PE文件头 14918.5 分析UPack的PE文件头 15018.5.1 重叠文件头 15018.5.2 IMAGE_FILE_HEADER.SizeOfOptionalHeader 15018.5.3 IMAGE_OPTIONAL_HEADER.NumberOf-RvaAndSizes 15218.5.4 IMAGE_SECTION_HEADER 15318.5.5 重叠节区 15518.5.6 RVA to RAW 15618.5.7 导入表(IMAGE_IMPORT_DESCRIPTOR array) 15818.5.8 导入地址表 16018.6 小结 161第 19章 UPack调试 查找OEP 16219.1 OllyDbg运行错误 16219.2 解码循环 16319.3 设置IAT 16519.4 小结 166第 20章 “内嵌补丁”练习 16720.1 内嵌补丁 16720.2 练习:Patchme 16820.3 调试:查看代码流 16820.4 代码结构 17220.5 “内嵌补丁”练习 17320.5.1 补丁代码要设置在何处呢 17320.5.2 制作补丁代码 17520.5.3 执行补丁代码 17620.5.4 结果确认 177第三部分 DLL注入第 21章 Windows消息钩取 18021.1 钩子 18021.2 消息钩子 18021.3 SetWindowsHookEx() 18121.4 键盘消息钩取练习 18221.4.1 练习示例HookMain.exe 18221.4.2 分析源代码 18521.5 调试练习 18721.5.1 调试HookMain.exe 18821.5.2 调试Notepad.exe进程内的KeyHook.dll 19021.6 小结 192第 22章 恶意键盘记录器 19422.1 恶意键盘记录器的目标 19422.1.1 在线游戏 19422.1.2 网上银行 19422.1.3 商业机密泄露 19422.2 键盘记录器的种类与发展趋势 19522.3 防范恶意键盘记录器 19522.4 个人信息 195第 23章 DLL注入 19723.1 DLL注入 19723.2 DLL注入示例 19823.2.1 改善功能与修复Bug 19823.2.2 消息钩取 19823.2.3 API钩取 19823.2.4 其他应用程序 19923.2.5 恶意代码 19923.3 DLL注入的实现方法 19923.4 CreateRemoteThread() 19923.4.1 练习示例myhack.dll 19923.4.2 分析示例源代码 20323.4.3 调试方法 20823.5 AppInit_DLLs 21023.5.1 分析示例源码 21123.5.2 练习示例myhack2.dll 21223.6 SetWindowsHookEx() 21423.7 小结 214第 24章 DLL卸载 21624.1 DLL卸载的工作原理 21624.2 实现DLL卸载 21624.2.1 获取进程中加载的DLL信息 21924.2.2 获取目标进程的句柄 22024.2.3 获取FreeLibrary() API地址 22024.2.4 在目标进程中运行线程 22024.3 DLL卸载练习 22024.3.1 复制文件及运行notepad.exe 22024.3.2 注入myhack.dll 22124.3.3 卸载myhack.dll 222第 25章 通过修改PE加载DLL 22425.1 练习文件 22425.1.1 TextView.exe 22425.1.2 TextView_patched.exe 22525.2 源代码 - myhack3.cpp 22725.2.1 DllMain() 22725.2.2 DownloadURL() 22825.2.3 DropFile() 22925.2.4 dummy() 23025.3 修改TextView.exe文件的准备工作 23125.3.1 修改思路 23125.3.2 查看IDT是否有足够空间 23125.3.3 移动IDT 23325.4 修改TextView.exe 23525.4.1 修改导入表的RVA值 23525.4.2 删除绑定导入表 23525.4.3 创建新IDT 23525.4.4 设置Name、INT、IAT 23625.4.5 修改IAT节区的属性值 23825.5 检测验证 24025.6 小结 241第 26章 PE Tools 24226.1 PE Tools 24226.1.1 进程内存转储 24326.1.2 PE编辑器 24526.2 小结 245第 27章 代码注入 24727.1 代码注入 24727.2 DLL注入与代码注入 24727.3 练习示例 24927.3.1 运行notepad.exe 24927.3.2 运行CodeInjection.exe 24927.3.3 弹出消息框 25027.4 CodeInjection.cpp 25027.4.1 main()函数 25127.4.2 ThreadProc()函数 25127.4.3 InjectCode()函数 25427.5 代码注入调试练习 25627.5.1 调试notepad.exe 25627.5.2 设置OllyDbg选项 25627.5.3 运行CodeInjection.exe 25727.5.4 线程开始代码 25827.6 小结 259第 28章 使用汇编语言编写注入代码 26028.1 目标 26028.2 汇编编程 26028.3 OllyDbg的汇编命令 26028.3.1 编写ThreadProc()函数 26228.3.2 保存文件 26528.4 编写代码注入程序 26628.4.1 获取ThreadProc()函数的二进制代码 26628.4.2 CodeInjection2.cpp 26728.5 调试练习 27028.5.1 调试notepad.exe 27028.5.2 设置OllyDbg选项 27028.5.3 运行CodeInjection2.exe 27128.5.4 线程起始代码 27228.6 详细分析 27228.6.1 生成栈帧 27228.6.2 THREAD_PARAM结构体指针 27328.6.3 “User32.dll”字符串 27428.6.4 压入“user32.dll”字符串参数 27428.6.5 调用LoadLibraryA(“user32.dll”) 27528.6.6 “MessageBoxA”字符串 27628.6.7 调用GetProcAddress(hMod,“MessageBoxA”) 27628.6.8 压入MessageBoxA()函数的参数 1 -MB_OK 27728.6.9 压入MessageBoxA()函数的参数 2 -“ReverseCore” 27728.6.10 压入MessageBoxA()函数的参数 3 -“www.reversecore.com” 27828.6.11 压入MessageBoxA()函数的参数 4 -NULL 27928.6.12 调用MessageBoxA() 27928.6.13 设置ThreadProc()函数的返回值 28028.6.14 删除栈帧及函数返回 28028.7 小结 280第四部分 API钩取第 29章 API钩取:逆向分析之“花” 28229.1 钩取 28229.2 API是什么 28229.3 API钩取 28329.3.1 正常调用API 28329.3.2 钩取API调用 28429.4 技术图表 28429.4.1 方法对象(是什么) 28529.4.2 位置(何处) 28529.4.3 技术(如何) 28629.4.4 API 286第30章 记事本WriteFile() API钩取 28830.1 技术图表—调试技术 28830.2 关于调试器的说明 28930.2.1 术语 28930.2.2 调试器功能 28930.2.3 调试器的工作原理 28930.2.4 调试事件 28930.3 调试技术流程 29030.4 练习 29130.5 工作原理 29330.5.1 栈 29330.5.2 执行流 29530.5.3 “脱钩”&“钩子” 29530.6 源代码分析 29530.6.1 main() 29630.6.2 DebugLoop() 29630.6.3 EXIT_PROCESS_DEBUG_EVENT 29830.6.4 CREATE_PROCESS_DEBUG_EVENT-OnCreateProcess-DebugEvent() 29830.6.5 EXCEPTION_DEBUG_EVENT-OnException-DebugEvent() 300第31章 关于调试器 30531.1 OllyDbg 30531.2 IDA Pro 30531.3 WinDbg 306第32章 计算器显示中文数字 30832.1 技术图表 30832.2 选定目标API 30932.3 IAT钩取工作原理 31232.4 练习示例 31432.5 源代码分析 31632.5.1 DllMain() 31632.5.2 MySetWindowTextW() 31732.5.3 hook_iat() 31932.6 调试被注入的DLL文件 32232.6.1 DllMain() 32532.6.2 hook_iat() 32532.6.3 MySetWindowTextW() 32732.7 小结 328第33章 隐藏进程 32933.1 技术图表 32933.2 API代码修改技术的原理 32933.2.1 钩取之前 33033.2.2 钩取之后 33033.3 进程隐藏 33233.3.1 进程隐藏工作原理 33233.3.2 相关API 33233.3.3 隐藏技术的问题 33333.4 练习 #1(HideProc.exe,stealth.dll) 33333.4.1 运行notepad.exe、procexp.exe、taskmgr.exe 33433.4.2 运行HideProc.exe 33433.4.3 确认stealth.dll注入成功 33433.4.4 查看notepad.exe进程是否隐藏成功 33533.4.5 取消notepad.exe进程隐藏 33633.5 源代码分析 33633.5.1 HideProc.cpp 33633.5.2 stealth.cpp 33833.6 全局API钩取 34433.6.1 Kernel32.CreateProcess() API 34433.6.2 Ntdll.ZwResumeThread() API 34533.7 练习#2(HideProc2.exe,Stealth2.dll) 34533.7.1 复制stealth2.dll文件到%SYSTEM%文件夹中 34533.7.2 运行HideProc2.exe -hide 34633.7.3 运行ProcExp.exe¬epad.exe 34633.7.4 运行HideProc2.exe -show 34733.8 源代码分析 34833.8.1 HideProc2.cpp 34833.8.2 stealth2.cpp 34833.9 利用“热补丁”技术钩取API 35033.9.1 API代码修改技术的问题 35033.9.2 “热补丁”(修改7个字节代码) 35033.10 练习 #3:stealth3.dll 35333.11 源代码分析 35333.12 使用“热补丁”API钩取技术时需要考虑的问题 35633.13 小结 357第34章 高 级全局API钩取:IE连接控制 35934.1 目标API 35934.2 IE进程结构 36134.3 关于全局API钩取的概念 36234.3.1 常规API钩取 36334.3.2 全局API钩取 36334.4 ntdll!ZwResumeThread() API 36434.5 练习示例:控制IE网络连接 36834.5.1 运行IE 36834.5.2 注入DLL 36934.5.3 创建新选项卡 36934.5.4 尝试连接网站 37034.5.5 卸载DLL 37134.5.6 课外练习 37234.6 示例源代码 37234.6.1 DllMain() 37234.6.2 NewInternetConnectW() 37334.6.3 NewZwResumeThread() 37434.7 小结 375第35章 优 秀分析工具的五种标准 37635.1 工具 37635.2 代码逆向分析工程师 37635.3 优 秀分析工具的五种标准 37635.3.1 精简工具数量 37735.3.2 工具功能简单、使用方便 37735.3.3 完全掌握各种功能 37735.3.4 不断升级更新 37735.3.5 理解工具的核心工作原理 37735.4 熟练程度的重要性 377第五部分 64位&Windows内核6第36章 64位计算 38036.1 64位计算环境 38036.1.1 64位CPU 38036.1.2 64位OS 38136.1.3 Win32 API 38136.1.4 WOW64 38136.1.5 练习:WOW64Test 38436.2 编译64位文件 38536.2.1 Microsoft Windows SDK(Software Development Kit) 38636.2.2 设置Visual C++ 2010 Express环境 386第37章 x64处理器 38937.1 x64中新增或变更的项目 38937.1.1 64位 38937.1.2 内存 38937.1.3 通用寄存器 38937.1.4 CALL/JMP指令 39037.1.5 函数调用约定 39137.1.6 栈 & 栈帧 39237.2 练习:Stack32.exe & Stack64.exe 39237.2.1 Stack32.exe 39237.2.2 Stack64.exe 39437.3 小结 397第38章 PE32+ 39838.1 PE32+(PE+、PE64) 39838.1.1 IMAGE_NT_HEADERS 39838.1.2 IMAGE_FILE_HEADER 39838.1.3 IMAGE_OPTIONAL_HEADER 39938.1.4 IMAGE_THUNK_DATA 40138.1.5 IMAGE_TLS_DIRECTORY 403第39章 WinDbg 40539.1 WinDbg 40539.1.1 WinDbg的特征 40539.1.2 运行WinDbg 40639.1.3 内核调试 40739.1.4 WinDbg基本指令 409第40章 64位调试 41140.1 x64环境下的调试器 41140.2 64位调试 41140.3 PE32:WOW64Test_x86.exe 41340.3.1 EP代码 41440.3.2 Startup代码 41440.3.3 main()函数 41540.4 PE32+:WOW64Test_x64.exe 41640.4.1 系统断点 41640.4.2 EP代码 41740.4.3 Startup代码 41840.4.4 main()函数 42040.5 小结 423第41章 ASLR 42441.1 Windows内核版本 42441.2 ASLR 42441.3 Visual C++ 42441.4 ASLR.exe 42541.4.1 节区信息 42641.4.2 IMAGE_FILE_HEADER\\Characteristics 42741.4.3 IMAGE_OPTIONAL_HEADER\\DLL Characteristics 42841.5 练习:删除ASLR功能 428第42章 内核6中的会话 43042.1 会话 43042.2 会话0隔离机制 43242.3 增强安全性 432第43章 内核6中的DLL注入 43343.1 再现DLL注入失败 43343.1.1 源代码 43343.1.2 注入测试 43543.2 原因分析 43643.2.1 调试 #1 43643.2.2 调试 #2 43843.3 练习:使CreateRemoteThread()正常工作 44043.3.1 方法 #1:修改CreateSuspended参数值 44043.3.2 方法 #2:操纵条件分支 44143.4 稍作整理 44343.5 InjectDll_new.exe 44343.5.1 InjectDll_new.cpp 44343.5.2 注入练习 446第44章 InjDll.exe:DLL注入专用工具 44844.1 InjDll.exe 44844.1.1 使用方法 44844.1.2 使用示例 44944.1.3 注意事项 450第六部分 高 级逆向分析技术第45章 TLS回调函数 45245.1 练习 #1:HelloTls.exe 45245.2 TLS 45345.2.1 IMAGE_DATA_DIRECTORY[9] 45345.2.2 IMAGE_TLS_DIRECTORY 45445.2.3 回调函数地址数组 45445.3 TLS回调函数 45545.4 练习 #2:TlsTest.exe 45645.4.1 DLL_PROCESS_ATTACH 45745.4.2 DLL_THREAD_ATTACH 45745.4.3 DLL_THREAD_DETACH 45745.4.4 DLL_PROCESS_DETACH 45745.5 调试TLS回调函数 45845.6 手工添加TLS回调函数 45945.6.1 修改前的原程序 46045.6.2 设计规划 46045.6.3 编辑PE文件头 46145.6.4 设置IMAGE_TLS_DIRECTORY结构体 46345.6.5 编写TLS回调函数 46445.6.6 *最终完成 46445.7 小结 465第46章 TEB 46646.1 TEB 46646.1.1 TEB结构体的定义 46646.1.2 TEB结构体成员 46646.1.3 重要成员 46946.2 TEB访问方法 47046.2.1 Ntdll.NtCurrentTeb() 47046.2.2 FS段寄存器 47146.3 小结 472第47章 PEB 47347.1 PEB 47347.1.1 PEB访问方法 47347.1.2 PEB结构体的定义 47447.1.3 PEB结构体的成员 47547.2 PEB的重要成员 47747.2.1 PEB.BeingDebugged 47847.2.2 PEB.ImageBaseAddress 47847.2.3 PEB.Ldr 47947.2.4 PEB.ProcessHeap & PEB.NtGlobalFlag 48047.3 小结 480第48章 SEH 48148.1 SEH 48148.2 SEH练习示例 #1 48148.2.1 正常运行 48148.2.2 调试运行 48248.3 OS的异常处理方法 48448.3.1 正常运行时的异常处理方法 48448.3.2 调试运行时的异常处理方法 48448.4 异常 48548.4.1 EXCEPTION_ACCESS_VIOLATION(C0000005) 48648.4.2 EXCEPTION_BREAKPOINT(80000003) 48648.4.3 EXCEPTION_ILLEGAL_INSTRUCTION(C000001D) 48848.4.4 EXCEPTION_INT_DIVIDE_BY_ZERO(C0000094) 48848.4.5 EXCEPTION_SINGLE_STEP(80000004) 48948.5 SEH详细说明 48948.5.1 SEH链 48948.5.2 异常处理函数的定义 48948.5.3 TEB.NtTib.ExceptionList 49148.5.4 SEH安装方法 49248.6 SEH练习示例 #2(seh.exe) 49248.6.1 查看SEH链 49348.6.2 添加SEH 49348.6.3 发生异常 49448.6.4 查看异常处理器参数 49448.6.5 调试异常处理器 49648.6.6 删除SEH 49848.7 设置OllyDbg选项 49948.7.1 忽略KERNEL32中发生的内存非法访问异常 50048.7.2 向被调试者派送异常 50048.7.3 其他异常处理 50048.7.4 简单练习 50048.8 小结 501第49章 IA-32指令 50249.1 IA-32指令 50249.2 常用术语 50249.2.1 反汇编器 50349.2.2 反编译器 50449.2.3 反编译简介 50449.3 IA-32指令格式 50649.3.1 指令前缀 50749.3.2 操作码 50749.3.3 ModR/M 50749.3.4 SIB 50849.3.5 位移 50849.3.6 立即数 50949.4 指令解析手册 50949.4.1 下载IA-32用户手册 50949.4.2 打印指令解析手册 50949.5 指令解析练习 51049.5.1 操作码映射 51049.5.2 操作数 51149.5.3 ModR/M 51249.5.4 Group 51449.5.5 前缀 51649.5.6 双字节操作码 51849.5.7 移位值&立即数 51949.5.8 SIB 52049.6 指令解析课外练习 52449.7 小结 524第七部分 反调试技术第50章 反调试技术 52650.1 反调试技术 52650.1.1 依赖性 52650.1.2 多种反调试技术 52650.2 反调试破解技术 52650.3 反调试技术的分类 52750.3.1 静态反调试技术 52850.3.2 动态反调试技术 528第51章 静态反调试技术 52951.1 静态反调试的目的 52951.2 PEB 52951.2.1 BeingDebugged(+0x2) 53151.2.2 Ldr(+0xC) 53151.2.3 Process Heap(+0x18) 53251.2.4 NtGlobalFlag(+0x68) 53351.2.5 练习: StaAD_PEB.exe 53451.2.6 破解之法 53451.3 NtQueryInformationProcess() 53751.3.1 ProcessDebugPort(0x7) 53851.3.2 ProcessDebugObjectHandle(0x1E) 53951.3.3 ProcessDebugFlags(0x1F) 53951.3.4 练习:StaAD_NtQIP.exe 54051.3.5 破解之法 54051.4 NtQuerySystemInformation() 54251.4.1 SystemKernelDebugger-Information(0x23) 54451.4.2 练习:StaAD_NtQSI.exe 54551.4.3 破解之法 54551.5 NtQueryObject() 54551.6 ZwSetInformationThread() 54951.6.1 练习:StaAD_ZwSIT.exe 54951.6.2 破解之法 55051.7 TLS回调函数 55051.8 ETC 55151.8.1 练习:StaAD_FindWindow.exe 55151.8.2 破解之法 55151.9 小结 553第52章 动态反调试技术 55452.1 动态反调试技术的目的 55452.2 异常 55452.2.1 SEH 55452.2.2 SetUnhandledException-Filter() 55852.3 Timing Check 56252.3.1 时间间隔测量法 56252.3.2 RDTSC 56352.4 陷阱标志 56552.4.1 单步执行 56652.4.2 INT 2D 56952.5 0xCC探测 57252.5.1 API断点 57352.5.2 比较校验和 575第53章 高 级反调试技术 57753.1 高 级反调试技术 57753.2 垃圾代码 57753.3 扰乱代码对齐 57853.4 加密/解密 58153.4.1 简单的解码示例 58153.4.2 复杂的解码示例 58253.4.3 特殊情况:代码重组 58453.5 Stolen Bytes(Remove OEP) 58453.6 API重定向 58753.6.1 原代码 58853.6.2 API重定向示例 #1 58853.6.3 API重定向示例#2 58953.7 Debug Blocker(Self Debugging) 59353.8 小结 595第八部分 调试练习第54章 调试练习1:服务 59854.1 服务进程的工作原理 59854.1.1 服务控制器 59854.1.2 服务启动过程 59954.2 DebugMe1.exe示例讲解 60054.2.1 安装服务 60054.2.2 启动服务 60254.2.3 源代码 60454.3 服务进程的调试 60654.3.1 问题在于SCM 60654.3.2 调试器无所不能 60654.3.3 常用方法 60654.4 服务调试练习 60654.4.1 直接调试:强制设置EIP 60654.4.2 服务调试的常用方法:“附加”方式 60954.5 小结 615第55章 调试练习2:自我创建 61655.1 自我创建 61655.2 工作原理 61755.2.1 创建子进程(挂起模式) 61755.2.2 更改EIP 61855.2.3 恢复主线程 61855.3 示例程序源代码 61855.4 调试练习 62055.4.1 需要考虑的事项 62055.4.2 JIT调试 62155.4.3 DebugMe2.exe 62255.5 小结 626第56章 调试练习3:PE映像切换 62756.1 PE映像 62756.2 PE映像切换 62856.3 示例程序:Fake.exe、Real.exe、DebugMe3.exe 62856.4 调试1 63156.4.1 Open 输入运行参数 63156.4.2 main()函数 63256.4.3 SubFunc_1() 63456.4.4 CreateProcess(“fake.exe”,CREATE_SUSPENDED) 63556.4.5 SubFunc_2() 63556.4.6 SubFunc_3() 64156.4.7 ResumeThread() 64456.5 调试2 64456.5.1 思考 64556.5.2 向EP设置无限循环 64556.6 小结 647第57章 调试练习4:Debug Blocker 64857.1 Debug Blocker 64857.2 反调试特征 64857.2.1 父与子的关系 64957.2.2 被调试进程不能再被其他调试器调试 64957.2.3 终止调试进程的同时也终止被调试进程 64957.2.4 调试器操作被调试者的代码 64957.2.5 调试器处理被调试进程中发生的异常 64957.3 调试练习:DebugMe4.exe 65057.4 第 一次调试 65057.4.1 选定调试的起始位置 65057.4.2 main() 65057.5 第 二次调试 65157.6 第三次调试 65357.7 第四次调试 65657.8 第五次调试 65857.8.1 系统断点 65857.8.2 EXCEPTION_ILLEGAL_INSTRUCTION(1) 65957.8.3 EXCEPTION_ILLEGAL_INSTRUCTION(2) 66057.9 第六次调试 66157.9.1 40121D(第 一个异常) 66157.9.2 401299(第 二个异常) 66557.10 第七次调试 66757.10.1 静态方法 66857.10.2 动态方法 66957.11 小结 673结束语 674索引 676

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.