第1篇 Windows系统黑客技术基础入门第1章 Windows系统黑客技术基础 2
1.1 认识黑客编程 2
1.1.1 什么是黑客 2
1.1.2 了解黑客编程 3
1.2 选择操作系统和编程语言 3
1.2.1 本书应用的操作系统 3
1.2.2 本书选择的编程语言 4
1.3 本书选择的开发工具 4
1.3.1 Visual C++ 6.0的使用方法 5
1.3.2 Borland C++ Builder 6的使用方法 8
1.4 认识Windows API 11
1.4.1 API与可视化编程环境 11
1.4.2 C语言标准库函数和API函数的区别 12
1.4.3 具有字符串参数的API函数 12
第2章 文件操作技术 14
2.1 使用C语言标准库函数进行文件操作 14
2.1.1 打开文件 14
2.1.2 关闭文件 15
2.1.3 读文件 15
2.1.4 写文件 16
2.1.5 文件定位 16
2.2 使用Windows API函数进行文件操作 17
2.2.1 CreateFile()函数 17
2.2.2 CloseHandle()函数 18
2.2.3 ReadFile()函数 19
2.2.4 WriteFile()函数 19
2.2.5 SetFilePointer()函数 19
2.2.6 DeleteFile()函数 20
2.2.7 CreateDirectory()函数 20
2.2.8 RemoveDirectory()函数 21
2.2.9 CopyFile()函数 21
2.2.10 MoveFile()函数 21
2.2.11 GetFileAttributes()函数和SetFileAttributes()函数 21
2.3 文本加密器 23
2.3.1 文本加密的原理 23
2.3.2 使用VC实现文本加密器 24
2.4 文件粉碎机 25
2.4.1 Windows删除文件的原理 25
2.4.2 使用BCB实现文件粉碎 26
第2篇 黑客技术编程 30
第3章 计算机病毒的基本原理与防御 30
3.1 计算机病毒概述 30
3.1.1 什么是病毒 30
3.1.2 病毒编程技术说明 31
3.2 注册表编程 31
3.2.1 认识注册表 31
3.2.2 注册表编程技术 32
3.3 自删除技术的模拟 36
3.3.1 自删除技术简介 37
3.3.2 自删除技术的3种方式 37
3.3.3 自删除技术应用 38
3.4 剖析映像劫持技术 39
3.4.1 什么是映像劫持 39
3.4.2 映像劫持详细分析 40
3.4.3 防范映像劫持技术攻击 42
3.5 彻底认识Autorun.inf文件 43
3.5.1 Autofun.inf文件简介 43
3.5.2 Autofun.inf文件参数 43
3.6 病毒实现典型代码分析 44
3.6.1 隐藏运行,将自身移动到系统目录 45
3.6.2 修改注册表相关键值 45
3.6.3 遍历所有硬盘生成Autornn.inf文件 46
3.7 病毒的查杀与防御 46
3.7.1 病毒的查杀与防御简介 47
3.7.2 防火墙主动防御设置 47
第4章 后门编程与防御技术 49
4.1 后门概述 49
4.2 Winsock网络编程基础 50
4.2.1 C/S模式 50
4.2.2 Winsock API及其常用函数简介 50
4.3 后门分析之自启动 56
4.3.1 启动文件夹 56
4.3.2 自身复制程序 57
4.3.3 注册表启动键值 58
4.3.4 应用程序关联 58
4.3.5 启动文件 59
4.4 Windows服务编程技术 59
4.4.1 Windows服务 60
4.4.2 编写服务程序 60
4.5 服务控制编程技术 62
4.5.1 打开SCM——OpenSCManager()函数 63
4.5.2 打开一个服务对象——OpenService()函数 63
4.5.3 安装一个服务——CreateService()函数 63
4.5.4 启动一个服务——StartService()函数 64
4.5.5 查询服务的运行状态——QueryServiceStatus()函数 64
4.5.6 控制操作——ControlService()函数 65
4.5.7 删除服务——DeleteService()函数 65
4.6 后门分析之屏幕截取 66
4.6.1 屏幕截取简介 66
4.6.2 MFC类实现屏幕截取 66
4.6.3 BCB实现屏幕截取 68
4.7 后门分析之系统信息搜集与控制 69
4.7.1 关闭/重启计算机 69
4.7.2 指定HTTP地址下载文件 70
4.7.3 清除系统日志 71
4.8 后门分析之结果回显 72
4.8.1 管道后门简介 72
4.8.2 双管道后门代码 72
4.9 透视后门连接机制 73
4.10 后门的查杀与防范 74
4.10.1 怀疑被感染 74
4.10.2 确定被感染 76
4.10.3 手动杀毒 76
第5章 扫描嗅探技术原理剖析 79
5.1 认识多线程 79
5.1.1 理解线程 79
5.1.2 利用标准Windows API创建多线程程序 80
5.1.3 利用BCB提供的线程类 83
5.2 网络编程深入之原始套接字 84
5.2.1 原始套接字简介 84
5.2.2 利用原始套接字嗅探数据流 85
5.3 扫描的实现 87
5.3.1 完整端口扫描 87
5.3.2 TCP SYN扫描 91
5.4 使用WinPcap 96
5.5 Sniffer原理剖析 99
5.5.1 Sniffer的危害 100
5.5.2 Sniffer的工作原理 100
5.5.3 TCP/IP协议的4层结构 101
5.6 Sniffer编程实现 103
5.7 ARP欺骗 106
5.7.1 ARP欺骗简介 106
5.7.2 ARP欺骗演示程序 106
5.8 针对扫描嗅探的防御 108
5.8.1 针对扫描的防御 108
5.8.2 针对嗅探的防御 109
5.8.3 针对ARP欺骗的防御 110
第6章 木马下载者的技术分析与防范 111
6.1 认识木马下载者 111
6.1.1 “挂马”原理 111
6.1.2 木马下载者简介 112
6.2 网络编程深入之WinInet 112
6.2.1 InternetOpen()函数 112
6.2.2 InternetConnect()函数 113
6.2.3 InternetOpenUrl()函数 114
6.2.4 InternetQueryDataAvailable()函数 115
6.2.5 InternetReadFile()函数 115
6.2.6 InternetSetFilePointer()函数 116
6.2.7 InternetWriteFile()函数 116
6.2.8 InternetCloseHandle()函数 117
6.2.9 WinInet下载程序演示 117
6.3 服务端生成技术 121
6.3.1 FindResource()函数 121
6.3.2 LoadResource()函数 122
6.3.3 SizeofResource()函数 122
6.3.4 LockResource()函数 122
6.3.5 服务器端程序演示 123
6.4 UPX加壳技术 126
6.4.1 UPX加壳技术简介 126
6.4.2 UPX加壳技术演示 126
6.5 木马下载者的防御 127
6.5.1 配置防火墙 127
6.5.2 更新系统 128
第7章 U盘小偷的剖析与防御 129
7.1 认识U盘小偷 129
7.1.1 U盘小偷概述 129
7.1.2 U盘查找的简单实现 130
7.2 理解Windows消息机制 130
7.2.1 消息的基本概念 130
7.2.2 Windows消息系统 131
7.2.3 SDK消息机制 132
7.2.4 BCB消息机制 132
7.2.5 非标准消息 136
7.2.6 自己发送消息 137
7.3 U盘小偷的原理 138
7.3.1 关于事件 139
7.3.2 捕获U盘事件 139
7.4 全局热键的实现 144
7.4.1 GlobalAddAtom()函数 144
7.4.2 RegisterHotKey()函数 145
7.4.3 UnregisterHotKey()函数 145
7.5 防御U盘小偷 146
7.5.1 防御U盘小偷的原理 146
7.5.2 加密U盘 146
7.5.3 解密U盘 148
7.6 其他编程技巧分析 149
7.6.1 通过INI文件保存配置信息 149
7.6.2 U盘防火墙 150
7.6.3 只允许运行一个实例 151
7.6.4 遍历搜索指定的文件类型 151
7.6.5 添加作者主页链接 152
7.6.6 显示版权信息对话框 153
第8章 密码盗窃的模拟与防范 154
8.1 密码大盗与键盘记录器简介 154
8.1.1 密码大盗简介 154
8.1.2 键盘记录器简介 156
8.2 密码大盗工作原理与功能模拟 156
8.2.1 密码大盗工作原理 156
8.2.2 密码大盗功能演示 156
8.2.3 密码大盗功能实现 157
8.3 键盘记录器工作原理与功能模拟 161
8.3.1 键盘记录器工作原理 161
8.3.2 钩子简介 162
8.3.3 使用钩子实现键盘记录器 164
8.4 ASP收信的实现 167
8.4.1 ASP收信简介 167
8.4.2 ASP收信程序解析 167
8.5 邮箱收信的实现 169
8.5.1 邮箱收信简介 169
8.5.2 邮箱收信程序解析 169
8.6 密码大盗与键盘记录器的防御与查杀 171
8.6.1 使用反病毒软件 171
8.6.2 使用主动反击法 171
第9章 验证码的破解与防范 173
9.1 认识验证码 173
9.1.1 验证码的起源 173
9.1.2 验证码的工作原理 173
9.1.3 验证码的分类 174
9.1.4 破解验证码的原理分析 174
9.2 BMP文件结构分析 177
9.2.1 BMP文件结构概述 177
9.2.2 BMP文件头信息 178
9.2.3 BMP图像信息 180
9.3 分析Z-Blog验证码 183
9.3.1 什么是OCR 183
9.3.2 分析Z-Blog验证码 184
9.4 Z-Blog验证码的破解原理分析 185
9.4.1 将验证码图片下载到本地 185
9.4.2 将验证码加载到程序的相应位置 186
9.4.3 分析验证码图片 186
9.5 验证码破解攻击的防范方法 189
第3篇 安全防御 191
第10章 进程控制技术 191
10.1 进程概述 191
10.2 进程的创建 192
10.2.1 WinExec()函数 192
10.2.2 ShellExecute()函数 192
10.2.3 CreateProcess()函数 194
10.3 进程的管理与控制 195
10.3.1 打开进程 195
10.3.2 操作进程权限 195
10.3.3 终止进程 196
10.4 动态链接库编程 197
10.4.1 动态链接库的创建 197
10.4.2 动态链接库的调用 199
10.5 进程的枚举 200
10.5.1 系统快照 200
10.5.2 利用PSAPI 201
10.5.3 利用WTSAPI 202
10.5.4 利用NTDLL 203
10.6 进程的隐藏 204
10.6.1 进程隐藏简介 204
10.6.2 进程隐藏方法 205
10.7 进程保护技术 209
第11章 病毒专杀工具的编写 210
11.1 “熊猫烧香”病毒及专杀工具分析 210
11.1.1 “熊猫烧香”病毒与其感染特征 210
11.1.2 “熊猫烧香”病毒专杀工具工作流程 211
11.2 PE文件格式分析 211
11.2.1 PE文件格式整体概要 211
11.2.2 DOS MZ header分析 212
11.2.3 PE header分析 212
11.2.4 IMAGE_OPTIONAL_HEADER分析 212
11.2.5 IMAGE_SECTION_HEADER分析 214
11.2.6 PE文件格式分析程序示例 214
11.2.7 PE文件感染分析 217
11.3 “熊猫烧香”病毒专杀工具的主要代码 217
11.3.1 启动专杀工具 217
11.3.2 扫描进程 219
11.3.3 扫描aurorun.inf 220
11.3.4 查找并恢复感染文件 221
11.3.5 主函数 222
11.4 清除感染痕迹 223
11.4.1 修改图标 223
11.4.2 清除注册表项和值 223
11.5 免疫功能实现 226
第12章 NTFS数据流的检测与清除 231
12.1 认识NTFS数据流 231
12.1.1 数据流的概念演示 231
12.1.2 数据流特性演示 232
12.1.3 NTFS数据流的读/写 233
12.2 NTFS数据流的深入分析 233
12.2.1 利用WinRar实现隐藏文件 234
12.2.2 利用ScanNTFS查找和清除NTFS数据流 235
12.3 NTFS数据流扫描器的实现 236
12.3.1 数据流扫描器原理 236
12.3.2 main()函数 237
12.3.3 FindAllFilesInDirectory()函数 238
12.3.4 GetFileDataStream()函数 240
12.3.5 ReadStream()函数 240
第13章 系统监控技术 243
13.1 系统监控概述 243
13.2 文件监控技术 243
13.2.1 使用FindChangeNotification系列函数 243
13.2.2 使用ReadDirectoryChangesW()函数 246
13.3 注册表监控技术 249
13.3.1 RegNotifyChangeKeyValue()函数简介 249
13.3.2 RegNotifyChangeKeyValue()函数使用演示 249
13.4 进程监控技术 251
13.4.1 shell钩子简介 251
13.4.2 创建shell钩子 252
第14章 API Hook与SPI 257
14.1 API Hook综述 257
14.1.1 代理DLL 257
14.1.2 磁盘文件补丁 258
14.1.3 内存补丁 258
14.2 API Hook实例 258
14.2.1 API Hook的编写 258
14.2.2 API Hook的测试 263
14.3 使用Detours实现API Hook 265
14.4 SPI综述 266
14.4.1 SPI简介 266
14.4.2 LSP的安装 267
14.5 SPI实例 272
14.5.1 SPI的编写 272
14.5.2 SPI的测试 288
第15章 WinLogon编程和SSDT的挂钩与恢复 290
15.1 WinLogon概述 290
15.2 WinLogon编程实例 291
15.3 认识SSDT 293
15.4 挂钩SSDT 294
15.5 恢复SSDT 298
15.5.1 获取系统服务函数原始地址 299
15.5.2 恢复SSDT的实现代码 301
15.5.3 应用层实现代码 311
附录A Visual C++ 6.0的安装 315
附录B Borland C++ Builder 6.0的安装 320