第1章 黑客编程入门 1
1.1 初识Windows消息 1
1.1.1 对消息的演示测试 1
1.1.2 对MsgTest代码的解释 3
1.1.3 如何获取窗口的类名称 4
1.2 Windows消息机制的处理 5
1.2.1 DOS程序与Windows程序执行流程
对比 5
1.2.2 一个简单的Windows应用程序 7
1.3 模拟鼠标键盘按键的操作 13
1.3.1 基于发送消息的模拟 13
1.3.2 通过API函数模拟鼠标键盘按键的
操作 16
1.4 通过消息实现进程间的通信 19
1.4.1 通过自定义消息进行进程通信 19
1.4.2 通过WM_COPYDATA消息进行进程
通信 21
1.5 VC相关开发辅助工具 24
1.5.1 Error Lookup工具的使用 24
1.5.2 Windows Error Lookup Tool工具的使用 25
1.5.3 VC6调试工具介绍 26
1.6 总结 33
第2章 黑客网络编程 34
2.1 Winsock编程基础知识 34
2.1.1 网络基础知识 34
2.1.2 面向连接协议与非面向连接协议所
使用的函数 36
2.1.3 Winsock网络编程知识 36
2.1.4 字节顺序 41
2.2 Winsock编程实例 43
2.2.1 基于TCP的通信 43
2.2.2 基于UDP的通信 45
2.2.3 口令暴力猜解 47
2.3 非阻塞模式开发 54
2.3.1 设置Winsock的工作模式 54
2.3.2 非阻塞模式下的简单远程控制的开发 55
2.4 原始套接字的开发 64
2.4.1 Ping命令的使用 64
2.4.2 Ping命令的构造 65
2.4.3 Ping命令的实现 67
2.5 总结 68
第3章 黑客Windows API编程 69
3.1 文件相关API函数 69
3.1.1 文件相关操作API函数 69
3.1.2 模拟U盘病毒 73
3.1.3 免疫AutoRun病毒工具的编写 75
3.2 注册表编程 77
3.2.1 注册表结构简介 78
3.2.2注册表操作常用API函数介绍 79
3.2.3 注册表下启动项的管理 82
3.3 服务相关的编程 86
3.3.1 如何查看系统服务 86
3.3.2 服务控制管理器的实现 87
3.4 进程与线程 93
3.4.1 进程的创建 94
3.4.2 进程的结束 99
3.4.3 进程的枚举 100
3.4.4 进程的暂停与恢复 104
3.4.5 多线程编程基础 108
3.5 DLL编程 114
3.5.1 编写一个简单的DLL程序 114
3.5.2 远程线程的编程 120
3.6 总结 129
第4章 黑客内核驱动开发基础 130
4.1 驱动版的“Hello World” 130
4.1.1 驱动版“Hello World”代码编写 130
4.1.2 驱动程序的编译 133
4.1.3 驱动文件的装载与输出 133
4.1.4 驱动程序装载工具实现 134
4.2 内核下的文件操作 136
4.2.1 内核文件的读写程序 136
4.2.2 内核下文件读写函数介绍 139
4.3 内核下的注册表操作 145
4.3.1 内核下注册表的读写程序 145
4.3.2 内核下注册表读写函数的介绍 148
4.4 总结 150
第5章 黑客逆向基础 151
5.1 x86汇编语言介绍 151
5.1.1 寄存器 151
5.1.2 常用汇编指令集 154
5.1.3 寻址方式 159
5.2 逆向调试分析工具 160
5.2.1 OllyDbg使用介绍 160
5.2.2 OD破解实例 164
5.3 逆向反汇编分析工具 168
5.4 C语言代码逆向基础 177
5.4.1 函数的识别 177
5.4.2 if…else…结构分析 186
5.4.3 switch结构分析 188
5.4.4 循环结构分析 191
5.5 逆向分析实例 195
5.5.1 wcslen函数的逆向 195
5.5.2 扫雷游戏辅助工具 198
5.6 总结 201
第6章 加密与解密 202
6.1 PE文件结构 202
6.1.1 PE文件结构全貌 202
6.1.2 PE结构各部分简介 203
6.2 详解PE文件结构 204
6.2.1 DOS头部详解IMAGE_DOS_HEA-
DER 204
6.2.2 PE头部详解IMAGE_NT_HEAD-
ERS 206
6.2.3 文件头部详解IMAGE_FILE_HEAD-
ER 207
6.2.4 可选头详解IMAGE_OPTIONAL_
HEADER 209
6.2.5 节表详解IMAGE_SECTION_HEAD-
ER 212
6.3 PE结构的3种地址 214
6.3.1 与PE结构相关的3种地址 214
6.3.2 3种地址的转换 215
6.4 PE相关编程实例 218
6.4.1 PE查看器 218
6.4.2 简单的查壳工具 221
6.4.3 地址转换器 224
6.4.4 添加节区 227
6.5 破解基础知识及调试API函数的
应用 233
6.5.1 CrackMe程序的编写 233
6.5.2 用OD破解CrackMe 235
6.5.3 文件补丁及内存补丁 239
6.6 调试API函数的使用 243
6.6.1 常见的3种断点方法 243
6.6.2 调试API函数及相关结构体介绍 246
6.7 打造一个密码显示器 256
6.8 KeyMake工具的使用 260
6.9 总结 262
第7章 黑客高手的HOOK技术 263
7.1 HOOK技术知识前奏 263
7.2 内联钩子—Inline Hook 264
7.2.1 Inline Hook的原理 264
7.2.2 Inline Hook的实现 265
7.2.3 Inline Hook实例 269
7.2.4 7字节的Inline Hook 273
7.2.5 Inline Hook的注意事项 274
7.3 导入地址表钩子——IAT HOOK 277
7.3.1 导入表简介 278
7.3.2 导入表的数据结构定义 278
7.3.3 手动分析导入表 280
7.3.4 编程枚举导入地址表 283
7.3.5 IAT HOOK介绍 284
7.3.6 IAT HOOK实例 284
7.4 Windows钩子函数 287
7.4.1钩子原理 288
7.4.2 钩子函数 288
7.4.3 钩子实例 290
7.5 总结 294
第8章 黑客编程实例剖析 295
8.1 恶意程序编程技术 295
8.1.1 恶意程序的自启动技术 295
8.1.2 木马的配置生成与反弹端口技术 303
8.1.3 病毒的感染技术 309
8.1.4 病毒的自删除技术 313
8.1.5 隐藏DLL文件 316
8.1.6 端口复用技术 323
8.1.7 远程cmd通信技术 326
8.2 黑客工具编程技术 331
8.2.1 端口扫描技术 331
8.2.2 嗅探技术的实现 341
8.3 反病毒编程技术 344
8.3.1 病毒专杀工具的开发 344
8.3.2 行为监控HIPS 366
8.3.3 U盘防御软件 371
8.3.4 目录监控工具 376
8.4 实现引导区解析工具 379
8.4.1 通过WinHex手动解析引导区 379
8.4.2 通过程序解析MBR 383
8.4.3 自定义MBR的各种结构体 383
8.4.4 硬盘设备的符号链接 384
8.4.5 解析MBR的程序实现 385
8.5 加壳与脱壳 387
8.5.1 手动加壳 387
8.5.2 编写简单的加壳工具 389
8.6 驱动下的进程遍历 390
8.6.1 配置VMware和WinDbg进行驱动
调试 390
8.6.2 EPROCESS和手动遍历进程 392
8.6.3 编程实现进程遍历 395
8.7 HOOK SSDT 396
8.7.1 SSDT 396
8.7.2 HOOK SSDT 398
8.7.3 Inline HOOK SSDT 400
8.8 总结 403
附录 反病毒公司部分面试题 404
参考文献 406
展开