随着软件复杂度的不断增加,软件调试的难度越来越大。以调试器为核心的调试技术是征服软件世界的一把利剑。要想成为软件高手,认真修炼软件调试这门剑法是再多也不为过的。本训练营通过12个精选案例让参与者在实战中“事上磨练”,快速进阶。这些案例都来自真实的软件产品和项目,既有深度,又有广度,覆盖Windows和Linux两大平台,编程语言方面涉及C/C++和.Net等。涵盖的技术包括交互式调试(用户态和内核调试),转储文件分析,逆向工程,反调试(加壳)与化解等。训练营由《软件调试》和《格蠹汇编》的作者张银奎(格蠹老雷)亲任教练,现身说法。

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

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

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

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

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

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

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

实战篇:

战役1:堆损毁导致的随机崩溃和挂死(90分钟)

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

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

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

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

讨论:宽松接口的副作用

战役2:后台服务因段错误崩溃(90分钟)

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

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

编程语言:C、汇编

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

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

战役3:与驱动程序间通信时的数据混乱(90分钟)

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

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

编程语言:C

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

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

战役4:应用程序挂死之陷在内核态(90分钟)

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

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

编程语言:C++,.Net

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

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

战役5:.Net程序调试之SDK安装程序死循环(90分钟)

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

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

编程语言:C#, .Net

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

讨论:函数的异常出口

战役6多线程调试之同步问题 (90分钟)

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

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

编程语言:C/C++

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

讨论:无锁编程

战役7:转储分析之双误崩溃(90分钟)

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

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

编程语言:C/C++

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

讨论:单一内核和多内核

战役8:转储分析之系统挂死(90分钟)

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

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

编程语言:C/C++

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

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

战役9:缓冲区溢出之系统服务崩溃(90分钟)

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

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

编程语言:C/C++

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

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

战役10:C++程序中的堆错乱(60分钟)

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

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

编程语言:C/C++

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

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

战役11:混合调试之右键菜单异常缓慢(90分钟)

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

工具和主要技能:WinDBG,交互式调试,调试性能有关的问题

编程语言:C/C++

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

战役12:调试加过壳的软件(90分钟)

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

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

编程语言:汇编语言

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

讲师介绍

张银奎,微软全球最有价值技术专家(MVP),同济大学电子与信息工程学院特邀讲师,前英特尔亚太研发有限公司软件架构师。《软件调试》、《格蠹汇编》的作者,新版《十万个为什么》电子分册撰稿人之一,《程序员》杂志调试之剑栏目作者 。1996年毕业于上海交通大学信息与控制工程系,在软件产业工作20年,在多家跨国公司历任开发工程师、软件架构师、开发经理、项目经理等职务,对IA-32 架构、操作系统内核、驱动程序、虚拟化技术、云计算、软件调优、尤其是软件调试有较深入研究。从2005年开始公开讲授“Windows内核及高级调试”课程,曾在微软的Webcast和各种技术会议上做过《Windows Vista内核演进》、《调试之剑》(全球软件战役研究峰会)、《感受和思考调试器的威力》(CSDN SD2.0大会)、《Windows启动过程》、《如何诊断和调试蓝屏错误》、《Windows体系结构——从操作系统的角度》(以上三个讲座都是微软“深入研究Windows内部原理系列”的一部分)等。翻译(合译)作品有《现代x86汇编语言编程》、《21世纪机器人》、《观止——微软创建NT和未来的夺命狂奔》、《数据挖掘原理》、《机器学习》、《人工智能:复杂问题求解的结构和策略》等。

附录1:往届研习班部分照片

附录2:松雪楼及秀峰景区部分景观

附录3:报名与收费

以下所说费用包括:

§  庐山秀峰景区门票

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

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

§  研习班期间(4月21日上午至4月23日下午5点)的住宿、餐饮和茶点

(不包括往返庐山的交通费用和以上费用之外的其它费用)

标准收费:5600元每人

优惠条款:

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

2)3月31日前报名可以享受8折优惠

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

报名或垂询:

1)联系课程顾问:

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

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

2)请扫描如下二维码,关注“格友”公众号后,发送2017后便可以提交报名信息或者提问。

拍案惊奇——软件调试实战训练营相关推荐

  1. 拍案惊奇——软件调试实战训练营暑期特别班(v2.1)

    随着软件复杂度的不断增加,软件调试的难度越来越大.以调试器为核心的调试技术是征服软件世界的一把利剑.要想成为软件高手,认真修炼软件调试这门剑法是再多也不为过的.本训练营通过12个精选案例让参与者在实战 ...

  2. 软件调试实战:windbg 内核调试 (lkd kd )

    http://advdbg.org/books/swdbg/samples.aspx 一,本地内核调试( lkd ): 管理员权限启动windbg,ctrl + k --> Local 二,查看 ...

  3. 图灵2011年6月书讯【误区】【软件调试修炼之道】即将上市

    - 误区:思维中常犯的6个基本错误 --本书通过许多生动玄妙的生活小事,深刻而犀利地揭示了6种思维陷阱,介绍了形成正确信念和作出科学决策应遵循的方法.通过作者引人入胜的叙事方式,层层深入的分析讲解,你 ...

  4. 软件调试高级研习班庐山秀峰站(2017-06)

    随着软件复杂度的不断增加,软件调试的难度越来越大.以调试器为核心的调试技术是征服软件世界的一把利剑.要想成为软件高手,认真修炼软件调试这门剑法是再多也不为过的.本训练营通过12个精选案例让参与者在实战 ...

  5. 7天物联网智能家居实战训练营(百问网)-day1

    目录 前言 一.学习路线 1.什么是嵌入式? 2.怎么学习嵌入式? 3.学习的基础内功? 二.基本概念 1.什么是arm? 2.arm架构的分类. 三.开发流程 1.交叉开发, 2.调试下载 前言 学 ...

  6. 4月1-5号在武汉举行第五届全国Revit开发中高级实战训练营

    各建筑设计.施工.咨询.业主.高校等单位:   BIM在工程建设行业的应用越来越广泛和深入,在教育.设计.施工.咨询等方面迅速发展,Revit二次开发人才炽手可热.在BIM快速发展之际,拥有Revit ...

  7. [腾讯云 Cloud Studio 实战训练营]Claude+Cloud Studio辅助编程搭建Excel工资核算

    目录 前言 一.实验准备 1.1 Cloud Studio介绍 1.2 GPT工具 Claude 介绍 1.背景介绍 2.接入方式 三.工资核算的实验案例介绍 规则如下 1.迟到次数核算方法: 2.个 ...

  8. 《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程

    本节书摘来异步社区<挖掘管理价值:企业软件项目管理实战>一书中的第2章,第2.4节,作者: 徐勤 责编: 杨海玲, 更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  9. 《软件调试分析技术》学习笔记

    <软件调试分析技术>学习笔记(一) 今天开始写写一些心得体验. <软件调试分析技术>是好友Monster的处女作品.作为一直以的好伙伴,他是我看着长大的,(*^__^*) 嘻嘻 ...

最新文章

  1. Summer Plan(挖坑待填)
  2. Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)
  3. hal库选择滴答时钟函数_STM32入门 : HAL库、标准外设库、LL库
  4. Android个人信息管理系统 源代码,个人信息管理系统源代码(自己写的).doc
  5. [保护模式]段间跳转和跨段跳转
  6. 忘记农民就是忘本-农业大健康·万祥军:不要说自己是教授
  7. linux系统自带python_Linux删除系统自带版本Python过程详解
  8. golang函数调用机制:多返回值,_返回值忽略
  9. Linux 创建进程与关闭进程详解
  10. Xcode 9.0 新增功能大全
  11. 前端学习(2810):完成安卓打包
  12. Little Elephant and Shifts(CF-220C)
  13. php+js实现异步图片上传,JavaScript实现异步图像上传功能
  14. 1. 普通地图(建筑蓝图、手机导航地图)能直接用于移动机器人的定位导航吗?《移动机器人导航杂谈》系列
  15. 更新IIS下WCF服务产生的两则问题
  16. visual studio 设计器不显示_嫦娥上升器为什么不设计成月球勘测器?
  17. P3373 线段树2(多重标记线段树)题解
  18. [大牛翻译系列]Hadoop(7)MapReduce:抽样(Sampling)
  19. NPOI2.0学习(三)
  20. 《计算机系统:系统架构与操作系统的高度集成》——1.5 计算机硬件的演化...

热门文章

  1. linux区分物理机和虚拟机,如何判断linux服务器是虚拟机还是物理机
  2. 实时进销存如何帮助企业从销售、采购到库存实现一体化管理?
  3. 【复杂网络系列】复杂网络研究常用载体集
  4. kprobe与perf probe使用简单记录
  5. 卧室.餐厅.客厅要选择挂什么油画?
  6. 高级渗透之VBS调用WMI接口
  7. Android进阶之路 - 毛玻璃遮罩层
  8. 安装时总是显示“$(DllSelfRegisterEx)不能被注册” 的解决方法
  9. 准程序猿的创意(二)
  10. c# Create Excel file and save as PDF