一款好用的macOS内核调试专用工具——LLDBagility

访客4年前黑客工具1150

它是Francesco Cagnin相关macOS内核调试的第二篇文章内容。在上一篇文章中,创作者界定了这篇文章内容中应用的大部分专业术语,叙述了怎样为macOS内核执行内核调试,并探讨了能用专用工具的局限。这篇文章内容中,大家就详细介绍LLDBagility,它是上原文中为macOS内核执行内核调试的解决 *** ,可出示更轻轻松松,更好用的macOS调试感受。

在当前状况下,调试macOS内核(XNU)不太好用,尤其是充分考虑例如务必安裝调试内核搭建及其没法设定监控点或中止实行的内核调试器的麻烦之处。为了更好地改进这类状况,创作者开发设计了LLDBagility ,它是一种依靠迅速调试协议书(FDP,在文中后边开展详细介绍)调试macOSvm虚拟机的专用工具。最重要的是,LLDBagility完成了一组新的LLDB命令,这种命令容许调试器实行下列实际操作:

1.联接到运作中的macOS VirtualBoxvm虚拟机并密秘地调试其内核,而不用变更顾客电脑操作系统(比如,不用开发设计或调试内核, boot-args改动或禁止使用SIP),而且只需对vm虚拟机的配备开展最少的变更;

2.随时随地终断(随后修复)顾客内核的实行;

3.即便 在运行全过程逐渐时,还可以在内核编码中的一切部位设定硬件配置断点;

4.设定在特定储存部位的载入或载入浏览时开启的硬件配置切入点;

5.储存并在几秒内修复vm虚拟机的情况。

这种命令致力于与LLDB中早已能用的命令一起应用,比如运行内存/存储器读/写、断点(手机软件),流程等。除此之外,假如调试后的内核附加了其内核调试工具箱(乃至很有可能沒有,后边会探讨),那麼绝大部分lldbmacros都能够一切正常工作中。

下边,大家更先简略详细介绍什么叫FDP,及其它怎样提高VirtualBox来完成vm虚拟机反省。随后,大家科学研究LLDBagility怎样运用这种新作用全透明地将LLDB联接到macOSvm虚拟机,并演试一个简易的内核调试对话。最终,大家明确提出了一些在欠缺调试工具箱的内核搭建中应用目前lldbmacros的念头。

根据迅速调试协议书对vm虚拟机开展反省

迅速调试协议书是一个轻量、迅速和高效率的调试API,用以vm虚拟机的反省性检查,应用C语言撰写,现阶段仅做为VirtualBox源码[FDP]的补丁下载公布。该API的功效以下:

1.载入和载入vm虚拟机存储器和运行内存;

2.设定和撤消设定硬件配置/手机软件断点和切入点;

3.中止、修复和单步实行vm虚拟机;

4.储存并修复vm虚拟机情况;

FDP的隐藏性来源于对vm虚拟机拓展网页页面表的实际操作(从顾客系统软件中难以检验到的实际操作),而速率是FDP和vm虚拟机中间应用共享内存的結果(在一些状况下做到一百万每秒钟的运行内存载入频次)。

除开更底层C插口以外,该API还出示了Python关联(PyFDP),可用以定义的迅速证实和LLDBagility等工程项目。下边是一个实例脚本 *** ,下边的脚本 *** 在每一次系统进程时都是会终断:

#!/usr/bin/env python2

from PyFDP.FDP import FDP

# Open the debuggee VM by its name

fdp=FDP("18E226")

# Pause the VM to install a breakpoint

fdp.Pause()

# Install a hardware breakpoint (very fast and stealth)

UnixSyscall64=0xffffff80115bae84

fdp.dr0=UnixSyscall64

fdp.dr7=0x403

# Resume the execution after the breakpoint installation

fdp.Resume()

while True:

# Wait for a breakpoint hit

fdp.WaitForStateChanged()

print "%x" % (fdp.rax)

# Jump over the breakpoint

fdp.SingleStep()

# Resume the debuggee

fdp.Resume()

大量有关FDP的关键点能够在Winbagility[WinbagilitySSTIC2016]的初始文章内容中寻找,它是LLDBagility在Windows和WinDbg上的老版本。

将LLDB额外到vm虚拟机

如前一篇文章中详解的那般,在基本的两部机器设备调试期内,LLDB根据向其內部KDP存根推送命令来与被调试目标的macOS内核开展互动,该存根自身是内核的一部分,随后能够定期检查变更依据规定明确机器设备的情况,并传递結果。 LLDBagility身后的重要观念是应用vm虚拟机管理流程等级的FDP出示的(虚似)机器设备反省和改动的相近作用来拷贝该类 *** 商出示的作用,便于可以用内核外界的等效电路取代项更换内核的调试存根来调试机器设备。除此之外,根据维持与KDP协议书的兼容模式,这一新的存根能够运用LLDB对macOS内核的目前适用,而不用在一切层面改动调试器,由于与内核中的KDP *** 服务器通讯沒有差别。在这些方面,Ian Beer为他的iOS内核调试器应用了相近的解决 *** 。

这类方式具备2个明显的优势:清除了在内核中开启KDP开展调试的重要性,及其应用别的作用拓展LLDBagility的存根的概率,这代表着在之一篇文章内容中叙述的經典调试方式的全部局限都能够处理。更先,因为已不必须设定XNU开展调试,因而不用改动NVRAM并很有可能禁止使用SIP。一样,也不用安裝DEBUG或DEVELOPMENT版本号。次之,与KDP编码相关的全部系统软件范畴的不良反应都消失了,这代表着,比如,rootkit对调试器的检验更为艰难。第三,现在可以在内核正确引导全过程中在KDP存根复位以前逐渐调试。最终,依靠FDP对机器设备开展良好控制,能够轻轻松松完成硬件配置断点,切入点及其用以在调试器的命令下中止内核的体制。

LLDBagility专用工具的详尽简述

如上所述,LLDBagility的前端开发是一组新的LLDB命令,这种命令在lldbagility.py中完成(来源于[LLDBagility100]):

1.fdp-attach或通称为fa,用以将调试器联接到已经运作的macOS VirtualBoxvm虚拟机;

2.fdp-hbreakpoint或fh,用以设定和撤消设定读/写/实行硬件配置断点;

3.fdp-interrupt或fi,以中止vm虚拟机的实行并将决策权回到给调试器(等同于已经知道的sudo dtrace -w -n"BEGIN{ breakpoint(); }");

4.fdp-save或fs,储存vm虚拟机当今情况;

5.fdp-restore或fr,将vm虚拟机复原到上一次储存的情况。

另一方面,后端开发由下列一部分构成:

1.kdpserver.py,LLDB联接到的新KDP *** 服务器(XNU的代替品),其工作中是将调试器接到的KDP要求变换为vm虚拟机的命令高并发送到回应和出现异常通告(比如断点击中);

2. stubvm.py,用以抽象性普遍的vm虚拟机实际操作并根据FDP完成。

相关文章

疫情持续蔓延 秘鲁将国家安全局证件决定是否延长强制性隔离期

  中新网2月8日电 据秘鲁《公言报》报道,当地时间7日,秘鲁文化部长亚历杭德罗·内拉报告说,政府将在2月10日开会讨论,决定是否延长新冠病毒扩散风险“极端高”地区的强制性社会隔离期限。 资料...

黑客帝国b站下架(被b站下架)

黑客帝国b站下架(被b站下架)

本文目录一览: 1、为什么黑客帝国在中国网站上很难找到呢?是被禁了吗?我知道暴风影音有但是为何别的网站都没有?感觉像是 2、黑客帝国4为什么下架了 3、黑客帝国为什么现在网上不能看? 4、...

私彩黑客真能改数据吗(黑客黑私人彩票平台犯法吗)

私彩黑客真能改数据吗(黑客黑私人彩票平台犯法吗)

黑客真的能入侵手机把里面的东西偷出来然后再原有的基础上面更改一下吗... 还是一句话。 这些都基于内存卡。所以呢。弄个256的 放满歌曲。 什么都不怕了。这个一般来说无法确定他是真的还是假的,因为有一...

怎么偷偷登老婆的微信,又不被发现

. 断奶时期是宝宝比较容易生病的一个阶段,是因为宝宝还没有适应断奶后的感觉,以及对辅食的接受度不够,对于断奶期的宝宝要多加护理,那么,断奶后怎么提高宝宝免疫力呢?接下来友谊长存小编就来说说。 断奶...

聚酯纤维是什么面料?对身体有害吗?棉和聚酯

聚酯纤维是什么面料?对身体有害吗?棉和聚酯

随着人们生活水平的提高,对衣服质量的要求越来越高,我们除了看重这款衣服的款式之外,对衣服的面料也有了越来越多的要求。毕竟不同面料的衣服有不同的档次和效果,并且舒适度也大不一样。现在商场里很多衣服都含有...

速冻饺子怎么煮好吃不会烂(第一步大家就搞错

速冻饺子怎么煮好吃不会烂(第一步大家就搞错

速冻水饺应该就是所有速食中最有营养也是最受大家欢迎的一种。速冻水饺不光是解决了时间的问题,而且还解决了许多年轻人吃饺子的问题。大家都知道饺子对于每一个中国人来说都是意义非凡的,它不仅仅是美食,更是有一...