格友们下塌松雪楼稍作休息后,老雷先带大家参观了中正行营。中正行营初建于民国,蒋介石到庐山检阅庐山军官训练团时多次在此办公。庐山军官训练团于1933年7月创办,当年训练军官7600人,历年累计训练军官25000多人(根据观音桥景区展览图片介绍)。训练团使用的教材至今仍偶尔可以看到,下面这幅照片是从孔夫子旧书网上收集到的,上面还有涂抹的印痕。
参观松雪楼后,老雷带领大家看了著名的秀峰寺碑,秀峰寺最早建于南唐,名叫开先寺,由南唐中主李璟赐建,纪念自己曾在秀峰景区内的鹤鸣峰下读书(今仍有读书台遗迹),“开先”的意思是开了读书人做皇帝的先河。与秀峰寺碑并旁而立的另一块碑上刻的是洒松雪,由雍正所书,这是松雪楼名字的由来。
沿着小路步行20米就到了漱玉亭和龙潭。站在漱玉亭中,可以看到龙潭全貌。右侧是上龙潭,左侧是下龙潭,正面对的是上下龙潭中间的大量题刻。最显眼的就是著名书法家米芾所写的青玉峡三个大字。青玉峡是龙潭所在峡谷的名字。峡谷上面便是著名的黄岩瀑布(李白所咏飞流直下三千尺者)。很多先贤曾经站在漱玉亭中感慨万千,诗情大发,赞美美丽的青玉峡和龙潭。苏轼下面这首《开先漱玉亭》颇为有名。
开先漱玉亭
高岩下赤日,深谷来悲风。
擘开青玉峡,飞出两白龙。
乱沫散霜雪,古潭摇清空。
余流滑无声,快泻双石谼。
我来不忍去,月出飞桥东。
荡荡白银阙,沉沉水精宫。
愿随琴高生,脚踏赤鯶公。
手持白芙蕖,跳下清泠中
龙潭四周的四壁上刻满了历代先贤的题字,据说有140多幅。老雷向格友们介绍了其中的几幅。
沿石阶向上几步,可以下到上下龙潭中间的一段平坦小路,近距离欣赏龙潭。附身下去,可以捧起清澈的龙潭水亲近一下。经过一个小小的石拱桥,走到龙潭对岸,可以看到龙潭东侧的题刻,包括元丞相刺不花的“虎”字,米芾所写的“第一山”等。
龙潭美景难以胜述,大家还没有看够就到了午饭时间,午饭后,略作休息,便都带着电脑到了教室,找自己喜欢的位置坐下,1点时,研习班正式开始。
老雷首先从一张谷歌地图照片介绍大家所在的地理位置:毗邻长江,背靠庐山,面对八百里鄱阳湖。
接下来老雷按时间顺序,摘取重要历史人物在秀峰的活动,简单介绍了秀峰深厚的文化底蕴。镜头慢慢拉到近代和当下,逐渐过渡到了本次演习班,老雷解释了为何选择秀峰,以及本次活动以动手实战为核心的特色,概览了所有议程。
序言结束,热身篇开始,题目为《双剑合璧——WinDBG与GDB之理一分殊》,这是老雷专为这次研习班设计的讲义,旨在系统介绍和对比WinDBG和GDB两大著名调试器,讲义长达180多页。
讲其老雷钟爱的调试器,自然是滔滔不绝。除了技术本身,还有技术背后的人物和故事。除了对比讲解重要的调试功能和命令外,还有演示和带着大家一起操作;除了知识本身,还有关于方法论和实践经验的分享。
在介绍背景时,老雷特别截取了David Cutler所说的一句话:“I've always been a very hands-on person.”是啊,光说不练怎么是格蠹学派的作风?实际动手才会有深刻的认识,不仅记忆深刻,而且可以触发更多思考。
打印出的《双剑合璧——WinDBG与GDB之理一分殊》讲义是黄色封皮,于是称之黄皮书。案例实战部分是蓝色封面,称为蓝皮书。黄皮书的内容,一次讲完太长了,虽然也有演示和动手试验,但是都是比较短小的,老雷本来就打算分三次讲完的。于是讲到大约三分之一时,便暂时放下黄皮书,切换到蓝皮书的第一个案例。
第一个实战案例是转储分析,问题来自几年前西部数据(WD)移动硬盘的后台服务程序。大家打开dump文件,在老雷的带领下,步步推进,追查问题根源。一边熟悉调试命令,一边深入理解堆、栈、WoW等基础设施。
整个分析分为两个阶段,第一阶段从加载wow64exts和WoW的简介入手,分析栈回溯,找寻第一个异常,然后观察栈上的原始数据,寻找到EXCEPTION_RECORD结构体和CONTEXT结构体,再时光倒流后异常时的状态,发现是memcpy越界。
第二阶段继续追查memcpy的参数为何传递错误,反汇编理解GetVolumeNameForRoot函数,然后探讨万能接口风格的DeviceIoControl API。最后水落石出查出是驱动返回了长度-1代表查询不到名字,可DeviceIoControl仍返回TRUE,而GetVolumeNameForRoot函数只判断返回值为TRUE就认为操作成功了,把-1作为长度调用memcpy函数。结果导致野蛮“搬运”,覆盖掉了堆上的很多数据。导致进程表现诡异,有时崩溃,有时死循环。
忙碌的时光总是过的很快,一下午时间很快过去了。大约6点半,下课吃饭。吃过晚饭稍作休息后,继续战斗,打开黄皮书,以挖地雷小程序做靶子,练习各种调试命令,大家兴趣盎然,中正行营里灯火通明。
***********************************************************
正心诚意,格物致知,以人文情怀审视软件,以软件技术改变人生。
欢迎关注格友公众号