图书介绍
逆向工程核心原理【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

- (韩)李承远著;武传海译 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115350183
- 出版时间:2014
- 标注页数:680页
- 文件大小:137MB
- 文件页数:699页
- 主题词:软件工程
PDF下载
下载说明
逆向工程核心原理PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 代码逆向技术基础2
第1章 关于逆向工程2
1.1 逆向工程2
1.2 代码逆向工程2
1.2.1 逆向分析法2
1.2.2 源代码、十六进制代码、汇编代码4
1.2.3 “打补丁”与“破解”5
1.3 代码逆向准备5
1.3.1 目标5
1.3.2 激情6
1.3.3 谷歌6
1.4 学习逆向分析技术的禁忌6
1.4.1 贪心6
1.4.2 急躁7
1.5 逆向分析技术的乐趣7
第2章 逆向分析Hello Wo rld!程序8
2.1 Hello World!程序8
2.2 调试HelloWorld.exe程序9
2.2.1 调试目标9
2.2.2 开始调试9
2.2.3 入口点10
2.2.4 跟踪40270C函数10
2.2.5 跟踪40104F跳转语句12
2.2.6 查找main()函数12
2.3 进一步熟悉调试器14
2.3.1 调试器指令14
2.3.2 “大本营”15
2.3.3 设置“大本营”的四种方法15
2.4 快速查找指定代码的四种方法17
2.4.1 代码执行法18
2.4.2 字符串检索法19
2.4.3 API检索法(1):在调用代码中设置断点20
2.4.4 API检索法(2):在API代码中设置断点21
2.5 使用“打补丁”方式修改“Hello World!”字符串23
2.5.1 “打补丁”23
2.5.2 修改字符串的两种方法24
2.6 小结28
第3章 小端序标记法31
3.1 字节序31
3.1.1 大端序与小端序32
3.1.2 在OllyDbg中查看小端序32
第4章 IA-32寄存器基本讲解34
4.1 什么是CPU寄存器34
4.2 IA-32寄存器34
4.3 小结40
第5章 栈41
5.1 栈41
5.1.1 栈的特征41
5.1.2 栈操作示例41
第6章 分析abex'crackme#144
6.1 abex'crackme #144
6.1.1 开始调试45
6.1.2 分析代码45
6.2 破解47
6.3 将参数压入栈47
6.4 小结48
第7章 栈帧49
7.1 栈帧49
7.2 调试示例:stackframe.exe49
7.2.1 StackFrame.cpp50
7.2.2 开始执行main()函数&生成栈帧51
7.2.3 设置局部变量52
7.2.4 add()函数参数传递与调用53
7.2.5 开始执行add()函数&生成栈帧54
7.2.6 设置add()函数的局部变量(x,y)55
7.2.7 ADD运算55
7.2.8 删除函数add()的栈帧&函数执行完毕(返回)56
7.2.9 从栈中删除函数add()的参数(整理栈)57
7.2.10 调用printf()函数58
7.2.11 设置返回值58
7.2.12 删除栈帧&main()函数终止58
7.3 设置OllyDbg选项59
7.3.1 Disasm选项59
7.3.2 Analysis1选项60
7.4 小结61
第8章 abex'crackme #262
8.1 运行abex'crackme #262
8.2 Visual Basic文件的特征63
8.2.1 VB专用引擎63
8.2.2 本地代码和伪代码63
8.2.3 事件处理程序63
8.2.4 未文档化的结构体63
8.3 开始调试63
8.3.1 间接调用64
8.3.2 RT_MainStruct结构体64
8.3.3 ThunRTMain()函数65
8.4 分析crackme65
8.4.1 检索字符串65
8.4.2 查找字符串地址66
8.4.3 生成Serial的算法68
8.4.4 预测代码69
8.4.5 读取Name字符串的代码69
8.4.6 加密循环70
8.4.7 加密方法70
8.5 小结72
第9章 Process Explorer——最优秀的进程管理工具74
9.1 Process Explorer74
9.2 具体有哪些优点呢75
9.3 sysinternals75
第10章 函数调用约定76
10.1 函数调用约定76
10.1.1 cdecl76
10.1.2 stdcall77
10.1.3 fastcall78
第11章 视频讲座79
11.1 运行79
11.2 分析79
11.2.1 目标(1):去除消息框79
11.2.2 打补丁(1):去除消息框81
11.2.3 目标(2):查找注册码83
11.3 小结85
第12章 究竟应当如何学习代码逆向分析86
12.1 逆向工程86
12.1.1 任何学习都应当有目标86
12.1.2 拥有积极心态86
12.1.3 要感受其中的乐趣86
12.1.4 让检索成为日常生活的一部分87
12.1.5 最重要的是实践87
12.1.6 请保持平和的心态87
第二部分 PE文件格式90
第13章 PE文件格式90
13.1 介绍90
13.2 PE文件格式90
13.2.1 基本结构91
13.2.2 VA&RVA92
13.3 PE头92
13.3.1 DOS头93
13.3.2 DOS存根94
13.3.3 NT头94
13.3.4 NT头:文件头95
13.3.5 NT头:可选头97
13.3.6 节区头101
13.4 RVA to RAW104
13.5 IAT105
13.5.1 DLL105
13.5.2 IMAGE_IMPORT_DESCRIPTOR107
13.5.3 使用notepad.exe练习108
13.6 EAT112
13.6.1 IMAGE_EXPORT_DIRECTORy113
13.6.2 使用kernel32.dl1练习114
13.7 高级PE116
13.7.1 PEView.exe116
13.7.2 Patched PE117
13.8 小结118
第14章 运行时压缩121
14.1 数据压缩121
14.1.1 无损压缩121
14.1.2 有损压缩121
14.2 运行时压缩器122
14.2.1 压缩器122
14.2.2 保护器123
14.3 运行时压缩测试123
第15章 调试UPX压缩的notepad程序127
15.1 notepad.exe的EP代码127
15.2 notep ad_upx.exe的EP代码127
15.3 跟踪UPX文件129
15.3.1 OllyDbg的跟踪命令129
15.3.2 循环#1129
15.3.3 循环#2130
15.3.4 循环#3131
15.3.5 循环#4131
15.4 快速查找UPX OEP的方法132
15.4.1 在POPAD指令后的JMP指令处设置断点132
15.4.2 在栈中设置硬件断点133
15.5 小结133
第16章 基址重定位表135
16.1 PE重定位135
16.1.1 DLL/SYS135
16.1.2 EXE136
16.2 PE重定位时执行的操作136
16.3 PE重定位操作原理138
16.3.1 基址重定位表138
16.3.2 IMAGE_BASE_RELOCATION结构体139
16.3.3 基址重定位表的分析方法139
16.3.4 练习141
第17章 从可执行文件中删除.reloc节区142
17.1 reloc节区142
17.2 reloc.exe142
17.2.1 删除.reloc节区头142
17.2.2 删除.reloc节区143
17.2.3 修改IMAGE_FILE_HEADER143
17.2.4 修改IMAGE_OPTIONAL_HEADER144
17.3 小结145
第18章 UPack PE文件头详细分析146
18.1 UPack说明146
18.2 使用UPack压缩notepad.exe146
18.3 使用Stud_PE工具148
18.4 比较PE文件头148
18.4.1 原notepad.exe的PE文件头149
18.4.2 notepad_upack.exe运行时压缩的PE文件头149
18.5 分析UPack的PE文件头150
18.5.1 重叠文件头150
18.5.2 IMAGE FILE HEADER.SizeOfOptionalHeader150
18.5.3 IMAGE_OPTIONAL_HEADER.NumberOf-RvaAndSizes152
18.5.4 IMAGE_SECTION_HEADER153
18.5.5 重叠节区155
18.5.6 RVA to RAW156
18.5.7 导入表(IMAGE_IMPORT_DESCRIPTOR array)158
18.5.8 导入地址表160
18.6 小结161
第19章 UPack调试-查找OEP162
19.1 OllyDbg运行错误162
19.2 解码循环163
19.3 设置IAT165
19.4 小结166
第20章 “内嵌补丁”练习167
20.1 内嵌补丁167
20.2 练习:Patchme168
20.3 调试:查看代码流168
20.4 代码结构172
20.5 “内嵌补丁”练习173
20.5.1 补丁代码要设置在何处呢173
20.5.2 制作补丁代码175
20.5.3 执行补丁代码176
20.5.4 结果确认177
第三部分 DLL注入180
第21章 Windows消息钩取180
21.1 钩子180
21.2 消息钩子180
21.3 SetWindowsHookEx()181
21.4 键盘消息钩取练习182
21.4.1 练习示例HookMain.exe182
21.4.2 分析源代码185
21.5 调试练习187
21.5.1 调试HookMain.exe188
21.5.2 调试Notepad.exe进程内的KeyHook.dll190
21.6 小结192
第22章 恶意键盘记录器194
22.1 恶意键盘记录器的目标194
22.1.1 在线游戏194
22.1.2 网上银行194
22.1.3 商业机密泄露194
22.2 键盘记录器的种类与发展趋势195
22.3 防范恶意键盘记录器195
22.4 个人信息195
第23章 DLL注入197
23.1 DLL注入197
23.2 DLL注入示例198
23.2.1 改善功能与修复Bug198
23.2.2 消息钩取198
23.2.3 API钩取198
23.2.4 其他应用程序199
23.2.5 恶意代码199
23.3 DLL注入的实现方法199
23.4 CreateRemoteThread()199
23.4.1 练习示例myhack.dll199
23.4.2 分析示例源代码203
23.4.3 调试方法208
23.5 AppInit_DLLs210
23.5.1 分析示例源码211
23.5.2 练习示例myhack2.dll212
23.6 SetWindowsHookEx()214
23.7 小结214
第24章 DLL卸载216
24.1 DLL卸载的工作原理216
24.2 实现DLL卸载216
24.2.1 获取进程中加载的DLL信息219
24.2.2 获取目标进程的句柄220
24.2.3 获取FreeLibrary() API地址220
24.2.4 在目标进程中运行线程220
24.3 DLL卸载练习220
24.3.1 复制文件及运行notepad.exe220
24.3.2 注入myhack.dll221
24.3.3 卸载myhack.dll222
第25章 通过修改PE加载DLL224
25.1 练习文件224
25.1.1 TextView.exe224
25.1.2 TextView_patched.exe225
25.2 源代码-myhack3.cpp227
25.2.1 DllMain()227
25.2.2 DownloadURL()228
25.2.3 DropFile()229
25.2.4 dummy()230
25.3 修改TextView.exe文件的准备工作231
25.3.1 修改思路231
25.3.2 查看IDT是否有足够空间231
25.3.3 移动IDT233
25.4 修改TextView.exe235
25.4.1 修改导入表的RVA值235
25.4.2 删除绑定导入表235
25.4.3 创建新IDT235
25.4.4 设置Name、INT、IAT236
25.4.5 修改IAT节区的属性值238
25.5 检测验证240
25.6 小结241
第26章 PE Tools242
26.1 PE Tools242
26.1.1 进程内存转储243
26.1.2 PE编辑器245
26.2 小结245
第27章 代码注入247
27.1 代码注入247
27.2 DLL注入与代码注入247
27.3 练习示例249
27.3.1 运行notepad.exe249
27.3.2 运行CodeInjection.exe249
27.3.3 弹出消息框250
27.4 CodeInjection.cpp250
27.4.1 main()函数251
27.4.2 ThreadProc()函数251
27.4.3 InjectCode()函数254
27.5 代码注入调试练习256
27.5.1 调试notepad.exe256
27.5.2 设置OllyDbg选项256
27.5.3 运行CodeInjection.exe257
27.5.4 线程开始代码258
27.6 小结259
第28章 使用汇编语言编写注入代码260
28.1 目标260
28.2 汇编编程260
28.3 OllyDbg的汇编命令260
28.3.1 编写ThreadProc()函数262
28.3.2 保存文件265
28.4 编写代码注入程序266
28.4.1 获取ThreadProc()函数的二进制代码266
28.4.2 CodeInjection2.cpp267
28.5 调试练习270
28.5.1 调试notepad.exe270
28.5.2 设置OllyDbg选项270
28.5.3 运行CodeInjection2.exe271
28.5.4 线程起始代码272
28.6 详细分析272
28.6.1 生成栈帧272
28.6.2 THREAD_PARAM结构体指针273
28.6.3 “User32.dll”字符串274
28.6.4 压入“user32.dll”字符串参数274
28.6.5 调用LoadLibraryA(“user32.dll”)275
28.6.6 “MessageBoxA”字符串276
28.6.7 调用GetProcAddress(hMod,""MessageBoxA"")276
28.6.8 压入MessageBoxA()函数的参数1-MB_OK277
28.6.9 压入MessageBoxA()函数的参数2-“ReverseCore”277
28.6.10 压入MessageBoxA()函数的参数3-“www.reversecore.com”278
28.6.11 压入MessageBoxA()函数的参数4-NULL279
28.6.12 调用MessageBoxA()279
28.6.13 设置ThreadProc()函数的返回值280
28.6.14 删除栈帧及函数返回280
28.7 小结280
第四部分 API钩取282
第29章 API钩取:逆向分析之“花”282
29.1 钩取282
29.2 API是什么282
29.3 API钩取283
29.3.1 正常调用API283
29.3.2 钩取API调用284
29.4 技术图表284
29.4.1 方法对象(是什么)285
29.4.2 位置(何处)285
29.4.3 技术(如何)286
29.4.4 API286
第30章 记事本WriteFile()API钩取288
30.1 技术图表-调试技术288
30.2 关于调试器的说明289
30.2.1 术语289
30.2.2 调试器功能289
30.2.3 调试器的工作原理289
30.2.4 调试事件289
30.3 调试技术流程290
30.4 练习291
30.5 工作原理293
30.5.1 栈293
30.5.2 执行流295
30.5.3 “脱钩”&“钩子”295
30.6 源代码分析295
30.6.1 main()296
30.6.2 DebugLoop()296
30.6.3 EXIT_PROCESS_DEBUG_EVENT298
30.6.4 CREATE_PROCESS_DEBUG_EVENT-OnCreateProcess-DebugEvent()298
30.6.5 EXCEPTION_DEBUG_EVENT-OnException-DebugEvent()300
第31章 关于调试器305
31.1 OllyDbg305
31.2 IDA Pro305
31.3 WinDbg306
第32章 计算器显示中文数字308
32.1 技术图表308
32.2 选定目标API309
32.3 IAT钩取工作原理312
32.4 练习示例314
32.5 源代码分析316
32.5.1 DllMain()316
32.5.2 MySetWindowTextW()317
32.5.3 hook_iat()319
32.6 调试被注入的DLL文件322
32.6.1 DllMain()325
32.6.2 hook_iat()325
32.6.3 MySetWindowTextW()327
32.7 小结328
第33章 隐藏进程329
33.1 技术图表329
33.2 API代码修改技术的原理329
33.2.1 钩取之前330
33.2.2 钩取之后330
33.3 进程隐藏332
33.3.1 进程隐藏工作原理332
33.3.2 相关API332
33.3.3 隐藏技术的问题333
33.4 练习#1(HideProc.exe,stealth.dll)333
33.4.1 运行notepad.exe、procexp.exe、taskmgr.exe334
33.4.2 运行HideProc.exe334
33.4.3 确认stealth.dll注入成功334
33.4.4 查看notepad.exe进程是否隐藏成功335
33.4.5 取消notepad.exe进程隐藏336
33.5 源代码分析336
33.5.1 HideProc.cpp336
33.5.2 stealth.cpp338
33.6 全局API钩取344
33.6.1 Kernel32.CreateProcess()API344
33.6.2 Ntdll.ZwResumeThread()API345
33.7 练习#2(HideProc2.exe,Stealth2.dll)345
33.7.1 复制stealth2.dll文件到%SYSTEM%文件夹中345
33.7.2 运行HideProc2.exe-hide346
33.7.3 运行ProcExp.exe&notepad.exe346
33.7.4 运行HideProc2.exe-show347
33.8 源代码分析348
33.8.1 HideProc2.cpp348
33.8.2 stealth2.cpp348
33.9 利用“热补丁”技术钩取API350
33.9.1 API代码修改技术的问题350
33.9.2 “热补丁”(修改7个字节代码)350
33.10 练习#3:stealth3.dll353
33.11 源代码分析353
33.12 使用“热补丁”API钩取技术时需要考虑的问题356
33.13 小结357
第34章 高级全局API钩取:IE连接控制359
34.1 目标API359
34.2 IE进程结构361
34.3 关于全局API钩取的概念362
34.3.1 常规API钩取363
34.3.2 全局API钩取363
34.4 ntdll!ZwResumeThread() API364
34.5 练习示例:控制IE网络连接368
34.5.1 运行IE368
34.5.2 注入DLL369
34.5.3 创建新选项卡369
34.5.4 尝试连接网站370
34.5.5 卸载DLL371
34.5.6 课外练习372
34.6 示例源代码372
34.6.1 DllMain()372
34.6.2 NewInternetConnectW()373
34.6.3 NewZwResumeThread()374
34.7 小结375
第35章 优秀分析工具的五种标准376
35.1 工具376
35.2 代码逆向分析工程师376
35.3 优秀分析工具的五种标准376
35.3.1 精简工具数量377
35.3.2 工具功能简单、使用方便377
35.3.3 完全掌握各种功能377
35.3.4 不断升级更新377
35.3.5 理解工具的核心工作原理377
35.4 熟练程度的重要性377
第五部分 64位&Windows内核6380
第36章 64位计算380
36.1 64位计算环境380
36.1.1 64位CPU380
36.1.2 64位OS381
36.1.3 Win32 API381
36.1.4 WOW64381
36.1.5 练习:WOW64Test384
36.2 编译64位文件385
36.2.1 Microsoft Windows SDK(Software DevelopmentKit)386
36.2.2 设置Visual C++++ 2010 Express环境386
第37章 x64处理器389
37.1 x64中新增或变更的项目389
37.1.1 64位389
37.1.2 内存389
37.1.3 通用寄存器389
37.1.4 CALL/JMP指令390
37.1.5 函数调用约定391
37.1.6 栈&栈帧392
37.2 练习:Stack32.exe&Stack64.exe392
37.2.1 Stack32.exe392
37.2.2 Stack64.exe394
37.3 小结397
第38章 PE32+398
38.1 PE32+(PE+、PE64)398
38.1.1 IMAGE_NT_HEADERS398
38.1.2 IMAGE_FILE_HEADER398
38.1.3 IMAGE_OPTIONAL_HEADER399
38.1.4 IMAGE_THUNK_DATA401
38.1.5 IMAGE_TLS_DIRECTORY403
第39章 WinDbg405
39.1 WinDbg405
39.1.1 WinDbg的特征405
39.1.2 运行WinDbg406
39.1.3 内核调试407
39.1.4 WinDbg基本指令409
第40章 64位调试411
40.1 x64环境下的调试器411
40.2 64位调试411
40.3 PE32:WOW64Test_x86.exe413
40.3.1 EP代码414
40.3.2 Startup代码414
40.3.3 main()函数415
40.4 PE32+:WOW64Test_x64.exe416
40.4.1 系统断点416
40.4.2 EP代码417
40.4.3 Startup代码418
40.4.4 main()函数420
40.5 小结423
第41章 ASLR424
41.1 Windows内核版本424
41.2 ASLR424
41.3 Visual C+++424
41.4 ASLR.exe425
41.4.1 节区信息426
41.4.2 IMAGE_FILE_HEADERCharacteristics427
41.4.3 IMAGE_OPTIONAL_HEADERDLL Characteristics428
41.5 练习:删除ASLR功能428
第42章 内核6中的会话430
42.1 会话430
42.2 会话0隔离机制432
42.3 增强安全性432
第43章 内核6中的DLL注入433
43.1 再现DLL注入失败433
43.1.1 源代码433
43.1.2 注入测试435
43.2 原因分析436
43.2.1 调试#1436
43.2.2 调试#2438
43.3 练习:使CreateRemoteThread()正常工作440
43.3.1 方法#1:修改CreateSuspended参数值440
43.3.2 方法#2:操纵条件分支441
43.4 稍作整理443
43.5 InjectDll new.exe443
43.5.1 InjectDll_new.cpp443
43.5.2 注入练习446
第44章 InjDll.exe:DLL注入专用工具448
44.1 InjDll.exe448
44.1.1 使用方法448
44.1.2 使用示例449
44.1.3 注意事项450
第六部分 高级逆向分析技术452
第45章 TLS回调函数452
45.1 练习#1:HelloTls.exe452
45.2 TLS453
45.2.1 IMAGE_DATA_DIRECTORY[9]453
45.2.2 IMAGE_TLS_DIRECTORY454
45.2.3 回调函数地址数组454
45.3 TLS回调函数455
45.4 练习#2:TlsTest.exe456
45.4.1 DLL_PROCESS_ATTACH457
45.4.2 DLL_THREAD_ATTACH457
45.4.3 DLL_THREAD_DETACH457
45.4.4 DLL PROCESS_DETACH457
45.5 调试TLS回调函数458
45.6 手工添加TLS回调函数459
45.6.1 修改前的原程序460
45.6.2 设计规划460
45.6.3 编辑PE文件头461
45.6.4 设置IMAGE_TLS_DIRECTORY结构体463
45.6.5 编写TLS回调函数464
45.6.6 最终完成464
45.7 小结465
第46章 TEB466
46.1 TEB466
46.1.1 TEB结构体的定义466
46.1.2 TEB结构体成员466
46.1.3 重要成员469
46.2 TEB访问方法470
46.2.1 Ntdll.NtCurrentTeb()470
46.2.2 FS段寄存器471
46.3 小结472
第47章 PEB473
47.1 PEB473
47.1.1 PEB访问方法473
47.1.2 PEB结构体的定义474
47.1.3 PEB结构体的成员475
47.2 PEB的重要成员477
47.2.1 PEB.BeingDebugged478
47.2.2 PEB.ImageBaseAddress478
47.2.3 PEB.Ldr479
47.2.4 PEB.ProcessHeap & PEB.NtGlobalFlag480
47.3 小结480
第48章 SEH481
48.1 SEH481
48.2 SEH练习示例#1481
48.2.1 正常运行481
48.2.2 调试运行482
48.3 OS的异常处理方法484
48.3.1 正常运行时的异常处理方法484
48.3.2 调试运行时的异常处理方法484
48.4 异常485
48.4.1 EXCEPTION_ACCESS_VIOLATION(C0000005)486
48.4.2 EXCEPTION_BREAKPOINT(80000003)486
48.4.3 EXCEPTION_ILLEGAL_INSTRUCTION(C000001D)488
48.4.4 EXCEPTION_INT_DIVIDE_BY_ZERO(C0000094)488
48.4.5 EXCEPTION_SINGLE_STEP(80000004)489
48.5 SEH详细说明489
48.5.1 SEH链489
48.5.2 异常处理函数的定义489
48.5.3 TEB.NtTib.ExceptionList491
48.5.4 SEH安装方法492
48.6 SEH练习示例#2(seh.exe)492
48.6.1 查看SEH链493
48.6.2 添加SEH493
48.6.3 发生异常494
48.6.4 查看异常处理器参数494
48.6.5 调试异常处理器496
48.6.6 删除SEH498
48.7 设置OllyDbg选项499
48.7.1 忽略KERNEL32中发生的内存非法访问异常500
48.7.2 向被调试者派送异常500
48.7.3 其他异常处理500
48.7.4 简单练习500
48.8 小结501
第49章 IA-32指令502
49.1 IA-32指令502
49.2 常用术语502
49.2.1 反汇编器503
49.2.2 反编译器504
49.2.3 反编译简介504
49.3 IA-32指令格式506
49.3.1 指令前缀507
49.3.2 操作码507
49.3.3 ModR/M507
49.3.4 SIB508
49.3.5 位移508
49.3.6 立即数509
49.4 指令解析手册509
49.4.1 下载IA-32用户手册509
49.4.2 打印指令解析手册509
49.5 指令解析练习510
49.5.1 操作码映射510
49.5.2 操作数511
49.5.3 ModR/M512
49.5.4 Group514
49.5.5 前缀516
49.5.6 双字节操作码518
49.5.7 移位值&立即数519
49.5.8 SIB520
49.6 指令解析课外练习524
49.7 小结524
第七部分 反调试技术526
第50章 反调试技术526
50.1 反调试技术526
50.1.1 依赖性526
50.1.2 多种反调试技术526
50.2 反调试破解技术526
50.3 反调试技术的分类527
50.3.1 静态反调试技术528
50.3.2 动态反调试技术528
第51章 静态反调试技术529
51.1 静态反调试的目的529
51.2 PEB529
51.2.1 BeingDebugged(+0x2)531
51.2.2 Ldr(+0xC)531
51.2.3 Process Heap(+0x18)532
51.2.4 NtGlobalFlag(+0x68)533
51.2.5 练习:StaAD PEB.exe534
51.2.6 破解之法534
51.3 NtQueryInformationProcess()537
51.3.1 ProcessDebugPort(0x7)538
51.3.2 ProcessDebugObjectHandle(0x1E)539
51.3.3 ProcessDebugFlags(0x1F)539
51.3.4 练习:StaAD_NtQIP.exe540
51.3.5 破解之法540
51.4 NtQuerySystemInformation()542
51.4.1 SystemKernelDebugger-Information(0x23)544
51.4.2 练习:StaAD_NtQSI.exe545
51.4.3 破解之法545
51.5 NtQueryObject()545
51.6 ZwSetInformationThread()549
51.6.1 练习:StaAD ZwSIT.exe549
51.6.2 破解之法550
51.7 TLS回调函数550
51.8 ETC551
51.8.1 练习:StaAD_FindWindow.exe551
51.8.2 破解之法551
51.9 小结553
第52章 动态反调试技术554
52.1 动态反调试技术的目的554
52.2 异常554
52.2.1 SEH554
52.2.2 SetUnhandledException-Filter()558
52.3 Timing Check562
52.3.1 时间间隔测量法562
52.3.2 RDTSC563
52.4 陷阱标志565
52.4.1 单步执行566
52.4.2 INT 2D569
52.5 0xCC探测572
52.5.1 API断点573
52.5.2 比较校验和575
第53章 高级反调试技术577
53.1 高级反调试技术577
53.2 垃圾代码577
53.3 扰乱代码对齐578
53.4 加密/解密581
53.4.1 简单的解码示例581
53.4.2 复杂的解码示例582
53.4.3 特殊情况:代码重组584
53.5 Stolen Bytes(Remove OEP)584
53.6 API重定向587
53.6.1 原代码588
53.6.2 API重定向示例#1588
53.6.3 API重定向示例#2589
53.7 Debug Blocker(Self Debugging)593
53.8 小结595
第八部分 调试练习598
第54章 调试练习1:服务598
54.1 服务进程的工作原理598
54.1.1 服务控制器598
54.1.2 服务启动过程599
54.2 DebugMel.exe示例讲解600
54.2.1 安装服务600
54.2.2 启动服务602
54.2.3 源代码604
54.3 服务进程的调试606
54.3.1 问题在于SCM606
54.3.2 调试器无所不能606
54.3.3 常用方法606
54.4 服务调试练习606
54.4.1 直接调试:强制设置EIP606
54.4.2 服务调试的常用方法:“附加”方式609
54.5 小结615
第55章 调试练习2:自我创建616
55.1 自我创建616
55.2 工作原理617
55.2.1 创建子进程(挂起模式)617
55.2.2 更改EIP618
55.2.3 恢复主线程618
55.3 示例程序源代码618
55.4 调试练习620
55.4.1 需要考虑的事项620
55.4.2 JIT调试621
55.4.3 DebugMe2.exe622
55.5 小结626
第56章 调试练习3:PE映像切换627
56.1 PE映像627
56.2 PE映像切换628
56.3 示例程序:Fake.exe、Real.exe、DebugMe3.exe628
56.4 调试1631
56.4.1 Open-输入运行参数631
56.4.2 main()函数632
56.4.3 SubFunc_1()634
56.4.4 CreateProcess(""fake.exe"",CREATE_SUSPENDED)635
56.4.5 SubFunc_2()635
56.4.6 SubFunc_3()641
56.4.7 ResumeThread()644
56.5 调试2644
56.5.1 思考645
56.5.2 向EP设置无限循环645
56.6 小结647
第57章 调试练习4:Debug Blocker648
57.1 Debug Blocker648
57.2 反调试特征648
57.2.1 父与子的关系649
57.2.2 被调试进程不能再被其他调试器调试649
57.2.3 终止调试进程的同时也终止被调试进程649
57.2.4 调试器操作被调试者的代码649
57.2.5 调试器处理被调试进程中发生的异常649
57.3 调试练习:DebugMe4.exe650
57.4 第一次调试650
57.4.1 选定调试的起始位置650
57.4.2 main()650
57.5 第二次调试651
57.6 第三次调试653
57.7 第四次调试656
57.8 第五次调试658
57.8.1 系统断点658
57.8.2 EXCEPTION_ILLEGAL_INSTRUCTION(1)659
57.8.3 EXCEPTION_ILLEGAL_INSTRUCTION(2)660
57.9 第六次调试661
57.9.1 40121D(第一个异常)661
57.9.2 401299(第二个异常)665
57.10 第七次调试667
57.10.1 静态方法668
57.10.2 动态方法669
57.11 小结673
结束语674
索引676
热门推荐
- 92175.html
- 129591.html
- 726249.html
- 3043162.html
- 2474900.html
- 102591.html
- 1169117.html
- 3048732.html
- 682006.html
- 2135975.html
- http://www.ickdjs.cc/book_1495415.html
- http://www.ickdjs.cc/book_3016547.html
- http://www.ickdjs.cc/book_2992941.html
- http://www.ickdjs.cc/book_2780498.html
- http://www.ickdjs.cc/book_3179408.html
- http://www.ickdjs.cc/book_2146940.html
- http://www.ickdjs.cc/book_189564.html
- http://www.ickdjs.cc/book_3534458.html
- http://www.ickdjs.cc/book_306656.html
- http://www.ickdjs.cc/book_252805.html