通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络攻防 >> 文章正文
《加密解密 技术内幕》1.1 PE文件格式一览
责任编辑:酷酷の鱼   更新日期:2008-3-10
 

考虑到早期写的PE教程1是自己所有教程中最糟糕的一篇,此番决心彻底重写一篇以飨读者。

PE 的意思就是 Portable Executable(可移植的执行体)。它是 环境自身所带的执行体文件格式。它的一些特性继承自 Unix的 Coff (common object file format)文件格式。"portable executable"(可移植的执行体)意味着此文件格式是跨平台的 : 即使Windows运行在非Intel的CPU上,任何平台的PE装载器都能识别和使用该文件格式。当然,移植到不同的CPU上PE执行体必然得有一些改变。所有 执行体 (除了VxD和16位的Dll)都使用PE文件格式,包括NT的内核模式驱动程序(kernel mode drivers)。因而研究PE文件格式给了我们洞悉Windows结构的良机。

本教程就让我们浏览一下 PE文件格式的概要。

DOS MZ header
DOS stub
PE header
Section table
Section 1
Section 2
Section ...
Section n

上图是 PE文件结构的总体层次分布。所有 PE文件(甚至32位的 DLLs) 必须以一个简单的 DOS MZ header 开始。我们通常对此结构没有太大兴趣。有了它,一旦程序在DOS下执行,DOS就能识别出这是有效的执行体,然后运行紧随 MZ header 之后的 DOS stub。DOS stub实际上是个有效的 EXE,在不支持 PE文件格式的操作系统中,它将简单显示一个错误提示,类似于字符串 "This program requires Windows" 或者程序员可根据自己的意图实现完整的 DOS代码。通常我们也不对 DOS stub 太感兴趣: 因为大多数情况下它是由汇编器/编译器自动生成。通常,它简单调用中断21h服务9来显示字符串"This program cannot run in DOS mode"。

紧接着 DOS stub 的是 PE header。 PE header 是PE相关结构 IMAGE_NT_HEADERS 的简称,其中包含了许多PE装载器用到的重要域。当我们更加深入研究PE文件格式后,将对这些重要域耳目能详。执行体在支持PE文件结构的操作系统中执行时,PE装载器将从 DOS MZ header 中找到 PE header 的起始偏移量。因而跳过了 DOS stub 直接定位到真正的文件头 PE header。

PE文件的真正内容划分成块,称之为sections(节)。每节是一块拥有共同属性的数据,比如代码/数据、读/写等。我们可以把PE文件想象成一逻辑磁盘,PE header 是磁盘的boot扇区,而sections就是各种文件,每种文件自然就有不同属性如只读、系统、隐藏、文档等等。 值得我们注意的是 ---- 节的划分是基于各组数据的共同属性: 而不是逻辑概念。重要的不是数据/代码是如何使用的,如果PE文件中的数据/代码拥有相同属性,它们就能被归入同一节中。不必关心节中类似于"data", "code"或其他的逻辑概念: 如果数据和代码拥有相同属性,它们就可以被归入同一个节中。(译者注:节名称仅仅是个区别不同节的符号而已,类似"data", "code"的命名只为了便于识别,惟有节的属性设置决定了节的特性和功能)如果某块数据想付为只读属性,就可以将该块数据放入置为只读的节中,当PE装载器映射节内容时,它会检查相关节属性并置对应内存块为指定属性。

如果我们将PE文件格式视为一逻辑磁盘,PE header是boot扇区而sections是各种文件,但我们仍缺乏足够信息来定位磁盘上的不同文件,譬如,什么是PE文件格式中等价于目录的东东?别急,那就是 PE header 接下来的数组结构 section table(节表)。 每个结构包含对应节的属性、文件偏移量、虚拟偏移量等。如果PE文件里有5个节,那么此结构数组内就有5个成员。因此,我们便可以把节表视为逻辑磁盘中的根目录,每个数组成员等价于根目录中目录项。

以上就是PE文件格式的物理分布,下面将总结一下装载一PE文件的主要步骤:

  1. 当PE文件被执行,PE装载器检查 DOS MZ header 里的 PE header 偏移量。如果找到,则跳转到 PE header。
  2. PE装载器检查 PE header 的有效性。如果有效,就跳转到PE header的尾部。
  3. 紧跟 PE header 的是节表。PE装载器读取其中的节信息,并采用文件映射方法将这些节映射到内存,同时付上节表里指定的节属性。
  4. PE文件映射入内存后,PE装载器将处理PE文件中类似 import table(引入表)逻辑部分。

上述步骤是基于本人观察后的简述,显然还有一些不够精确的地方,但基本明晰了执行体被处理的过程。

你应该下载 LUEVELSMEYER的《PE文件格式》。 该文的描述相当详细,可用作案头的参考手册。

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    普通文章 瑞星公司03月09日发布 每日计算机病毒及木马播报
    推荐文章 推荐:在网络安全中起重大作用的 Windows 命令
    普通文章 瑞星公司03月08日发布 每日计算机病毒及木马播报
    普通文章 传说中的TXT溢出
    普通文章 火线可骗过Windows 密码验证
    普通文章 台式机技术的ATM易遭黑客入侵
    普通文章 趋势:2007年病毒威胁报告暨2008年预测
    普通文章 微软展示IE 8浏览器 首个beta测试版开放下载
    普通文章 网络病毒向驱动级演变 防毒入侵成重点
    普通文章 近期上网严防“寄生虫”病毒破坏系统
    热门文章
    普通文章瑞星公司03月01日发布 每日计算机病毒及木马播报
    普通文章微软Hotmail故障未解决 用户转用谷歌
    普通文章关注未成年人 欧盟5500万营造安全网络环境
    普通文章德国司法部门在线搜查须获法官许可
    普通文章Safari不在贝宝(paypal)安全浏览器列表中
    普通文章“艳照门”图片长沙再拘人
    普通文章手机版火狐浏览器年内推出 暂瞄准视窗和Linux
    普通文章美国白领社交网站LinkedIn昨晚瘫痪一个小时
    普通文章黑客行为调查:四成以上黑客在研究“免杀”病毒
    普通文章AJAX应用程序容易遭受到新型攻击
    精彩专题