自定义处于qume中的Linux虚拟机int3中断,使得gdb可以调试Linux用户程序


自定义处于qume中的Linux虚拟机int3中断,使得gdb可以调试Linux用户程序。

code

// 驱动程序代码

void int3_handler()
{
	asm volatile ("swapgs");
	printk(KERN_ALERT "int3_handler...\n");
	asm volatile ("swapgs; popq %rbp");
	breakpoint_ret();
}

void install_int3_handler()
{
	unsigned long int3_handler_addr = (unsigned long)int3_handler;
	unsigned long* int3_desc = (unsigned long*)((unsigned long)idt_table + 0x30);
	*int3_desc = (unsigned long)(((int3_handler_addr & 0xffff0000) << 32) | (int3_handler_addr & 0xffff) | (*int3_desc & 0xffffffff0000));
	int3_desc++;
	*int3_desc = (unsigned long)((*int3_desc & 0x00000000) | (int3_handler_addr >> 32));
	printk(KERN_ALERT "install int3_handler done!\n");
}
	.section .text
	.global breakpoint_ret
	/* .type @function */

breakpoint_ret: 
	addq $8, %rsp		# 平衡call breakpoint_ret()
	iretq				# 返回至用户态

int3中断至内核


breakpoint_ret函数处下断点,每次用户程序执行 int3 时总是可以中断至gdb调试器,然后执行ni/si指令返回用户态。
当然,在内核中由于调用了printk函数输出信息,为防止用户态regs被改写,可以将printk函数注释掉,或者每次进入内核和退出内核前实现pt_regs的保存与恢复。


在这里插入图片描述


返回用户态


在这里插入图片描述


在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本软件包不需要安装绝对绿色只要解压后,运行linux.bat这个文件就可以了。 qume是一个虚拟机软件。 dsl.iso是一个极其精减但又不缺乏应用的linux livecd映像。 尽管这个操作系统软件包很小不能体现出linux操作系统极其强大的功能,但 麻雀虽小五脏俱全,它是一个完整的操作系统。这也恰恰体现出在linux高效 的特性,也绝对能让习惯windows的用户尝一下鲜。 本软件包使用很方便,不用安装不用重启,而且可以在Windows 98/NT/2000/XP/2003 使用起来也很方便,不用复杂的配置,只要运行里面的一个文件就可以了。 使用方法 1 运行linux.bat这个文件,会弹出一个窗口,然后你按照窗口出现的英文提示操作 便可。 2 当你用鼠标操作这个虚拟机时,你会发现鼠标移不出虚拟机的窗口,没关系的只要 你同时按下Ctrl+Alt就会把你的鼠标从虚拟机里放出来。 3 如果你发现linux的桌面不能完全显示,请在linux桌面单击右键system--Xvesa, 选择一个比你windows桌面小的分辨率,这样就可以看到一个完整的linux桌面了。 4 如果你的linux不能上网,请根据你的实际情况作一下设置,在linux桌面单击右键 system--net setup。 5 在linux桌面单击右键Desktop--Styles可以选择左面风格,我很喜欢里面的Tree_ and_Moon。 qume基本参数 #启动顺序为硬盘 -boot c #cdrom的位置 -cdrom dsl.iso #使用本地时间 -localtime #使用128M内存 -m 128 #使用网络连接 -user-net 虚拟机使用声卡 #-enable-audio263
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值