免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: eclipse_2
打印 上一主题 下一主题

我写的系统调用劫持出现crash了 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2010-04-18 12:10 |只看该作者
你的idtr定义为: unsigned char idtr[6], 结果 sidt 指令写了 16 个字节过去, buffer overflow 了, 所以出现了 BAD EIP. 应该用如下定义:
  1. struct idtr {
  2.         unsigned short          limit;
  3.         unsigned long           base;
  4. } __attribute__ ((packed));
复制代码

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
42 [报告]
发表于 2010-04-18 15:32 |只看该作者
恩  谢谢斑竹
   是完整的 因为就那么点 呵呵
eclipse_2 发表于 2010-04-18 10:19

23楼的Makefile中有misc.o,那么源文件在哪里呢

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
43 [报告]
发表于 2010-04-18 15:45 |只看该作者
我这里测试了你23楼的程序,环境是RHEL 5.2, 内核是我自己编译过的2.6.18.3,没有问题,可以成功加载。以下是日志信息:
main.c-syscall_init-61 entry syscall module
main.c-get_syscall_table-42 idt base 0xc12b2000      limit 0x7ff
main.c-get_syscall_table-46 syscall offset is 0x0

卸载模块也同样没有问题,产生对应的日志。

建议LZ再次检查一下自己的开发环境。如果想搞内核module的练习,最好还有个自己编译的内核。

论坛徽章:
0
44 [报告]
发表于 2010-04-18 17:37 |只看该作者
我这里测试了你23楼的程序,环境是RHEL 5.2, 内核是我自己编译过的2.6.18.3,没有问题,可以成功加载。以下 ...
Godbach 发表于 2010-04-18 15:45



    是正确的 那是因为我把打印idt中信息的语句给去掉了
  里面不是有条
  idt = (struct idt *((...)语句吗?
   你再后面加上一条语句 随便打印出dt中的某个字段 就crash 了
   你试之前小心点哈 呵呵

论坛徽章:
0
45 [报告]
发表于 2010-04-18 17:38 |只看该作者
23楼的Makefile中有misc.o,那么源文件在哪里呢
Godbach 发表于 2010-04-18 15:32



    那个只是工具源码 十进制转化成二进制什么的 函数
    没什么用
    一觉睡过头了 刚起来不久 呵呵

论坛徽章:
0
46 [报告]
发表于 2010-04-18 17:39 |只看该作者
我这里测试了你23楼的程序,环境是RHEL 5.2, 内核是我自己编译过的2.6.18.3,没有问题,可以成功加载。以下 ...
Godbach 发表于 2010-04-18 15:45



    恩 谢谢斑竹的建议 我也在慢慢熟悉这些环境中

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
47 [报告]
发表于 2010-04-18 20:46 |只看该作者
建议自己编译的内核测试吧。

论坛徽章:
0
48 [报告]
发表于 2010-04-18 21:04 |只看该作者
建议自己编译的内核测试吧。
Godbach 发表于 2010-04-18 20:46



    好的
    顺便问一下斑竹 你有没有打印idt的内容啊 crash了木有 呵呵

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
49 [报告]
发表于 2010-04-19 10:36 |只看该作者
我使用你给的代码,打印信息在42楼啊

论坛徽章:
0
50 [报告]
发表于 2010-04-19 10:53 |只看该作者
我使用你给的代码,打印信息在42楼啊
Godbach 发表于 2010-04-19 10:36



    我把45行给隐去了
    //        gdb_printk("idt offset1 is 0x%x\n",idt->offset_low);
   斑竹可以尝试一下把 这行加起来 试一下 它只是打印idt的信息而已
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP