时候游览调试 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

时候游览调试

申博_安全工具 申博 65次浏览 未收录 0个评论

MSRC(微软平安应急相应中心)致力于团结天下局限内的厂商和平安研究人员,配合防备平安要挟并推进提拔微软的产物平安。MSRC会尽可以快地评价外部报告给他们的破绽,但假如微软的事情人员必须在与研究人员确认破绽发作的经由今后,才确认该破绽的状况,则可以会浪费时候。鉴于此,微软已向事情人员宣布了“时候游览调试”(Time Travel Debugging,TTD)东西,以轻易他们可以轻松供应完整的样本,收缩视察时候。借助于时候游览调试手艺,事情人员可以经由历程行进和回滚的体式格局来跟踪和剖析破绽,如许的话,他们不仅可以找出致使代码崩溃的一切用户输入,同时,还能深切相识破绽自身的相干状况。经由测试,事情人员运用TTD东西后,确认破绽发作缘由的时候,只是本来时候的一半。

假如你想晓得在那里可以取得TTD东西以,及怎样运用它,本文就可以通知你。

时候游览调试引见

不管你将时候游览调试称之为“永久的调试(Timeless debugging)”,“纪录重放调试(record-replay debugging)”,“反向调试(reverse-debugging)”或“时候游览调试(time travel debugging)”,这些观点都邑表达出一个意义:我有纪录顺序实行的才能。一旦你有了这个纪录,你就可以经由历程行进和回滚的体式格局来跟踪和剖析破绽,也可以与同事同享破绽。更好的是,实行跟踪是一种确定性纪录,每一个看到该纪录的人都邑猎取雷同的信息。当题目软件的开辟人员收到TTD跟踪纪录时,他们以至不须要从新复原破绽,只需浏览跟踪文件,即可对破绽做出剖析。

一般有三个与时候游览调试相干的症结组件:

1. 一个纪录器,纪录一切发作的事;

2.一个跟踪文件,纪录一切天生的文件;

3.一个重放器,重放一切发作的事。

究实在质来说,TTD实在就是个调试器

一说起调试器,我们就异常熟习了,这几十年来,调试手艺也没有发作过什么质的提拔。一般状况下,悉数历程分为两步:

1.视察调试器运转历程当中的行动:在此步骤中,你将从新建立一个类似于破绽涌现的模拟环境。该历程就像在你的装备上运转简朴的观点考证顺序并视察破绽搜检一样简朴,也可以像运用特定的软件设置设置一个完整的基础设施来运转错误代码一样庞杂。假如破绽报告充足正确和细致,就可以正确地模拟破绽发作的历程。

2.相识题目发作的缘由,这就是调试器的用武之地。不管体系结构和平台怎样,你对调试器的希冀就是可以准确掌握目的的实行(指令、源代码行),进而设置断点,编辑内存以及编辑处理器上下文。这些操纵下来,剖析也就基本上完成了。但题目是,如许做耗时耗力。

不管你是报告破绽的研究人员照样微软公司来确认破绽的事情人员,Time Travel Debugging都可以协助你疾速举行破绽的视察,而且用最短的时候和流程来反应破绽发作的细节。

微软开辟的用于时候游览调试的手艺被称为“TTD”,该手艺在2006年摆布,被微软研究院宣布,当时的宣布题目是“用于指令级跟踪和顺序实行剖析的框架”,厥后经由微软的调试团队的革新和产物化。该项目依赖于代码模拟来纪录重放所需的每一个事宜,以重现完整雷同的实行历程以及完整雷同的输入和输出的指令序列。模拟器跟踪的数据包括内存读取,寄存器值,线程建立,模块加载等。

纪录/重放

时候游览调试

纪录软件CPU, TTDRecordCPU.dll被注入目的历程并挟制线程的掌握流。模拟器将本机指令解码为内部自定义中心言语(以模拟简朴的RISC指令),缓存块并实行它们。从如今开始,它会实行这些线程,并在事宜发作时举行回调。比方,当转换指令时,这些回调许可跟踪文件写入器组件,以网络软件CPU重放所需的信息,而这些信息都是基于跟踪文件的。

时候游览调试

重放软件CPU ,TTDReplayCPU.dll与纪录CPU同享大部份雷同的代码库。但差别的是,它不是读取目的内存,而是直接经由历程跟踪文件加载数据。这许可你在不须要运转顺序的状况下,重放悉数顺序的实行历程。

跟踪文件

跟踪文件是文件体系中的一个通例文件,以“run”扩大名完毕。该文件运用自定义文件花样和紧缩来优化文件大小。你还可以将此文件视为添补了雄厚信息的数据库,要疾速接见调试器所需的信息,“WinDbg 预览”会在你第一次翻开跟踪文件时建立一个索引文件。建立历程一般须要延续几分钟,一般,此索引约莫是原始跟踪文件的一到两倍。比方,在我的装备上跟踪顺序ping.exe会天生一个37MB的跟踪文件和一个41MB的索引文件。约莫有1973647条指令(每条指令约莫132位)。请注意,在此示例中,跟踪文件异常小,以至于跟踪文件的内部结构占用了大部份空间。而较大的实行跟踪一般包括的指令,约莫每条1到2位。

运用WinDbg预览纪录跟踪的状况

如今你已熟习TTD的各个功用部份了,下面引见怎样运用它们。

猎取TTD:TTD现在在Windows 10上可以经由历程Microsoft市肆中的“WinDbg预览”应用顺序取得:https://www.microsoft.com/en-us/p/windbg-preview/9pgjgd53tn86?activetab=pivot:overviewtab。

时候游览调试

装置应用顺序后,“Time Travel Debugging – Record a trace” 教程将指导你完成纪录你的第一个实行跟踪。

运用TTD构建自动化视察历程

近来对Windows调试器的一个革新是,增加了调试器数据模型,如许你就可以经由历程JavaScript(以及C ++)与之交互。对数据模型的细致引见已超出了本文的局限,但你可以将其视为向用户和调试器扩大运用和公然结构化数据的一种体式格局。 TTD经由历程在@$cursession.TTD 和 @$curprocess.TTD节点下引入异常壮大且奇特的功用来扩大数据模型。

时候游览调试

TTD.Calls是一个函数,你可以经由历程该函数找到诸如“给我挪用foo!bar的每一个位置”或“是不是有一个foo!bar在追踪中返回10”等题目的答案。别的,就像数据模型中的每一个鸠合一样,你可以运用LINQ运算符查询它们。TTD.Calls对象看起来以下所示:

时候游览调试

API完整隐蔽了ISA的特定细节,因而你可以构建与架构无关的查询。

TTD.Calls:重修stdout

美国F15战斗机存在严峻安全漏洞

在8月8日-11日举行的defcon安全大会上,一个由7名白帽子组成的团队经过授权对美国军用战斗机飞行系统进行了安全测试,测试发现F15战斗机系统中存在多个严重漏洞。 攻击者利用漏洞可以控制视频摄像头和传感器,在飞行时可以关闭Trusted Aircraft Information Download Station (可信飞机信息下载站,TADS)。TADS是在战斗机飞行过程中从视频摄像头和传感器来收集数据的一个价值2万美元的设备。 白帽子还发现了美国空军在去年11月举行的defcon大会上发现的尚未修复的安全漏洞。美国空军发言人称未来会继续让美国的白帽子对军用信息系统开展安全测试,以在敌国之前发现系统中

为了演示这些功用是何等的壮大且运用起来异常简朴,事情人员纪录了“ping.exe 127.0.0.1”的实行,并从纪录中从新天生掌握台输出。

在JavaScript中构建它异常简朴,只须要3步:

1.定时候位置排序每一个挪用后,遍历对msvcrt的每一个挪用;

2.读取第二个参数指向的几个字节(数目在第三个参数中);

3.显现累计效果。

时候游览调试

TTD.Memory:查找触及LastErrorValue的每一个线程

TTD.Memory是一个功用壮大的API,它许可你在悉数的内存中查询特定范例(读、写、实行)的内存接见跟踪文件。以下所示的就是每一个内存查询的效果对象:

时候游览调试

这个效果代表了完成的内存接见范例、启动和完成的时候戳、接见内存的线程、接见的内存地址、接见的位置以及读取/写入/实行的值。

为了演示它的壮大功用,事情人员建立了另一个剧本,在应用顺序每次写入当前线程的环境块中的LastErrorValue时,都邑网络挪用客栈:

1.遍历每一个接见&@ $ teb-> LastErrorValue的内存写入;

2.前去目的地,转储当前的挪用客栈;

3.显现终究的效果。

时候游览调试

请注意,你可以运用更多的TTD特定对象来猎取与跟踪中发作的事宜相干的信息,线程等信息,一切这些都纪录在“时候游览调试对象简介”页面上。

时候游览调试

总结

Time Travel Debugging是平安软件工程师的壮大东西,也可用于歹意软件剖析,破绽搜刮和机能剖析。我们愿望TTD的这个引见对你有协助,并勉励你运用它为你发明的平安题目建立实行跟踪。TTD天生的跟踪文件,会以紧缩花样显现,事情人员发起在将文件上传到你喜好的文件存储效劳之前运用7zip(一般将文件缩小到原始大小的10%)。

实践中的罕见题目解答

问:我可以在重放时候编辑内存吗?

答:不能,因为纪录器只保留重放顺序中特定实行途径所需的内容,因而它没法保留充足的信息来从新模拟差别的实行。

问:为何在读取文件时看不到字节?

答:纪录器只担任纪录,这意味着假如另一个对象(这里的NT内核,但也多是写入同享内存部份的另一个历程)将数据写入内存,则模拟器没法晓得它的存在。因而,假如目的顺序从不读取这些值,那末它们将永久不会涌如今跟踪文件中。假如稍后读取它们,那末当模拟器再次猎取内存时,它们的值就会在读取文件中被看到。

问:我须要私有标记或源代码吗?

答:你不须要源代码或私有标记来运用TTD,纪录器运用本机代码,而且不须要任何分外的事情来完成其事情。假如私有标记和源代码可用,则调试器将运用它们并供应与运用源/标记举行调试时雷同的体验。

问:我可以纪录内核形式实行吗?

答:TTD仅用于用户形式实行。

问:纪录器是不是支撑自修正代码?

答:支撑!

问:是不是存在已知的不兼容性题目?

答:有一些,发起你可以在“注意事项”中浏览它们。

问:我是不是须要WinDbg预览才纪录跟踪呢?

答:是的,停止现在,TTD纪录器功用只是“WinDbg预览”的一部份功用,只能从Microsoft Store举行下载。

本文翻译自:https://blogs.technet.microsoft.com/srd/2019/05/29/time-travel-debugging-its-a-blast-from-the-past/


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明时候游览调试
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址