注册通行证 用户名 密码
  • 文章投稿
  • 博客
  • 论坛
  • 设为首页
  • 加入收藏
jztop.com网络技术
  • 首页
  • | iT新闻
  • | 操作系统
  • | 组网建网
  • | 网络安全
  • | 程序开发
  • | 办公一族
  • | 工具软件
  • | 网页制作
  • | 多媒体制作
  • | 网吧技术
  • | 服务器
  • | 专题教程
Vista | 软件评测 | 系统备份 | 优化 | 进程 | 聊天 | 病毒 | Linux | 黑客 | 防火墙 | 数据库 | Web开发 | Java | Word | 游戏 | 32位开发 | 移动开发
当前位置:首页 > 操作系统 > Linux > 内容正文

利用异常表处理Linux内核态缺页异常

发布时间:2006-10-23 12:10:21 来源:天极博客 网友评论 0 条
  系统在核心态运行的时候,参数是通过寄存器来传递的,由于寄存器所能够传递的信息有限,所以传递的参数大多数是指针。要使用指针所指向的更大块的数据,就需要将用户空间的数据拷贝到系统空间来。上面的__copy_user在内核中正是扮演着这样的一个拷贝数据的角色,当然,内核中这样的宏定义还很多,笔者也只是取其中的一个来讲解,读者如果感兴趣的话可以看完本文以后自行学习。

  如果读者对于简单的嵌入式汇编还不是很了解的话,可以参考《Linux内核源代码情景分析》一书。下面我们将程序编译成汇编程序来加以分析:

  

$ gcc -S hello.c   /* hello.s */    movl -60(%ebp), %eax    andl $3, %eax    movl -60(%ebp), %edx    movl %edx, %ecx    shrl $2, %ecx    leal -56(%ebp), %edi    movl -12(%ebp), %esi   #APP    0: rep; movsl    movl %eax,%ecx   1: rep; movsb   2:   .section .fixup,"ax"   3: lea 0(%eax,%ecx,4),%ecx    jmp 2b   .previous   .section __ex_table,"a"    .align 4    .long 0b,3b    .long 1b,2b   .previous   #NO_APP    movl %ecx, %eax

   

  从上面通过gcc生成的汇编程序中,我们可以很容易的找到访问用户地址空间的指令,也就是程序中的标号为0和1的两条语句。而程序中伪操作.section的作用就是定义了.fixup和__ex_table这样的两个段,那么这两段在可执行程序中又是如何安排的呢?下面就通过objdump给读者一个直观的概念:

  

 $ objdump --section-headers hello   hello:   file format elf32-i386      Sections:   Idx Name     Size   VMA    LMA    File off Algn    0 .interp    00000013 080480f4 080480f4 000000f4 2**0            CONTENTS, ALLOC, LOAD, READONLY, DATA    ………………………………    9 .init     00000018 080482e0 080482e0 000002e0 2**2            CONTENTS, ALLOC, LOAD, READONLY, CODE    10 .plt     00000070 080482f8 080482f8 000002f8 2**2            CONTENTS, ALLOC, LOAD, READONLY, CODE    11 .text     000001c0 08048370 08048370 00000370 2**4            CONTENTS, ALLOC, LOAD, READONLY, CODE    12 .fixup    00000009 08048530 08048530 00000530 2**0            CONTENTS, ALLOC, LOAD, READONLY, CODE    13 .fini     0000001e 0804853c 0804853c 0000053c 2**2            CONTENTS, ALLOC, LOAD, READONLY, CODE    14 .rodata    00000019 0804855c 0804855c 0000055c 2**2            CONTENTS, ALLOC, LOAD, READONLY, DATA    15 __ex_table  00000010 08048578 08048578 00000578 2**2            CONTENTS, ALLOC, LOAD, READONLY, DATA    16 .data     00000010 08049588 08049588 00000588 2**2            CONTENTS, ALLOC, LOAD, DATA            CONTENTS, READONLY    ………………………………    26 .note     00000078 00000000 00000000 0000290d 2**0            CONTENTS, READONLY

上一页 1 2 3 4 5 下一页
关于 Linux 操作系统 系统故障 无法访问 的新闻
  • Linux下的中文显示和支持常见问题解答
  • Linux系统出现乱码问题的终极解决方法
  • Linux 命令行下如何配置nVIDIA显卡
  • Linux如何处理当前运行环境的环境变量
  • Linux脚本开发数学库在PHP中的重要性
【评论】【收藏本文】【打印】【关闭】
上一篇文章:Linux系统出现乱码问题的终极解决方法
下一篇文章:Linux下的中文显示和支持常见问题解答
讨论区
查看
已有 0 位对此新闻感兴趣的网友发表了看法
匿名发表
注册通行证 登陆
图文阅读推荐
Linux操作系统文件系统的桌面应用
Linux操作系统文件系统的桌面应用
Linux设备驱动编程之定时器
Linux设备驱动编程之定时器
Windows外衣Linux心 红旗桌面版详测
Windows外衣Linux心 红旗桌面版详测
超实用 Linux下通过VNC安装Oracle
超实用 Linux下通过VNC安装Oracle
全站资源
  • 微软官方入门教程19:轻松掌握Vista系统的快
  • 微软2008大冲击,预借Vista SP1力促Vista市
  • 在收件箱中获得 Windows Vista 的最新更新
  • 微软官方Vista入门教程全集19篇(Vista学院
  • Windows Vista 的成功将势不可挡
  • 快快抛弃Vista,拥抱XP SP3!你觉得呢?
  • 浅谈Vista系统关闭虚拟内存与使用内存盘加速
  • 嘿嘿,按下键盘上面的三个键,马上让你的Vi
  • Windows Vista的盗版率只有Windows XP的一半
  • 3DMark和PCMark Vantage新版将只支持Vista系
阅读排行
  • Windows外衣Linux心 红旗桌面版详测
  • 扮酷你的桌面 Linux超靓壁纸下载(多图)
  • Linux安装流程
  • 浅谈Linux的内核
  • RedHat Linux9.0安装实例(1)
  • ARM的嵌入式Linux移植体验之基本概念
  • Linux安装要点
  • 红旗Linux桌面版5.0BETA版OS
  • 如何在大硬盘上安装Linux
  • RealPlayer流媒体播放器Linux版
最新技术文档
  • Linux步入Unix的后尘-铁甲Linux出现
  • Linux内核中的同步和互斥分析报告
  • Linux操作系统文件系统的桌面应用
  • Linux设备驱动编程之定时器
  • 嵌入式Linux操作系统启动信息完全注释
  • 在Linux操作系统中实现内部进程通信
  • Linux大腕警告称开源软件存在安全问题
  • Linux下双网卡绑定技术实现负载均衡
  • 深入浅出Linux操作系统的优化和微调
  • Linux下的中文显示和支持常见问题解答
专题教程
  • 大话G游 专题:手机病毒揭密
  • ARP攻击防范与解决方案 路由故障处理手册
  • Picasa中文版_Picasa教程 专题:清除流氓软件
  • Firefox专题 seo搜索引擎优化专区
  • 重装Windows必知的事情 装机之必备软件大行动
病毒专杀栏
  • 杀毒软件反被病毒杀 连"救命"都不能喊
  • 金山ARP防火墙
  • 还原卡神话破灭“机器狗”病毒来势汹汹
  • cctv经济半小时:你的手机现在安全吗?
  • 新挂马方式开始流行 ARP挂马称雄局域网
  • 木马和病毒清除的通用解法
  • IP地址不再冲突 查找ARP攻击者元凶
  • 教你几招识别和防御Web网页木马
  • 分析:封杀BT只是暂时的止痛药
  • QQ爆危险漏洞,“QQ游戏邀请大盗”邀请你玩病
关于我们 | 诚聘英才 | 联系我们 | 版权声明 | 网站大事 | 网站地图 | 意见建议
CopyRight 2005-2007 Jztop.Com 版权所有 未经许可 请勿转载