标题: TTD历史回顾 2017年,TTD调试技术随着WinDbg Preview进入公众视野。当时我们以为这是微软憋 大招后放出来的神器,后来的调试实践也证实其确为神器。但后来才发现,有一点搞 错了,这不是憋大招放出来,这是把玩腻了的内部工具随手甩出来。 下面是部分TTD历史回顾,有兴趣了可以读读,就当练英语了。 Time Travel Tracing - Jake Oshins [2008-04] https://community.osr.com/discussion/129469 2008在OSR论坛有人提到,微软有个Time Travel Tracing (tttracer.exe)。当时该 工具并未正式对外提供,一般是正版用户寻求技术支持时,由微软方临时提供并指导 使用,以采集生成.run文件,然后反馈回微软,微软再用内部调试工具处理.run文件。 2008年Watcom就有一款调试器,支持反向执行。 Image or ImageButton without ImageUrl Causes HTTP GET for Default Document - Jim Cheshire [2009-01-28] https://web.archive.org/web/20140513054313/http://blogs.msdn.com/b/jamesche/archive/2009/01/28/image-or-imagebutton-without-imageurl-causes-http-get-for-default-document.aspx 作者当时是微软员工,他处理了一起复杂的BUG反馈。表现形式是空对象引用(null reference),null源自登录页面,BUG发作时已是登录后的某个位置。有个对象不应 该是null,但不知何故变成null。更棘手的是,在2003上很容易重现BUG,同样的代 码在XP开发机上始终无法重现BUG。 作者动用了TTD技术,当时在微软内部叫"iDNA dump",最终成功定位BUG源头。 This is how we troubleshoot Windows interoperability issues in the Open Specifications support team - Sebastian [2011-06-28] https://docs.microsoft.com/en-us/archive/blogs/openspecification/this-is-how-we-troubleshoot-windows-interoperability-issues-in-the-open-specifications-support-team 作者提到Network Monitor 3、Time Travel Tracing。 Time Travel Tracing又叫iDNA tracing,包含两部分,一个用于产生日志的工具, 基本算是对外开放了;一个用于分析日志的工具,目前只是内部使用,已经支持反向 执行。 Application FooBar.exe was randomly locking our computers - Dale [2012-10-23] https://blog.wisefaq.com/2012/10/23/application-foobar-exe-was-randomly-locking-our-computers/ 某软件的客户向厂商反馈,TA们的电脑会被随机锁定。起初厂商脑子里想的类似这种, 他们是在那儿抽烟吗?但同样的反馈出现多次,这肯定不是客户的幻觉了。软件厂商 也很震惊,TA们寻求微软帮助。微软给TA们一个名为TTTracer的东西,用之采集日志 (其实是.run文件)并反馈回微软。最终的调试结论是,厂商的FooBar.exe会发送 "lock workstation"指令给Windows,囧。 Time Travel Debugging in Windows 10 - Dale [2020-07-18] https://blog.wisefaq.com/2020/07/18/time-travel-debugging-in-windows-10/ 作者七年前处理自家软件BUG时寻求过微软帮助,微软临时向他提供了TTTracer,靠 TTD技术定位了BUG。作者七年后发现微软已在WinDbg Preview中公开提供TTTracer。 显然他后知后觉了,微软在2017年就对外开放了TTD,Win10甚至自带tttracer.exe。 -------------------------------------------------------------------------- 后面两篇与TTD无关,搜UWP Calculator时无意中看到的,挺有意思。 An Empirical Study of the Robustness of Windows NT Applications Using Random Testing - Justin E. Forrester, Barton P. Miller [2000-08] https://pages.cs.wisc.edu/~bart/fuzz/fuzz-nt.html ftp://ftp.cs.wisc.edu/paradyn/fuzz/fuzz-nt-src.zip (NT Fuzz Report) 作者在1990年、1995年对UNIX系统做过Fuzz测试,2000年他们对NT 4/2000做类似的 Fuzz测试。Fuzz核心思想一直在那儿,本文算是较早的此类技术文献,读来颇有年代 感。当年分析Fuzz结果比较依赖目标是否开源,逆向工程、无源码调试尚未流行。二 十多年后,Fuzz技术已成长为参天大树,枝繁叶茂。 Fuzzing In The Year 2000 - [2019-03-28] https://blog.trailofbits.com/2019/03/28/fuzzing-in-the-year-2000/ 作者用十九年前"NT Fuzz Report"的测试代码重新测试Win10,仍有93%的崩溃或僵死。 这次Calculator未崩,作者点名表扬了计算器的开发团队。十九年前的目标软件不再 适用于此次测试,作者介绍了重新挑选目标软件的原则,从中可以看出软件变迁历史。 在此过程中作者发现一个非安全类的系统BUG。 所有UWP用同一个进程(ApplicationFrameHost.exe)显示它们的UI。