《Windows编程调试技术内幕》[96M]百度网盘|pdf下载|亲测有效
《Windows编程调试技术内幕》[96M]百度网盘|pdf下载|亲测有效

Windows编程调试技术内幕 pdf下载

出版社 万里路图书专营店
出版年 2021-04
页数 390页
装帧 精装
评分 8.8(豆瓣)
8.99¥ 10.99¥

内容简介

本篇主要提供Windows编程调试技术内幕电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

作  者:(印)塔里克·索拉米 著 曹军 译
定  价:129.9
出 版 社:人民邮电出版社
出版日期:2021年04月01日
页  数:456
装  帧:平装
ISBN:9787115501486
主编推荐
1.关于Windows系统中调试和跟踪策略的实用指南; 2.为构建更好的软件而在全开发周期中使用Windows调试器; 3.作者是Windows基础团队首席开发主管,有10余年的系统级软件设计和开发经验; 4.Windows 编程底层调试技术。
目录
第一部分背景
第1章Windows软件开发3
1.1Windows发展过程3
1.1.1Windows版本历史3
1.1.2支持的CPU架构4
1.1.3Windows版本特性5
1.1.4Windows服务术语5
1.2Windows架构6
1.2.1内核态与用户态6
1.2.2用户态系统进程7
1.2.3用户态应用进程8
1.2.4低级别的Windows通信机制11
1.3Windows开发人员接口13
1.3.1开发人员文档资源13
1.3.2WDM、KMDF和UMDF14
1.3.3NTDLL和USER32层14
1.3.4Win32API层15
1.3.5COM层15
1.3.6CLR(.NET)层20
1.4微软开发工具22
1.4.1Windows驱动程序开发工具包(WDK)23
1.4.2Windows软件开发工具包23
1.5小结23
第二部分调试的乐趣和好处
第2章入门27
2.1调试工具介绍27
2.1.1获取Windows调试器软件包27
2.1.2获取VisualStudio调试器31
2.1.3WinDbg和VisualStudio调试器对比31
2.2用户态调试32
2.2.1使用WinDbg调试你的第一个程序32
2.2.2列举局部变量和函数参数值39
2.2.3WinDbg中的源码级调试43
2.2.4符号文件、服务器和本地缓存44
2.2.5WinDbg符号离线缓存45
2.2.6WinDbg中符号解析问题的故障排除46
2.2.7名称修饰注意事项46
2.2.8获取WinDbg命令的帮助48
2.3内核态调试49
2.3.1你的第一个(实时)内核态调试会话50
2.3.2使用物理机建立一个内核态调试环境55
2.3.3使用虚拟机设置内核态调试环境60
2.3.4诊断主机/目标机通信问题62
2.3.5理解KD中断序列63
2.3.6在内核态调试器中控制目标机64
2.3.7在内核态调试器中设置代码断点66
2.3.8获取WinDbg内核态调试命令的帮助68
2.4小结68
第3章Windows调试器是如何工作的70
3.1用户态调试70
3.1.1架构概述70
3.1.2Win32调试API71
3.1.3调试事件和异常72
3.1.4中断序列75
3.1.5设置代码断点76
3.1.6观察WinDbg中的代码断点插入77
3.2内核态调试81
3.2.1架构概述81
3.2.2设置代码断点82
3.2.3单步执行目标82
3.2.4切换当前进程上下文83
3.3托管代码调试84
3.3.1架构概述85
3.3.2SOSWindows调试器扩展87
3.4脚本调试92
3.4.1架构概述92
3.4.2在VisualStudio中调试脚本93
3.5远程调试95
3.5.1架构概述95
3.5.2WinDbg中的远程调试96
3.5.3VisualStudio中的远程调试99
3.6小结101
第4章事后调试102
4.1实时调试102
4.1.1你的第一个实时调试实验102
4.1.2实时调试是如何工作的105
4.1.3使用VisualStudio作为实时调试器108
4.1.4运行时断言和实时调试113
4.1.5会话0中实时调试113
4.2转储调试114
4.2.1用户态转储文件自动生成114
4.2.2使用WinDbg调试器分析崩溃转储文件117
4.2.3使用VisualStudio分析崩溃转储文件123
4.2.4手动生成转储文件124
4.2.5“时间旅行”调试125
4.2.6内核态事后调试126
4.3小结128
第5章基础扩展130
5.1非侵入式调试130
5.2数据断点132
5.2.1深度分析用户态和内核态数据断点133
5.2.2清除内核态数据断点135
5.2.3执行数据断点与代码断点136
5.2.4用户态调试器数据断点操作:C++全局对象和C运行时库137
5.2.5内核态调试器数据断点操作:等待进程退出139
5.2.6高级例子:谁在修改注册表值141
5.3调试器脚本145
5.3.1使用调试器脚本重放命令145
5.3.2调试器伪寄存器146
5.3.3在调试器脚本中解析C++模板名称148
5.3.4脚本实践:在内核调试器中列举Windows服务进程149
5.4WOW64调试150
5.4.1WOW64环境150
5.4.2WOW64进程调试151
5.5Windows调试钩子(GFLAGS)154
5.5.1系统级与进程相关的NT全局标志154
5.5.2GFLAGS工具155
5.5.3调试器扩展命令!gflag157
5.5.4用户态调试器对NT全局标志值的影响159
5.5.5映像文件执行选项钩子159
5.6小结159
第6章代码分析工具161
6.1静态代码分析161
6.1.1使用VC++静态代码分析捕获你的第一个崩溃错误161
6.1.2SAL注释164
6.1.3其他静态分析工具167
6.2运行时代码分析169
6.2.1使用应用程序验证器工具捕获你的第一个错误170
6.2.2幕后花絮:操作系统中支持的校验器172
6.2.3调试扩展命令!avrf176
6.2.4应用程序校验器作为质量保证工具179
6.3小结179
第7章专家调试技巧181
7.1基本技巧181
7.1.1等待一个调试器附加到目标182
7.1.2加载DLL时中断184
7.1.3调试进程启动188
7.1.4调试子进程194
7.2更多有用的技巧203
7.2.1调试错误代码故障203
7.2.2在第一次异常通知时中断209
7.2.3冻结线程210
7.3内核态调试技巧212
7.3.1在用户态进程创建时中断212
7.3.2调试用户态进程启动215
7.3.3加载DLL时中断216
7.3.4未处理SEH异常时中断217
7.3.5冻结线程218
7.4小结220
第8章常见调试场景·第1部分222
8.1调试非法访问222
8.1.1理解内存非法访问222
8.1.2调试扩展命令!analyze223
8.2调试堆破坏225
8.2.1调试本地堆破坏225
8.2.2调试托管(GC)堆破坏233
8.3调试栈破坏241
8.3.1基于栈的缓冲区溢出242
8.3.2在栈破坏分析中使用数据断点243
8.3.3重构损坏栈的调用帧244
8.4调试栈溢出246
8.4.1理解栈溢出246
8.4.2调试命令kf247
8.5调试句柄泄露248
8.5.1句柄泄露例子249
8.5.2调试扩展命令!htrace250
8.6调试用户态内存泄露254
8.6.1使用应用程序验证器工具检测资源泄露254
8.6.2使用UMDH工具分析内存泄露257
8.6.3扩展策略:栈跟踪数据库的自定义引用260
8.7调试内核态内存泄露262
8.7.1内核内存基础知识262
8.7.2使用PoolTagging调查内核态泄露263
8.8小结266
第9章常见调试场景·第2部分268
9.1调试资源竞争268
9.1.1共享状态一致性错误269
9.1.2共享状态生命周期管理错误273
9.1.3DLL模块生命周期管理错误281
9.2调试死锁284
9.2.1(锁顺序)Lock-Ordering死锁285
9.2.2逻辑死锁288
9.3调试访问检查问题292
9.3.1基本的NT安全模型292
9.3.2WindowsVista的改进297
9.3.3结束300
9.4小结301
第10章调试系统内部机制302
10.1Windows控制台子系统302
10.1.1printf背后的魔力302
10.1.2WindowsUI事件的处理309
10.1.3Ctrl+C信号的处理309
10.2系统调用剖析314
10.2.1用户态一侧的系统调用315
10.2.2转换到内核态317
10.2.3内核态一侧的系统调用318
10.3小结319
第三部分观察和分析软件的行为
第11章Xperf介绍323
11.1获取Xperf323
11.2你的第一个Xperf调查327
11.2.1制定一个调查策略328
11.2.2收集场景的ETW跟踪328
11.2.3分析收集到的ETW跟踪329
11.3Xperf的优点和局限性339
11.4小结339
第12章ETW内幕341
12.1ETW架构341
12.1.1ETW设计原则342
12.1.2ETW组件342
12.1.3特殊的NT内核日志记录会话343
12.1.4使用Xperf配置ETW会话344
12.2Windows系统现有的ETW检测347
12.2.1Windows内核中的检测347
12.2.2其他Windows组件中的检测350
12.3理解ETW的Stack-Walk事件355
12.3.1启用和查看内核提供者事件的栈跟踪355
12.3.2启用和查看用户提供者事件的栈跟踪358
12.3.3诊断ETW栈跟踪问题359
12.4在你的代码中添加ETW记录363
12.4.1ETW事件剖析364
12.4.2使用ETWWin32API记录事件367
12.5在ETW中跟踪引导过程370
12.5.1在引导过程中记录内核提供者事件371
12.5.2在引导过程中记录用户提供者事件373
12.6小结375
第13章常见的跟踪场景376
13.1分析阻塞时间376
13.1.1ETW的CSwitch和ReadyThread事件377
13.1.2使用VisualStudio2010实施等待分析379
13.1.3使用Xperf实施等待分析384
13.2分析内存使用389
13.2.1分析目标进程中高级别的内存使用390
13.2.2分析NT堆内存使用391
13.2.3分析GC堆(.NET)内存使用395
13.3跟踪作为一个调试辅助403
13.3.1跟踪错误代码失败403
13.3.2跟踪系统内部机制407
13.4小结413
附录AWinDbg用户态调试快速启动415
附录BWindows内核态调试快速启动428
内容简介
这是一本介绍Windows编程调试技术的书。本书简述了Windows开发框架和操作系统中的层。在用调试和跟踪工具发现数据意义时,这些基础知识非常重要。本书还谈到了“调试的乐趣和好处”,描述了Windows操作系统中调试器的架构,并介绍了一些可扩展的策略,以帮助你充分利用Windows的调试器。本书还展示了WinDbg调试器的用法,通过分析代码和操作系统之间的重要相互作用来帮助你更好地了解系统内核。最后,本书就“观察和分析软件的行为”展开讨论,介绍了Windows事件跟踪(ETW)技术,并说明了在调试和分析调查中利用ETW技术的方法。本书适合程序员、安全人员、软件测试人员阅读,也可以作为大专院校相关专业的教学用书和机构的培训用书。
作者简介
(印)塔里克·索拉米 著 曹军 译
塔里克·索拉米(Tarik Soulami)是Windows基础团队首席开发主管,曾在微软从事过10余年的系统级软件设计和开发工作。加入Windows基础团队之前,他曾在通用语言运行平台(CLR)团队工作,参与了微软.NET框架早期版本的开发。