Linux内核驱动调试遇到的一些坑以及解决方法(新手必看指南)
2019-10-20 18:58:00 Author: mp.weixin.qq.com(查看原文) 阅读量:71 收藏


本文为看雪论坛优秀文章
看雪论坛作者ID:Vinadiak 
 
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内核调试。
- End -

看雪ID:Vinadiak 

https://bbs.pediy.com/user-855782.htm 

*本文由看雪论坛  Vinadiak  原创,转载请注明来自看雪社区

推荐文章++++

PWN入门的一些总结

固件分析--工具、方法技巧浅析(上)

固件分析--工具、方法技巧浅析(下)

7种Android Native Anti Hook的实现思路

经典整数溢出漏洞示例 XCTF int_overflow

进阶安全圈,不得不读的一本书

公众号ID:ikanxue
官方微博:看雪安全
商务合作:[email protected]
“阅读原文”一起来充电吧!

文章来源: http://mp.weixin.qq.com/s?__biz=MjM5NTc2MDYxMw==&mid=2458300085&idx=2&sn=fadec86fabb10c839e0910494e8eeba1&chksm=b1819e3f86f61729805b44a39da66add56cd9f095df9ffdda525a98cab8f6f9ecefef462ddfd#rd
如有侵权请联系:admin#unsafe.sh