深入浅出Windows API程序设计(核心编程篇)
- ISBN:9787115571595
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:598
- 出版时间:2022-07-01
- 条形码:9787115571595 ; 978-7-115-57159-5
本书特色
1.本书基于Win10和VS 2019编写。 2.本书包含大量的示例程序,能够帮助读者将所学应用到实际工作中。 本书基于win10和VS2019编写,除了基础知识的梳理,还包含大量的示例程序,系统地介绍了Windows程序设计的核心编程思想与实践,读者通过阅读本书能对Windows程序设计有更加深入的认识,从而应用到实际场景中。
内容简介
本书是Windows API程序设计的进阶图书,内容包括多线程编程,内存管理,文件、驱动器和目录操作,进程,剪贴板,动态链接库,INI配置文件和注册表操作,Windows异常处理,WinSock网络编程,其他常用Windows API编程知识,PE文件格式深入剖析。通过阅读本书,读者可以对Windows程序设计有更加深入的认识,并将其应用到实际场景中。 本书适合有一定经验的Windows API程序开发人员阅读,也可以作为培训学校的教材使用。
目录
1.1 使用多线程的必要性 2
1.2 多线程编程 5
1.3 线程的终止及其他相关函数 8
1.4 线程间的通信 10
1.4.1 全局变量 11
1.4.2 自定义消息 11
1.4.3 事件对象 15
1.4.4 手动和自动重置事件对象 22
1.5 线程间的同步 25
1.5.1 用户模式线程同步 28
1.5.2 内核模式线程同步 36
第 2章 内存管理 48
2.1 保护模式的分段与分页管理机制 50
2.2 获取系统信息与内存状态 53
2.3 虚拟地址空间管理函数 56
2.3.1 虚拟地址空间的分配与释放 57
2.3.2 改变页面保护属性 60
2.3.3 查询页面信息 61
2.4 堆管理函数 62
2.4.1 私有堆的创建和释放 63
2.4.2 在堆中分配和释放内存块 64
2.4.3 其他堆管理函数 67
2.4.4 在C++中使用堆 68
2.5 其他内存管理函数 70
第3章 文件、驱动器和目录操作 72
3.1 基本概念 73
3.1.1 与硬盘存储有关的几个重要概念 73
3.1.2 分区、逻辑驱动器、文件系统和卷 74
3.1.3 文件名、目录、路径和当前目录 76
3.2 文件操作 77
3.2.1 创建和打开文件 77
3.2.2 读写文件 80
3.2.3 文件指针 83
3.2.4 文件属性 85
3.2.5 复制文件 87
3.2.6 移动文件(目录)、删除文件 90
3.2.7 无缓冲I/O 93
3.3 逻辑驱动器和目录 94
3.3.1 逻辑驱动器操作 94
3.3.2 目录操作 96
3.3.3 环境变量 102
3.3.4 SHFileOperation函数 106
3.3.5 监视目录变化 107
3.3.6 获取硬盘序列号 112
3.3.7 可移动硬盘和U盘监控 118
3.3.8 获取主板和BIOS序列号 121
3.4 内存映射文件 127
3.4.1 内存映射文件相关函数 128
3.4.2 通过内存映射文件在多个进程间共享数据 134
3.4.3 使用内存映射文件来处理大型文件 136
3.5 APC异步过程调用 137
第4章 进程 143
4.1 创建进程 143
4.2 多个进程间共享内核对象 150
4.3 进程终止 153
4.4 进程间通信 154
4.4.1 WM_COPYDATA 154
4.4.2 管道 159
4.4.3 邮件槽 164
4.5 进程枚举 165
4.5.1 TlHelp32系列函数 165
4.5.2 EnumProcesses函数 177
4.5.3 进程环境块PEB 181
4.6 进程调试 185
4.6.1 读写其他进程的地址空间 185
4.6.2 获取一个以暂停模式启动的进程模块基地址 189
4.6.3 调试API 193
4.6.4 内存补丁 199
4.6.5 线程环境 204
4.7 窗口间谍 207
4.8 示例:一个程序退出时删除自身 213
第5章 剪贴板 215
5.1 剪贴板常用函数与消息 215
5.1.1 基本剪贴板函数 215
5.1.2 剪贴板相关的消息 218
5.2 使用剪贴板进行进程间通信 220
5.2.1 Clipboard写入端 221
5.2.2 Clipboard读取端 226
5.3 监视剪贴板内容变化 230
5.3.1 相关函数和消息 230
5.3.2 剪贴板监视程序ClipboardMonitor 232
5.3.3 监视剪贴板的新方法 235
第6章 动态链接库 236
6.1 静态链接库 236
6.2 动态链接库 237
6.2.1 创建DLL项目 238
6.2.2 在可执行模块中使用DLL 244
6.2.3 入口点函数DllMain 246
6.2.4 延迟加载DLL 248
6.3 线程局部存储 252
6.3.1 动态TLS 253
6.3.2 静态TLS 256
6.4 Windows钩子 258
6.5 在同一个可执行文件的多个实例间共享变量 265
6.6 注入DLL 267
6.6.1 通过Windows钩子注入DLL 267
6.6.2 通过创建远程线程注入DLL 276
6.6.3 通过函数转发器机制注入DLL 283
6.6.4 通过CreateProcess函数写入ShellCode注入DLL 290
6.6.5 通过调试器写入ShellCode注入DLL 293
6.6.6 通过APC机制注入DLL 293
6.6.7 通过输入法机制注入DLL 293
6.7 Shadow API技术 299
6.8 Hook API技术 304
6.8.1 随机数 304
6.8.2 通过远程线程注入DLL实现API Hook 306
6.8.3 通过全局消息钩子注入DLL实现进程隐藏 322
第7章 INI配置文件和注册表操作 328
7.1 INI配置文件 329
7.1.1 键值对的创建、更新与删除 329
7.1.2 获取键值 330
7.1.3 管理小节 331
7.2 注册表操作 335
7.2.1 子键的打开、关闭、创建和删除 337
7.2.2 键值项的创建或设置、查询和删除 340
7.2.3 子键、键值项的枚举 344
7.2.4 注册表应用:程序开机自动运行设置文件关联 347
第8章 Windows异常处理 349
8.1 结构化异常处理 349
8.1.1 try-except语句 349
8.1.2 GetExceptionCode和GetExceptionInformation 354
8.1.3 利用结构化异常处理进行反调试 358
8.1.4 软件异常 360
8.2 向量化异常处理(全局) 361
8.2.1 向量化异常处理简介 361
8.2.2 利用向量化异常处理实现基于断点的API Hook 362
8.3 顶层未处理异常过滤(全局) 367
8.4 向量化继续处理(全局) 368
第9章 WinSock网络编程 374
9.1 OSI参考模型和TCP/IP协议簇 374
9.1.1 OSI参考模型 374
9.1.2 TCP/IP协议簇 377
9.1.3 套接字网络编程接口 379
9.2 IP地址、网络字节顺序和WinSock的地址表示方式 380
9.2.1 IP地址和端口 380
9.2.2 网络字节顺序 381
9.2.3 WinSock的地址表示方式 381
9.3 WinSock网络编程 383
9.3.1 TCP网络编程的一般步骤 384
9.3.2 TCP服务器程序 390
9.3.3 TCP客户端程序 395
9.3.4 UDP编程 399
9.3.5 P2P技术 402
9.4 WinSock异步I/O模型 403
9.4.1 阻塞模式下的多线程多客户端套接字编程 404
9.4.2 select模型 414
9.4.3 WSAAsyncSelect模型 419
9.4.4 WSAEventSelect模型 424
9.4.5 Overlapped模型 431
9.4.6 完成端口模型 447
9.4.7 深入介绍I/O完成端口 456
9.4.8 深入介绍线程池 463
9.5 IPHelper API及其他函数 474
9.5.1 获取本地计算机的网络适配器信息 475
9.5.2 其他函数 478
9.5.3 校对时间程序 480
9.6 系统网络连接的启用和禁用 482
第 10章 其他常用Windows API编程知识 489
10.1 快捷方式 489
10.2 程序开机自动启动 491
10.2.1 将程序的快捷方式写入开机自动启动程序目录 491
10.2.2 创建任务计划实现开机自动启动 493
10.2.3 创建系统服务实现开机自动启动 493
10.3 用户账户控制 508
10.3.1 自动提示用户提升权限 510
10.3.2 利用ShellExecuteEx函数以管理员权限启动程序 512
10.3.3 绕过UAC提权提示以管理员权限运行 513
10.4 用户界面特权隔离 514
10.5 窗口的查找与枚举 515
10.6 实现任务栏通知区域图标与气泡通知 517
第 11章 PE文件格式深入剖析 520
11.1 DOS头(DOS MZ头和DOSStub块) 521
11.2 PE头(IMAGE_NT_HEADER32结构) 522
11.3 节表(节区信息结构IMAGE_SECTION_HEADER列表) 531
11.4 64位可执行文件格式PE32+ 537
11.5 导入表 538
11.6 导出表 547
11.7 重定位表 552
11.8 模拟PE加载器直接加载可执行文件到进程内存中执行 555
11.9 线程局部存储表 563
11.10 加载配置信息表 568
11.11 资源表 569
11.12 延迟加载导入表 577
11.13 校验和与CRC 577
11.14 64位程序中如何书写汇编代码(以获取CPUID为例) 580
11.15 Detours-master库 583
11.15.1 注入DLL的编写 583
11.15.2 将注入DLL加载到目标进程中 586
11.15.3 编辑可执行文件 591
11.16 通过修改模块导入表中的IAT项来Hook API 592
作者简介
作者从2008年开始学习Windows API程序设计,精通汇编语言、C/C++和Windows API程序设计,精通Windows环境下的桌面软件开发和加密解密。曾在tb网专门为客户定制开发32/64位Windows桌面软件;对加密解密情有独钟,经常逆向分析各类商业软件,对VMProtect、Safengine等高强加密保护软件的脱壳或内存补丁有深入研究和独到见解;喜欢分析软件安全漏洞,曾在金山和360等网站发表过多篇杀毒软件漏洞分析文章。
-
全图解零基础word excel ppt 应用教程
¥15.6¥48.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
零信任网络:在不可信网络中构建安全系统
¥37.2¥59.0 -
硅谷之火-人与计算机的未来
¥12.7¥39.8 -
情感计算
¥66.8¥89.0 -
大模型RAG实战 RAG原理、应用与系统构建
¥69.3¥99.0 -
LINUX企业运维实战(REDIS+ZABBIX+NGINX+PROMETHEUS+GRAFANA+LNMP)
¥51.8¥69.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥67.4¥89.8 -
LINUX实战——从入门到精通
¥51.8¥69.0 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
快速部署大模型:LLM策略与实践(基于ChatGPT等大语言模型)
¥56.9¥79.0 -
数据驱动的工业人工智能:建模方法与应用
¥68.3¥99.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥81.8¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
UN NX 12.0多轴数控编程案例教程
¥24.3¥38.0 -
做好课题申报:AI辅助申请书写作
¥48.9¥69.8 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0