参考教程做个总结

https://pawnyable.cafe/linux-kernel/introduction/introduction.html

磁盘映像的挂载

可以本地修改,如修改初始化相关和符号表相关

/*文件系统*/
mkdir root
mount rootfs.img root
/*cpio*/
mkdir root
cd root
cpio -idv < ../rootfs.cpio
/*归档操作*/
find . -print0 | cpio -o --format=newc --null > ../rootfs_updated.cpio

gdb调试

初始化相关

当内核启动时,它首先运行一个程序。 该程序的路径因配置而异,但在大多数情况下,它位于 /init/sbin/init 等中。

/*
获得加载模块的基址
*/
cat /proc/modules

/*获得符号信息更改
/home/l/kernelpwn/LK01/qemu/root/etc/init.d/S99pawnyable
*/
echo 2 > /proc/sys/kernel/kptr_restrict # 変更前
#echo 2 > /proc/sys/kernel/kptr_restrict # 変更後
/*shell输入*/
grep "commit_creds" /proc/kallsyms
--------------------------------------------------------------------------------------------
/*获得root
更改文件内容
*/
setsid cttyhack setuidgid 0 sh

qemu远程连接选项

-gdb tcp::12345

之后需要掌握调用哪个程序会调用哪个os程序