首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PE文件和COFF文件格式分析--概述

PE文件和COFF文件格式分析--概述

作者头像
方亮
发布2019-01-16 10:28:37
1.2K0
发布2019-01-16 10:28:37
举报
文章被收录于专栏:方亮方亮

        刚工作的时候,我听说某某大牛在做病毒分析时,只是用notepad打开病毒文件,就能大致猜到病毒的工作原理。当时我是佩服的很啊,同时我也在心中埋下了一个种子:我也得有这天。随着后来的工作进行,一些任务的和这个理想有了交集,这得以让我有足够的时间和精力去细细研究PE文件和COFF文件格式。(转载请指明出处

        如果有一定的英语基础的朋友,可以查看微软原稿(http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx)。如果没什么耐性去读,可以去读我即将编写的《PE文件和COFF文件格式分析》系列博文,同时我用VC去解析一些文件。这儿补充说明下,微软原稿中有一页是一些免责声明,大概就是说微软可能会在之后修改这些文件结构,而不会通知到你。我对PE和COFF文件格式的研究是基于原稿8.2版本的,可能若干年后,我这儿写的东西就存在不对的地方了。之后我们切入正题。

       PE的全称是Portable Executable,用中文就是“可移植、可执行的”。从这个名字可以看出PE文件格式是一种文件格式标准,该标准并不局限于Windows某个平台,因为它是“可移植”的。比如我们在xp下编写的程序,一般可以没有问题的放在Win7的系统上跑。这个特性非常重要,它让windows平台软件提供了延续性的可能,否则软件厂商要为不同系统编写或者生成不同的程序,这无疑增加了软件提供商的负担,同时这也大大降低了软件传播的速度。“可执行性”是说这个文件是中承载着可以被CPU执行的指令,而不是像TXT这样的只是承载着数据。

        COFF的全称是Common Object File Format,用中文描述是“通用对象文件结构”。此处特别注意“对象”这个用词,如果研读过PECOFF原稿的朋友,可以发现,文中介绍一些属性时,区分了Image和Object两种文件的情况。对编译链接有一定了解的朋友应该知道,我们编写的C++对象文件,先会被编译成为一个和文件同名且格式为obj的文件,然后链接器会将这些obj文件链接成Exe或者DLL这样的PE文件。这里的obj文件就是COFF格式的。

        如之前介绍的,我们编写的PE文件很可能是由COFF文件链接而成,那么PE和COFF之间有什么关系呢?PE文件中包含COFF格式头,这个头的信息非常重要,我会在之后介绍。

以上是经典的PE文件格式

以上是经典的COFF文件格式

       之后我们会讨论更详细的信息。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2012年07月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档