拍案惊奇——软件调试实战训练营

网友投稿 691 2022-05-29

时间:2017年6月2-4日(周五-周日)(三天两晚封闭训练,挑灯论剑)

地点:庐山秀峰景区内松雪楼(住)和中正行营(研习)

形式:实战演练和讨论点评

培训对象:在Windows或者Linux平台上从事开发或测试的软件工程师、项目带头人和技术经理

主办单位:高端调试网站、上海曜印信息科技有限公司

热身篇:双剑合璧——WinDBG与GDB之理一分殊(90分钟)

概要:以GDB和GNU事业的开创者Richard Stallman和NT内核之父David Cutler的传奇故事开场,这一部分将介绍GDB和WinDBG这两大调试器的核心特征和关键用法,比较其异同。让听者在传奇的故事和精彩的演示中快速掌握这两把利剑的基本招式。

拍案惊奇——软件调试实战训练营

实战篇:

概述:这是一个因为软件故障而导致外接鼠标键盘无法工作的诡异问题,它与移动硬盘配套软件的后台服务有关,但也与操作系统系统函数的疏漏密不可分

工具和主要技能:WinDBG,转储文件分析,反汇编,从栈上观察参数,无源代码调试(跟踪第三方代码)

编程语言:C/C++,.Net,汇编

知识点:栈,堆的布局,strcpy的实现,rep movs,x86寄存器的约定用法,溢出,异常,CONTEXT和EXCEPTION_RECORD,DeviceIoControl

讨论:宽松接口的副作用

概述:Linux下重要后台服务(Daemon)随机崩溃,深挖到底,竟然与C语言的规范有关,让你深刻认识C与C++的一个大不同之处,感受著名的头文件陷阱

工具和主要技能:GDB,GCC,map,dmesg,调试Linux应用程序,反汇编,插入代码JIT调试

编程语言:C、汇编

知识点:虚拟内存,分页机制,页表,缺页异常,段错误,空指针,AT&T汇编和Intel汇编,调用规约

讨论:信任程序员,是耶非耶?

概述:应用程序与驱动程序通信时,驱动程序总是收到错误的数据,打印出来观察,竟然是日志信息送给了驱动…

工具和主要技能:GDB,printk,dmesg

编程语言:C

知识点:虚拟文件系统,Linux驱动程序,sysfs,与应用程序通信,标准文件

讨论:句柄的隐患(多维度审视句柄)

概述:向Powerpoint粘贴文件时,它突然挂死,过错却不在它,而是与系统机制(DDE)有关,不负责任的第三方服务软件也是导致问题的关键因素

工具和主要技能:WinDBG,内核调试,在内核调试会话中调试应用程序

编程语言:C++,.Net

知识点:剪贴板,DDE,OLE,系统调用,消息机制,Send与Post的区别,广播消息,Win32K,服务程序,服务循环

讨论:(软件)协作思想的对与错

概述:Windows7 Platform SDK安装程序停滞不前,多次重试无果,上调试器发现是因为异常处理不当而陷入死循环

工具和主要技能:WinDBG,使用WinDBG +SOS扩展分析.Net程序的转储文件,使用ildasm反汇编.Net程序

编程语言:C#, .Net

知识点:异常,try{}catch,try{}finally,动态语言,Dispose方法,方法表,属性,托管异常

讨论:函数的异常出口

概述:多个线程的首要问题是如何同步?做的不好有可能导致死循环,也有能出现死锁,本战役对这两种情况各举一例,一个是DUMP,一个是活动目标

工具和主要技能:WinDBG,多线程调试,观察线程的执行时间

编程语言:C/C++

知识点:线程和进程,管理线程和进程的数据结构,TEB,fs/gs段,volatile关键字,死循环,临界区,!locks, !cs -l,CPU提供的同步设施,LOCK前缀,互锁系列,intricins,同步方法之比较

讨论:无锁编程

概述:严重的双误崩溃大多是因为栈枯竭导致的,栈怎么会用完呢?一位书友最先向我反应了这个问题,后来在显卡驱动中又多次遇到这个问题

工具和主要技能:WinDBG,系统崩溃转储分析

编程语言:C/C++

知识点:异常的分类,中断处理,IDT表,双误,显卡驱动,DPC,内核态栈,操作系统的任务切换机制;CPU的硬件任务切换;内核态栈溢出;任务状态段TSS,内核态栈溢出; CR2寄存器;CR3寄存器,GPU,显卡驱动概要

讨论:单一内核和多内核

概述:系统级挂死(system hang)大多与驱动程序有关,但这个系统级挂死确实不只是软件的问题

工具和主要技能:WinDBG,转储分析,手动触发系统崩溃,根据反汇编结果产生C/C++代码

编程语言:C/C++

知识点:DPC,IRQL,硬件资源分配,!arbiter,设备栈,中断处理,USB的端口状态寄存器

讨论:延迟等待硬件的方法

概述:使用多种方法调试Win7系统中电源管理服务发生崩溃而导致系统反复重启的问题,使用内核调试解决复杂的用户态问题,探讨软件的安全问题

工具和主要技能:WinDBG,内核调试,JIT调试,使用内核调试会话调试用户态问题

编程语言:C/C++

知识点:栈缓冲区溢出;基于Cookie的溢出检测;服务崩溃;未处理异常,异常的分发过程,JIT调试的原理,会话0,强制登出(logoff),fail fast,GCC的栈溢出保护

讨论:安全开发和调试有关安全的问题

概述:以一个典型的因为字符串类使用不当而导致的堆错误为例,深刻理解进程中的多个CRT堆,堆管理器的脆弱之处,字符串类分配内存的方法,静态链接和动态链接可能产生的影响,分享使用堆的最佳实践,思考面向对象设计的基本问题

工具和主要技能:WinDBG,交互式调试,硬件断点

编程语言:C/C++

知识点:堆,堆管理器,CRT,CRT的多个实例,静态链接CRT和动态链接CRT,析构,字符串类,自动内存分配

讨论:公开数据成员的得与失

概述:现场定位Windows资源管理器中右键菜单异常缓慢的原因,在调试器中观察“本地程序中的托管来客”

工具和主要技能:WinDBG,交互式调试,调试性能有关的问题 粗体文字 编程语言:C/C++

知识点:混合代码情况下的未处理异常;栈溢出;浮点计算单元和浮点寄存器;浮点异常的延迟性;上下文扩展模块的注册方法

概述:现场调试经过加壳保护的应用软件,介绍反调试的典型方法和原理,以及化解之道

工具和主要技能:WinDBG,IDA Pro,反汇编,交互式反汇编,Anti-VM和应对

编程语言:汇编语言

知识点:单步标志,硬件断点寄存器,异常处理器,加壳保护的一般方法,检查调试器,隐藏调试器,记时法反跟踪,内存HASH检测,倒车调用,花指令,虚拟机,检测在虚拟机中运行的方法,检测VM之I/O端口,VMWare后门,VPC后门,SIDT方法,STR指令

讲师介绍

附录3:报名与收费

以下所说费用包括:

• 庐山秀峰景区门票

• 研习班期间的旅游意外险

• 包含研习材料的U盘一个

• 研习班期间(6月2日上午至6月4日下午4:30)的住宿、餐饮和茶点 (不包括往返庐山的交通费用和以上费用之外的其它费用)

标准收费:5600元每人

优惠条款:

1)同一单位每5人报名可免一人费用

2)5月20日前报名可以享受8折优惠

3)在校学生或者个人自费参加请联系课程顾问询问优惠价格(视报名时间而不同)

报名或垂询:

1)联系课程顾问:

a) Cindy Long,电话:13621638537,电子邮件:cindy.long@leshanting.cn

b) Lisa Zhang ,电话:13801874134,电子邮件:lisa.zhang@leshanting.cn

2)公司付款账号:

收款单位:上海曜印网络科技有限公司

银行账号:1001122409003035262

本文转载自异步社区。

软件开发 软件开发

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:IDEA安装教程
下一篇:MYSQL入门详解
相关文章