最近在学习Linux内核调试,看了钞sir的环境搭建搭建了qemu环境之后本来兴高采烈地去开启我的内核调试之旅,没想到碰到了很多障碍,百度了很久也解决不了,最后自己胡乱碰撞,终于解决了这些问题,我觉得我遇到的这些问题也是很多坛友也会遇到的,现在我来讲讲我遇到的问题和解决的方法。
要调试驱动必须要驱动加载地址,但是当我运行了系统给的sh之后,它居然给我返回了地址为零,这里以 2019 STARCTF/CTF hackme 为例
具体流程:
解压给的cpio文件 -> 进入该文件 -> 找到init ->打开并修改(由于hackme给了地址,所以这里用的是其他题目的init来演示)
将这个1000修改为0就是我们的root权限了
再次登录就可以发现地址加载出来了
当你运行target remote:1234,显示一堆CAN NOT FIND ELF BASE的时候,内心有点崩溃吧。
这时候要运行poc文件就能看到在你的断点里面调试了,可能有人会说调试不就是为了POC吗,这怎么写POC我也不太懂,因为我也是初学者,现在先学会如何调试最重要,之后我会再更新的。
cpio是我们的文件系统,一开始我也遇到这怎么弄的麻烦,最后还是偶然发现了答案
解压cpio -> 放入想要文件到解压出来的文件里面->运行以下命令:
find . | cpio -o --format=newc > ../core.cpio
(如果有提供fs.sh 直接用就好了,不用打这条命令)
当然 这个core.cpio是你自己决定的,如果改了名字,记得运行镜像的命令的也要相应的修改。
最后,这就是我遇到的麻烦和阻碍,希望对linux内核调试的你们有帮助,之后如果我遇到更多的麻烦我会更新在这里的,欢迎大家一起交流linux内核调试。