目录
第 1章 黑客编程入门 1
1.1 初识Windows消息 1
1.1.1 对消息的演示测试 1
1.1.2 对“消息测试”程序代码的解释 3
1.1.3 如何获取窗口的类名称 4
1.2 Windows消息机制的处理 5
1.2.1 DOS程序与Windows程序执行流程对比 5
1.2.2 一个简单的Windows应用程序 7
1.3 模拟鼠标键盘按键的操作 12
1.3.1 基于发送消息的模拟 13
1.3.2 通过API函数模拟鼠标键盘按键的操作 16
1.4 通过消息实现进程间的通信 18
1.4.1 通过自定义消息进行进程通信 19
1.4.2 通过WM_COPYDATA消息进行进程
通信 20
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 总结 32
第 2章 黑客网络编程 34
2.1 Winsock编程基础知识 34
2.1.1 网络基础知识 34
2.1.2 面向连接协议与非面向连接协议所使用的
函数 36
2.1.3 Winsock网络编程知识 37
2.1.4 字节顺序 42
2.2 Winsock编程实例 44
2.2.1 基于TCP的通信 44
2.2.2 基于UDP的通信 46
2.2.3 密码暴力猜解剖析 48
2.3 非阻塞模式开发 55
2.3.1 设置Winsock的工作模式 55
2.3.2 非阻塞模式下简单远程控制的开发 56
2.4 原始套接字的开发 65
2.4.1 Ping命令的使用 65
2.4.2 Ping命令的构造 66
2.4.3 Ping命令的实现 67
2.5 总结 69
第3章 黑客Windows API编程 70
3.1 API函数、病毒和对病毒的免疫 70
3.1.1 文件相关操作API函数 70
3.1.2 模拟U盘病毒 74
3.1.3 免疫AutoRun病毒工具的编写 76
3.2 注册表编程 78
3.2.1 注册表结构简介 79
3.2.2 注册表操作常用API函数介绍 80
3.2.3 注册表下启动项的管理 84
3.3 服务相关的编程 87
3.3.1 如何查看系统服务 88
3.3.2 服务控制管理器的实现 89
3.4 进程与线程 94
3.4.1 进程的创建 95
3.4.2 进程的结束 100
3.4.3 进程的枚举 101
3.4.4 进程的暂停与恢复 106
3.4.5 多线程编程基础 110
3.5 DLL编程 116
3.5.1 编写一个简单的DLL程序 116
3.5.2 远程线程的编程 122
3.5.3 异步过程调用 132
3.6 总结 135
第4章 黑客内核驱动开发基础 136
4.1 驱动版的“Hello World” 136
4.1.1 驱动版“Hello World”代码编写 136
4.1.2 驱动程序的编译 139
4.1.3 驱动文件的装载与输出 140
4.1.4 驱动程序装载工具实现 140
4.2 内核下的文件操作 142
4.2.1 内核文件的读写程序 142
4.2.2 内核下文件读写函数介绍 145
4.3 内核下的注册表操作 151
4.3.1 内核下注册表的读写程序 151
4.3.2 内核下注册表读写函数的介绍 154
4.4 总结 156
第5章 黑客逆向基础 157
5.1 x86汇编语言介绍 157
5.1.1 寄存器 157
5.1.2 常用汇编指令集 160
5.1.3 寻址方式 165
5.2 逆向调试分析工具 166
5.2.1 OllyDbg使用介绍 166
5.2.2 OD破解实例 170
5.3 逆向反汇编分析工具 174
5.4 C语言代码逆向基础 182
5.4.1 函数的识别 183
5.4.2 if…else…结构分析 192
5.4.3 switch结构分析 194
5.4.4 循环结构分析 196
5.5 逆向分析实例 201
5.5.1 wcslen函数的逆向 201
5.5.2 扫雷游戏辅助工具 203
5.6 总结 208
第6章 加密与解密 209
6.1 PE文件结构 209
6.1.1 PE文件结构全貌 209
6.1.2 PE结构各部分简介 210
6.2 详解PE文件结构 211
6.2.1 DOS头部IMAGE_DOS_HEADER
详解 211
6.2.2 PE头部IMAGE_NT_HEADERS详解 213
6.2.3 文件头部IMAGE_FILE_HEADER
详解 214
6.2.4 可选头部IMAGE_OPTIONAL_
HEADER详解 215
6.2.5 IMAGE_SECTION_HEADER详解 219
6.3 PE结构的地址与地址的转换 220
6.3.1 与PE结构相关的3种地址 220
6.3.2 3种地址的转换 221
6.4 PE相关编程实例 224
6.4.1 PE查看器 224
6.4.2 简单的查壳工具 228
6.4.3 地址转换器 231
6.4.4 添加节区 233
6.5 破解基础知识及调试API函数的
应用 239
6.5.1 CrackMe程序的编写 239
6.5.2 用OD破解CrackMe 241
6.5.3 文件补丁及内存补丁 245
6.6 调试API函数的使用 248
6.6.1 常见的3种产生断点的方法 249
6.6.2 调试API函数及相关结构体介绍 252
6.7 打造一个密码显示器 262
6.8 KeyMake工具的使用 265
6.9 总结 267
第7章 黑客高手的HOOK技术 269
7.1 HOOK技术概述 269
7.2 内联钩子——Inline Hook 270
7.2.1 Inline Hook的原理 270
7.2.2 Inline Hook的实现 271
7.2.3 Inline Hook实例 275
7.2.4 7字节的Inline Hook 279
7.2.5 Inline Hook的注意事项 280
7.3 导入地址表钩子——IAT HOOK 283
7.3.1 导入表简介 284
7.3.2 导入表的数据结构定义 284
7.3.3 手动分析导入表 286
7.3.4 编程枚举导入地址表 289
7.3.5 IAT HOOK介绍 290
7.3.6 IAT HOOK实例 290
7.4 Windows钩子函数 293
7.4.1 钩子原理 294
7.4.2 钩子函数 294
7.4.3 钩子实例 296
7.5 总结 300
第8章 黑客编程实例剖析 301
8.1 恶意程序编程技术剖析 301
8.1.1 恶意程序的自启动技术 301
8.1.2 木马的配置生成与反弹端口技术 309
8.1.3 病毒的感染技术 315
8.1.4 病毒的自删除技术 319
8.1.5 隐藏DLL文件 322
8.1.6 端口复用技术 329
8.1.7 远程cmd通信技术 333
8.2 黑客工具编程技术剖析 338
8.2.1 端口扫描技术 338
8.2.2 嗅探技术的实现 347
8.3 反病毒编程技术 351
8.3.1 病毒专杀工具的开发 351
8.3.2 行为监控HIPS 372
8.3.3 U盘防御软件 378
8.3.4 目录监控工具 382
8.4 实现引导区解析工具 385
8.4.1 通过WinHex手动解析引导区 385
8.4.2 通过程序解析MBR 388
8.4.3 自定义MBR的各种结构体 389
8.4.4 硬盘设备的符号链接 390
8.4.5 解析MBR的程序实现 391
8.5 加壳与脱壳 392
8.5.1 手动加壳 392
8.5.2 编写简单的加壳工具 394
8.6 驱动下的进程遍历 395
8.6.1 配置VMware和WinDbg进行驱动调试 396
8.6.2 EPROCESS和手动遍历进程 397
8.6.3 编程实现进程遍历 401
8.7 HOOK SSDT 402
8.7.1 SSDT 402
8.7.2 HOOK SSDT 404
8.7.3 Inline HOOK SSDT 406
8.8 总结 408
第9章 黑客编程实例 409
9.1 网络安全简介 409
9.1.1 网络与网络安全的简单介绍 409
9.1.2 网络协议基础介绍 410
9.2 网络中的破解 418
9.2.1 电子邮箱的破解 418
9.2.2 FTP服务器的破解 424
9.3 Web安全 427
9.4 总结 456
第 10章 安卓软件安全初探 457
10.1 安卓可执行文件格式解析 457
10.1.1 准备一个Dex文件 457
10.1.2 DEX文件格式详解 459
10.2 实现Dex文件格式解析工具 483
10.2.1 解析工具所需的结构体 483
10.2.2 解析Dex文件 483
10.3 总结 493
附录 反病毒公司部分面试题 494
参考文献 496
· · · · · · (
收起)