利用 GDB、KGDB 调试 Linux 内核 驱动模块及应用程序.PDFVIP

利用 GDB、KGDB 调试 Linux 内核 驱动模块及应用程序.PDF

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用 GDB、KGDB 调试 Linux 内核 驱动模块及应用程序.PDF

利用 GDB、KGDB 调试 Linux 内核 驱动模块及应用程序 目录 目标2 1 基础环境搭建3 1.1 资源环境 4 1.2 安装 vmware 虚拟机及 ubuntu 操作系统 4 2 编译内核5 2.1 配置内核参数5 2.2 编译内核7 3 配置双机通信 8 3.1 双机串口通信8 3.2 验证串口通信配置 10 4 配置串口调试 11 4.1 客户机调试配置 11 4.2 目标机调试配置12 5 GDB 双机调试环境14 5.1 驱动代码及编译 15 5.2 应用程序及编译17 5.3 验证驱动程序18 6 调试应用程序及驱动程序调用接口19 6.1 配置驱动调试19 6.2 调试应用程序 22 6.3 调试驱动程序 24 备注 26 1 目标 这几天看了一下 linux 内核提权的一个漏洞,里面涉及到了驱动程序漏洞及驱动调试内 容,由于各类 linux 操作系统版本的不同,如果不能在自己机器上亲自调试驱动程序,可以 说即使给了漏洞利用的 POC 源码也根本无法成功利用。因为内核漏洞的利用涉及到指令集 的 POC 构造,不同内核版本模块加载指令地址不同,导致即使有 POC 也根本无法利用, 只有在自己系统中亲自调试,才能做出相应的修改,达到内核漏洞利用的效果。这样就要求 我们对 linux 内核驱动的调试过程,调试方法有个深入了解。经过两天的各处查找 ,配置, 调试,终于弄清楚了内核调试的基本方法,为之后内核调试,漏洞分析提供技术支持。 在驱动程序开发或是内核漏洞分析过程中经常需要对内核模块进行调试。在通常情下对 于驱动程序的调试是利用最直接的方式即打印调试的方式,在驱动程序中通过 printk ,加入 调试信息。同时通过动态加载模块的方式,即可实现对驱动的动态调试,这也是最简单的调 试方式。而对于内核漏洞的分析,由于 linux 系统是开源项目,所有不管对于应用程序的调 试还是对内核驱动程序的调试都可以通过查看源码找到漏洞的触发点。 那如果想像调试用户态应用程序一样对内核驱动做动态的源码即调试或是更进一步的 对驱动程序进行汇编级调试或是开发内核漏洞利用程序那又该怎么办呢?也许有人会说一 般没有必要进行汇编级调试。但是在对内核漏洞利用过程中经常需要调试内核驱动程序,并 且需要对内核驱动进行汇编指令级单步跟踪,这样才能确定程序的走向。或是我们需要构造 特殊的指令块来完成某项功能。这样就对我们调试内核带来的新的挑战。 那内核里面又是怎么实现的呢,又该如果能够去跟进内核内部去调试呢? 本文就是要解决这个问题:在动态汇编调试用户态应用程序的同时,能够跟进应用程序 2 的的系统调用接口,直接源码级或是汇编级的调试(如果没有符号表)调试驱动程序。 本文演示的程序是通过一个应用程序 demo ,调用自己写的一个驱动程序接口,通过在 调试应用程序的是时候能够跟进调试驱动程序。搭建这样的环境我们使用了 vmware 虚拟机, 该虚拟机使用普遍,安装简单。为了能够调试程序,需要一个目标机和一个客户机。 目标机是用来安装驱动程序,同时运行应用程序,应用程序会调用驱动程序中的接口。 同时目标机自己调试应用程序(用户态使用 GDB 调试 )。 客户机是用来连接客户机,同时在客户机中调试目标机中的驱动程序(使用 GDB 调试)。 需要注意几点: 1. 为了能够能够调试目标机的驱动程序,要求目标机需要支持 KGDB 调试。 2. 为了能让客户机与目标机通信,我们在 vmware 中配置这两台机器通过串口通信调试。 3. 客户机如果要支持驱动的源码级调试需要将驱动程序的符号表加载的客户机的调试器 中。 4. 本文用的 vmware 虚拟机需要将目标机和客户机同时安装在虚拟机中。 5. 由于在文章中会包含客户机和目标机的操作过程和调试过程,本文中会使用绿框表示客 户机相关操作,使用红框表示目标机上的相关操作。 1 基础环境搭建

文档评论(0)

tangtianbao1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档