Linux内核驱动调试遇到的一些坑以及解决方法(新手必看指南)
2019-10-09 23:55:47 Author: bbs.pediy.com(查看原文) 阅读量:189 收藏

[原创]Linux内核驱动调试遇到的一些坑以及解决方法(新手必看指南)

9小时前 248

[原创]Linux内核驱动调试遇到的一些坑以及解决方法(新手必看指南)

0x00 背景

最近在学习Linux内核调试,看了钞sir的环境搭建搭建了qemu环境之后本来兴高采烈地去开启我的内核调试之旅,没想到碰到了很多障碍,百度了很久也解决不了,最后自己胡乱碰撞,终于解决了这些问题,我觉得我遇到的这些问题也是很多坛友也会遇到的,现在我来讲讲我遇到的问题和解决的方法。

0x01 地址零

要调试驱动必须要驱动加载地址,但是当我运行了系统给的sh之后,它居然给我返回了地址为零,这里以 2019 STARCTF/CTF hackme 为例
图片描述

原因:不是root权限,无法看到地址。(虽然题目给了地址,但相同的问题还是会出现的)

解决方法:既然没有root权限,那我就用root权限的登录就好了

具体流程:
解压给的cpio文件 -> 进入该文件 -> 找到init ->打开并修改(由于hackme给了地址,所以这里用的是其他题目的init来演示)
图片描述

将这个1000修改为0就是我们的root权限了

图片描述
再次登录就可以发现地址加载出来了

0x02 GDB显示错误Can not find ELF BASE

当你运行target remote:1234,显示一堆CAN NOT FIND ELF BASE的时候,内心有点崩溃吧。

原因:没有用ROOT权限运行GDB

解决方法:sudo su 接下来你懂的

0x03 下了断点但不会调试

这时候要运行poc文件就能看到在你的断点里面调试了,可能有人会说调试不就是为了POC吗,这怎么写POC我也不太懂,因为我也是初学者,现在先学会如何调试最重要,之后我会再更新的。
图片描述
图片描述

0x04 不会往镜像放文件

cpio是我们的文件系统,一开始我也遇到这怎么弄的麻烦,最后还是偶然发现了答案

解决方法:

解压cpio -> 放入想要文件到解压出来的文件里面->运行以下命令:
find . | cpio -o --format=newc > ../core.cpio
(如果有提供fs.sh 直接用就好了,不用打这条命令)
当然 这个core.cpio是你自己决定的,如果改了名字,记得运行镜像的命令的也要相应的修改。

最后,这就是我遇到的麻烦和阻碍,希望对linux内核调试的你们有帮助,之后如果我遇到更多的麻烦我会更新在这里的,欢迎大家一起交流linux内核调试。

[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com


文章来源: https://bbs.pediy.com/thread-254932.htm
如有侵权请联系:admin#unsafe.sh