第1章 黑客入门,Socket API开发必知 1
1.1 Windows API和Socket 1
1.1.1 Windows API编程的优点 1
1.1.2 Socket通信流程 2
1.2服务器端Socket的操作 3
1.2.1在初始化阶段调用WSAStartup 3
1.2.2建立Socket 4
1.2.3绑定端口 4
实例1.1 bind函数调用示例 5
1.2.4监听端口 6
1.2.5 accept函数 6
实例1.2 accept函数示例 7
1.2.6 WSAAsyncSelect函数 7
实例1.3响应Socket事件的结构代码 8
1.2.7结束服务器端与客户端Socket连接 8
1.3客户端Socket的操作 9
1.3.1建立客户端的Socket 9
1.3.2发起连接申请 9
实例 1.4 connect函数示例 9
1.4 Socket数据的传送 9
1.4.1 TCP Socket与UDP Socket 10
1.4.2发送和接收数据的函数 10
1.5自定义CMyTcpTran通信类 12
1.5.1为什么要使用类 13
1.5.2 Visual C++中创建通信类 13
实例1.5 CMyTcpTran类头文件 15
1.5.3 CMyTcpTran类的代码实现 17
实例1.6 CMyTcpTran类方法的函数实现 17
实例1.7 Socket通信库初始化实现方法 18
实例1.8初始化套接字资源 18
实例1.9创建连接通信函数的实现 20
实例1.10初始化Socket资源的接收函数 21
实例1.11发送套接字数据的函数实现 23
1.6小结 25
第2章 专业风范,网络扫描器的开发实现 26
2.1扫描器的产生及原理 26
2.1.1扫描器的产生 26
2.1.2不同扫描方式扫描器原理及性能简介 27
2.2主机扫描技术 29
2.2.1 ICMP Echo扫描 29
2.2.2 ARP扫描 30
2.3端口扫描技术 31
2.3.1常用端口简介 31
2.3.2 TCP connect扫描 32
2.3.3 TCP SYN扫描 33
2.4操作系统识别技术 33
2.4.1根据ICMP协议的应用得到TTL值 33
2.4.2获取应用程序标识 35
2.4.3利用TCP/IP协议栈指纹鉴别 35
2.4.4操作系统指纹识别依据 36
2.4.5操作系统指纹识别代码实现 39
2.4.6 Web站点猜测 48
2.4.7综合分析 49
实例2.1一段端口检测程序代码 50
2.5扫描器程序实现 52
2.5.1 ICMP echo扫描原理 52
2.5.2 ICMP echo扫描的实现方法 53
实例2.2 ICMP扫描程序类定义 54
实例2.3 ICMP扫描的代码实现 55
实例2.4 ICMP扫描判断主机存活 58
2.5.3 ARP扫描的原理 59
2.5.4 ARP扫描的实现方法 60
实例2.5 ARP设备扫描的实现方式 60
实例2.6 ARP扫描程序实例 64
2.5.5 TCP SYN扫描的原理 66
2.5.6 TCP SYN扫描的实现方法 66
实例2.7 TCP SYN扫描实例 66
2.5.7综合应用实例——ARP欺骗程序 70
2.5.8 ARP欺骗的原理 70
2.5.9 Winpcap环境初始化 70
实例2.8 Winpcap驱动程序初始化 70
2.5.10欺骗主程序 77
实例2.9 ARP欺骗程序的实现方法 77
2.6资产信息扫描器开发 83
2.6.1资产信息扫描器的应用范围 83
2.6.2 snmp协议扫描的原理 84
2.6.3 snmp协议扫描的实现方法 84
实例2.10 snmp协议扫描的实现方法 84
2.7小结 87
第3章 提升,暴力破解和防范 88
3.1针对应用程序通信认证的暴力破解 88
3.1.1 FTP协议暴力破解原理 88
3.1.2 FTP协议暴力破解实现方法 88
实例3.1 FTP暴力破解程序代码 89
3.1.3 IMAP协议破解原理 92
3.1.4 IMAP协议破解方法 92
实例3.2 IMAP协议破解 92
3.1.5 POP3协议暴力破解原理 94
3.1.6 POP3协议暴力破解实现方法 95
实例3.3 POP3协议暴力破解 95
3.1.7 Telnet协议暴力破解原理 98
3.1.8 Telnet协议暴力破解实现方法 98
实例3.4 Telnet协议暴力破解 98
3.2防范恶意扫描及代码实现 101
3.2.1防范恶意扫描的原理 101
3.2.2防范恶意扫描的实现方法 102
实例3.5防范恶意扫描程序的框架 102
3.3小结 106
第4章 用代码说话,拒绝服务攻击与防范 107
4.1拒绝服务原理及概述 107
4.1.1拒绝服务攻击技术类别 107
4.1.2拒绝服务攻击形式 108
4.2拒绝服务攻击原理及概述 109
4.2.1 DoS攻击 109
4.2.2 DDoS攻击 110
4.2.3 DRDoS攻击 110
4.2.4 CC攻击 111
4.3拒绝服务攻击代码实现 112
4.3.1 DoS实现代码的原理 112
实例4.1典型UDP Flood攻击 117
实例4.2 SYN Flood攻击代码示例 120
实例4.3典型TCP多连接攻击程序示例 123
实例4.4 ICMP Flood攻击数据包构造 127
实例4.5 ICMP Flood攻击 130
4.3.2 DRDoS攻击的代码实现 132
实例4.6 InitSynPacket函数实现过程 134
实例4.7 InitIcmpPacket函数实现过程 136
实例4.8 SYN反射线程实现方式 136
实例4.9 ICMP反射攻击线程实现 138
实例4.10开启反射攻击线程 140
实例4.11反射攻击线程 140
4.3.3 CC攻击的代码实现 143
实例4.12 CC攻击代码实现 143
4.3.4修改TCP并发连接数限制 146
实例4.13修改TCP并发连接线程 146
4.4拒绝服务攻击防范 151
4.4.1拒绝服务攻击现象及影响 151
4.4.2 DoS攻击的防范 151
4.4.3 DRDoS攻击的防范 152
4.4.4 CC攻击的防范 152
实例4.14 ASP程序Session认证 153
实例4.15 ASP程序判断真实IP地址 153
4.5小结 154
第5章 你也能开发“病毒” 155
5.1感染功能描述 155
5.1.1话说熊猫烧香 155
5.1.2何为“下载者” 156
5.1.3感染功能描述 157
5.2感染型下载者工作流程 165
5.3感染所有磁盘 166
5.3.1感染所有磁盘原理 167
5.3.2感染所有磁盘的实现方法 167
实例5.1感染所有磁盘的代码 167
5.4感染U盘、移动硬盘 167
5.4.1 U盘、移动硬盘感染的原理 167
5.4.2 U盘、移动硬盘感染的实现方法 168
实例5.2 U盘感染实现代码 171
5.5关闭杀毒软件和文件下载的实现 171
5.5.1关闭杀毒软件的原理 171
5.5.2关闭杀毒软件和文件下载的实现方法 172
实例5.3关闭杀毒软件和文件下载 172
5.6结束指定进程 176
5.6.1结束指定进程的原理 177
5.6.2结束指定进程的实现方法 177
实例5.4结束指定进程 177
5.6.3暴力结束进程 178
实例5.5暴力结束进程 178
实例5.6下载执行程序 186
5.7局域网感染 187
5.7.1局域网感染原理 187
5.7.2局域网感染的实现方法 187
实例5.7局域网同网段扫描并感染的代码实现 187
实例 5.8 IPC连接操作 190
5.8隐藏进程 191
5.8.1隐藏进程的原理 192
5.8.2隐藏进程的实现方法 192
5.9感染可执行文件 193
5.9.1感染可执行文件的原理 193
5.9.2感染可执行文件的实现方法 193
实例5.9汇编查找kernel.dll的地址 193
实例5.10遍历文件目录查找exe文件路径 196
实例5.11全盘搜索exe文件 197
5.10感染网页文件 197
5.10.1感染网页文件的原理 197
5.10.2感染网页文件的实现方法 197
实例5.12向指定文件尾部写入代码 197
实例5.13搜索网页文件并调用感染函数 198
实例5.14设置文件隐藏属性 199
5.11多文件下载 200
5.11.1多文件下载的原理 200
5.11.2多文件下载的实现方法 200
5.12自删除功能 202
5.12.1自删除功能的原理 202
5.12.2自删除功能的实现方法 202
实例5.15 程序自删除功能 202
5.13下载者调用外部程序 203
5.13.1下载者调用外部程序的原理 203
5.13.2下载者调用外部程序的实现方法 203
实例5.16 zxarps.exe程序帮助信息 203
实例5.17释放资源调用ARP攻击程序 206
实例5.18调用ARP攻击程序循环攻击C段IP地址 207
5.14“机器狗”程序 208
5.14.1“机器狗”程序原理 208
5.14.2“机器狗”代码实现 209
实例5.19“机器狗”释放驱动并安装执行的代码实现 209
实例5.20驱动感染userinit.exe 213
5.15利用第三方程序漏洞 216
实例5.21迅雷溢出漏洞利用文件Thunder.js 217
5.16程序其他需要注意的地方 219
5.16.1窗口程序的创建 219
实例5.22创建窗口程序的代码实现 219
5.16.2应用程序互斥处理 220
实例5.23应用程序互斥处理 220
5.16.3禁止关闭窗口 221
5.17小结 221
第6章 你当然也能开发杀毒程序 222
6.1下载者的防范措施 222
6.1.1 U盘感染的防范 222
6.1.2驱动级病毒的防范 224
6.1.3阻止第三方程序引起的漏洞 226
6.1.4本地计算机防范ARP程序运行 227
6.1.5其他需要注意的地方 228
6.2 U盘病毒防火墙的开发 228
6.2.1 U盘病毒防火墙的功能及实现技术 228
6.2.2 U盘病毒防火墙的代码实现 229
实例6.1全盘检测AutoRun.inf文件 229
实例6.2单个磁盘的扫描检测程序 229
实例6.3删除病毒文件 231
实例6.4格式化磁盘 231
实例6.5调用System函数格式化磁盘 232
实例6.6备份文件 232
实例6.7增加注册表启动项 235
实例6.8禁止系统自动播放功能 235
6.3小结 237
第7章 攻防的高难度的动作 238
7.1 Rootkit与系统内核功能 238
7.1.1 Rootkit简介 238
7.1.2 Rootkit相关的系统功能 238
7.1.3 Rootkit的分类及实现 239
实例7.1 IRPS形式的Rootkit编码实现 241
7.2 Rootkit对抗杀毒软件 243
7.2.1增加空节来感染PE文件 244
实例7.2给程序增加空字节 244
7.2.2通过Rootkit来绕过KIS 7.0的网络监控程序 251
实例7.3编程绕过KIS 252
7.2.3 HIV绕过卡巴斯基主动防御的方法 253
实例7.4 HIV绕过卡巴斯基 253
7.2.4关于进程PEB结构的修改实现 255
实例7.5进程PEB结构的修改实现 255
实例7.6修改PEB信息 258
7.2.5结束AVP的批处理 259
实例7.7结束AVP的批处理程序 259
7.3 Rootkit程序实例 262
实例7.8 RootKit程序保护文件功能 262
实例7.9上层应用程序调用sys驱动 268
7.4小结 270
第8章 没开发过自己的软件,怎么成大师 271
8.1远程控制软件简介 271
8.1.1远程控制软件的形式 271
8.1.2远程控制软件的特点 272
8.2远程控制软件的功能 273
8.2.1反弹连接功能 273
8.2.2动态更新IP功能 273
8.2.3详细的计算机配置信息的获取 274
8.2.4进程管理功能 274
8.2.5服务管理功能 274
8.2.6文件管理功能 275
8.2.7远程注册表管理 275
8.2.8键盘记录 275
8.2.9被控端的屏幕截取以及控制 276
8.2.10视频截取 276
8.2.11语音监听 276
8.2.12远程卸载 276
8.2.13分组管理 276
8.3技术指标 276
8.3.1隐蔽通信 276
8.3.2服务器端加壳压缩 277
8.3.3程序自身保护技术 281
8.3.4感染系统功能 282
8.4小结 282
第9章 黑客也要懂软件工程 283
9.1设计远程控制软件连接方式 283
9.1.1.典型的C/S型木马连接方式 283
9.1.2反弹型木马连接 284
9.2基本传输结构的设计 284
9.2.1基本信息结构 284
实例9.1定义控被控上报基本信息结构 285
9.2.2临时连接结构 285
实例9.2定义临时通信连接结构 285
9.2.3进程通信结构 285
实例9.3定义进程通信结构 286
9.2.4设计结构成员变量占用空间的大小 286
9.3命令调度过程的结构设计 287
9.3.1设计进程传递的结构 287
实例9.4定义进程结构变量 287
9.3.2优化结构成员变量占用空间的大小 287
9.3.3传输命令结构体定义 288
实例9.5构建传输命令结构 288
9.3.4传输命令结构的设计 288
实例9.6定义传输命令结构预定义的宏 288
实例9.7进程管理命令的代码实现 290
实例9.8双击鼠标事件功能实现 294
实例9.9进程信息管理及显示客户端 296
实例9.10 CProcManageDlg类中的处理过程 297
实例9.11客户端调用CProcManageDlg类 297
9.4小结 298
第10章 吃透开发基础功能 299
10.1反弹端口和IP自动更新 299
10.1.1反弹端口原理 299
10.1.2更新IP模块代码实现 301
实例10.1定义FTP连接信息 301
实例10.2生成IP地址更新文件 301
实例10.3 FTP连接编程实现 302
10.2基本信息的获得 303
10.2.1 CGetHDSerial类获得硬盘序列号 303
实例10.4 CGetHDSerial类头文件宏定义 303
实例10.5 CGetHDSerial类头文件结构定义 303
实例10.6 CGetHDSerial类的方法声明 305
实例10.7 CGetHDSerial类的方法实现 306
实例10.8 GetHDSerial方法实现 309
实例10.9字符转换函数 310
实例10.10 WinNTReadIDEHDSerial()函数实现 312
实例10.11 WinNTReadSCSIHDSerial()函数的实现 313
实例10.12 WinNTGetIDEHDInfo()函数的实现 315
10.2.2获得服务器端计算机的基本信息 315
实例10.13 GetClientSystemInfo()获取计算机基本信息 316
10.3 IP地址转换物理位置 318
10.3.1 QQWry.dat基本结构 318
10.3.2了解文件头 319
10.3.3了解记录区 319
10.3.4设计的理由 321
10.3.5 IP地址库操作类 322
实例10.14 IP地址库操作类的头文件 322
实例10.15 IP地址库操作函数的实现 324
实例10.16 GetStartIPInfo()函数的实现 325
实例10.17 GetRecordCount()和GetStr()的实现 327
实例10.18 GetCountryLocal()函数的实现 328
实例10.19 GetStr)和SaveToFile()函数的实现 329
实例10.20 IP2Add()函数实现IP地址到物理地址的转换 330
实例10.21 IP地址检索函数GetIndex()的实现 330
实例10.22 GetSIP()和IP2D WORD()函数的实现 332
实例10.23测试函数Test()的实现 333
10.4小结 335
第11章 让软件成型 336
11.1进程管理 336
11.1.1 Windows自带的任务管理器 336
11.1.2进程管理实现的原理 337
11.1.3进程管理相关API函数介绍 337
11.1.4代码实现进程管理功能 339
实例11.1进程结束编码实现 339
实例11.2服务器端显示相关信息 341
实例11.3界面初始化的代码实现 342
实例11.4初始化进程及客户端枚举进程功能编码实现 342
11.2文件管理 345
11.2.1服务器端两个重要的函数 346
实例11.5服务器端两个重要的函数 346
11.2.2客户端对应的两个函数 348
实例11.6客户端两个重要的函数 348
11.3服务管理 351
11.3.1客户端代码 351
实例11.7服务管理功能客户端代码实现 351
11.3.2服务器端代码 352
实例11.8服务管理功能服务器端实现方式 352
11.4服务器端启动和网络更新 353
11.4.1服务启动工作函数 354
实例11.9服务启动函数的编码实现 354
11.4.2网络下载器的选择和代码实现 354
实例11.10 HttpDownload类代码 355
实例11.11 wininet.dll库编写下载者 379
11.4.3分析下载文件并且反弹连接 382
实例11.12分析下载文件和反弹连接 382
11.4.4上线设置 383
11.5远程cmdshell 385
11.5.1客户端代码 385
实例11.13远程cmdshell客户端代码 385
11.5.2服务器端代码 386
实例11.14远程cmdshell服务器端代码 386
11.6小结 387
第12章 版本迭代中增加软件功能 388
12.1屏幕捕捉 388
12.1.1屏幕捕捉程序结构 388
12.1.2远程屏幕控制服务器的代码实现 390
实例12.1远程屏幕控制 390
实例12.2屏幕控制客户端编码 394
12.2远程屏幕实现方式 397
12.2.1远程屏幕图像在网络上的传输过程 398
12.2.2屏幕抓取与传输方法及其改进实现 398
12.2.3屏幕图像数据流的压缩与解压缩 399
实例12.3监控端程序实现方法 399
实例12.4程序监听连接及显示连接数量的实现方式 402
实例12.5用户界面初始化及绘制 403
实例12.6连接显示及界面捕获等功能实现 404
实例12.7异或法捕获屏幕数据 406
实例12.8屏幕控制客户端编码实现 411
12.3键盘记录 415
12.3.1客户端执行代码 415
实例12.9键盘记录客户端编码 415
12.3.2服务器端执行代码 420
实例12.10键盘记录服务器端功能代码 420
12.4小结 421
第13章 根据新的需求扩展 422
13.1客户端历史记录提取与系统日志删除 422
实例13.1客户端历史记录提取 422
实例13.2删除日志功能的代码 424
13.2压缩功能的实现 424
实例13.3 zip压缩功能 424
13.3 DDoS攻击模块 425
13.3.1基本DDoS攻击模块 425
实例13.4 DDoS攻击模块 425
13.3.2 UDP攻击模块 428
实例13.5 UDP攻击模块 428
13.3.3 IGMP攻击模块 430
实例13.6 IGMP攻击模块 430
13.3.4 ICMP攻击模块 433
实例13.7 ICMP攻击模块的实现 433
13.3.5 HTTP攻击函数 435
实例13.8 HTTP攻击函数的实现方式 435
13.4 Socks5代理实现 437
实例13.9 Socks5编程实现 440
13.5视频监控模块开发 450
实例13.10视频监控模块编码实现 450
实例13.11视频捕捉功能调用 453
13.6涉密文件关键字查询 457
实例13.12涉密关键字查询 457
实例13.13遍历目录函数 458
实例13.14对比涉密字符串 460
实例13.15 Ul界面显示查询结果 461
实例13.16记录文件 461
13.7 ADSL拨号连接密码获取的原理 462
实例13.17 ADSL拨号连接密码获取的类 462
13.8小结 469
第14章 交付、优化和维护 470
14.1版本控制 470
14.1.1 SVN简介 470
14.1.2 SVN使用 470
14.2界面美化 473
14.2.1概论 473
14.2.2具体操作步骤 474
实例14.1代码中引用Skin++的皮肤库 474
14.2.3添加系统托盘 475
实例14.2建立菜单资源 475
实例14.3创建系统托盘图标 476
14.3小结 476
第15章 大师也要继续学习 477
15.1内网准入控制技术发展分析 477
15.1.1局域网准入控制技术发展分析 477
15.1.2可行的内网准入管理方案 478
15.1.3软件接入网关的原理 478
15.1.4软件接入网关的配置及实现 478
15.1.5硬件接入网关的原理 479
15.1.6硬件接入网关的认证程序流程 480
实例15.1认证通信结构 481
实例15.2程序认证流程 481
实例15.3接入网关的判断逻辑 482
15.1.7联动802.1x接入认证的流程 483
15.1.8 802.1x下的局域网准入控制方案 483
15.2网络蜘蛛在安全领域的应用 485
15.2.1网络蜘蛛的工作原理 485
15.2.2简单爬虫的代码实现 486
实例15.4简单爬虫程序代码实现 487
实例15.5 HTTP访问线程 487
实例15.6相关辅助函数 491
15.3 SSDT及其恢复 492
15.3.1什么是SSDT 492
15.3.2编程恢复SSDT 493
实例15.7编程恢复SSDT 493
15.4小结 502