linux-kernel expoit study(1) ---编译并用qemu运行内核
Joker师傅老早前发了两个 linux kernel的pwn demo给我们,我到现在才开始搞
编译linux kernel
linux内核下载
创建目录,放我们要放的linux kernel
1 | $ madir linux-kernel |
解压
1 | $ tar -xjvf linux-2.6.32.1.tar.gz |
配置
1 | $ sudo apt-get install libncurses5-dev |
编译
1 | $ make |
编译这个地方,可能会出现几个错误~
报错 以及解决办法
编译出现的问题
1 | 错误: |
解决方案:
两处修改:/linux-kernel/linux-2.6.32.1/arch/x86/include/asm$ vim ptrace.h
1 | #include <linux/init.h> |
gcc: error: elf_i386: 没有那个文件或目录
1 | 错误: |
解决方案:beswing@swing:~/linux-kernel/linux-2.6.32.1$ vim arch/x86/vdso/Makefile
两处修改
1 | #VDSO_LDFLAGS_vdso.lds = -m elf_x86_64 -Wl,-soname=linux-vdso.so.1 \ |
以及
1 | # VDSO_LDFLAGS_vdso32.lds = -m elf_i386 -Wl,-soname=linux-gate.so.1 |
drivers/net/igbvf/igbvf.h:128:15: error: duplicate member ‘page’
1 | 错误: |
修改名字重复即可,路径在beswing@swing:~/linux-kernel/linux-2.6.32.1$ vim ./drivers/net/igbvf/igbvf.h
创建文件系统
1 | $ cd ~/linux-kernel/linux-2.6.32.1/linux-2.6.32.1/arch/i386/boot |
使用qemu运行编译好的内核
1 | $ qemu-system-i386 -kernel arch/i386/boot/bzImage -initrd arch/i386/boot/initrd.img-2.6.32.1 -m 512M |
使用qemu运行内核(使用qemu官网提供的文件系统)
1 | $ wget http://wiki.qemu.org/download/linux-0.2.img.bz2 -O linux-0.2.img.bz2 |
gdb调试内核
1 | $ qemu-system-i386 -S -kernel arch/i386/boot/bzImage -hda linux-0.2.img -append "root=/dev/sda" |