刚工作的时候,我听说某某大牛在做病毒分析时,只是用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文件格式

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

PE文件和COFF文件格式分析--概述相关推荐

  1. PE文件和COFF文件格式分析——导出表的应用——一种摘掉Inline钩子(Unhook)的方法

    在日常应用中,某些程序往往会被第三方程序下钩子(hook).如果被下钩子的进程是我们的进程,并且第三方钩子严重影响了我们的逻辑和流程,我们就需要把这些钩子摘掉(Unhook).本件讲述一种在32位系统 ...

  2. PE文件和COFF文件格式分析——导出表的应用——通过导出表隐性加载DLL

    通过导出表隐性加载DLL?导出表?加载DLL?还隐性?是的.如果觉得不可思议,可以先看<PE文件和COFF文件格式分析--导出表>中关于"导出地址表"的详细介绍.(转载 ...

  3. PE文件和COFF文件格式分析——导出表的应用——一种插件模型

    可能在很多人想想中,只有DLL才有导出表,而Exe不应该有导出表.而在<PE文件和COFF文件格式分析--导出表>中,我却避开了这个话题.我就是想在本文中讨论下载Exe中存在导出表的场景. ...

  4. PE文件和COFF文件格式分析——导出表

    在之前的<PE可选文件头>相关博文中我们介绍了可选文件头中很多重要的属性,而其中一个非常重要的属性是(转载请指明来源于breaksoftware的CSDN博客) IMAGE_DATA_DI ...

  5. PE文件和COFF文件格式分析——RVA和RA相互计算

    之前几节一直是理论性质的东西非常多.本文将会讲到利用之前的知识得出一个一个非常有用的一个应用.(转载请指明来源于breaksoftware的csdn博客) 首先我们说下磁盘上A.exe文件和正在内存中 ...

  6. PE文件和COFF文件格式分析——节信息

    在<PE文件和COFF文件格式分析--签名.COFF文件头和可选文件头3>中,我们看到一些区块的信息都有偏移指向.而我们本文讨论的节信息是没有任何偏移指向的,所以它是紧跟在可选文件头后面的 ...

  7. PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头1

    本文将讨论PE文件中非常重要的一部分信息.(转载请指明来源于breakSoftware的CSDN博客) 首先说一下VC中对应的数据结构."签名.COFF文件头和可选文件头"这三部分 ...

  8. PE文件和COFF文件格式分析--MS-DOS 2.0兼容Exe文件段

    MS 2.0节是PE文件格式中第一个"节".其大致结构如下:(转载请指明来源于breaksoftware的csdn博客) 在VC\PlatformSDK\Include\WinNT ...

  9. PE文件和COFF文件格式分析——签名、COFF文件头和可选文件头3

    <PE2>中介绍了一些可选文件头中重要的属性,为了全面起见,本文将会讲解那些不是那么重要的属性.虽然不重要,但是还是可以发现很多好玩的情况.首先看一下32位的可选文件头详细定义.(转载请指 ...

最新文章

  1. php插入word图片,如何在PHPOffice / PHPWord模板上添加/设置图像?
  2. QTP、LoadRunner、QC工具下载地址
  3. 项目实战|100个蓝牙接收器发货了
  4. android sdk 封装html5,Android平台以WebView方式集成HTML5+SDK方法
  5. hdfs的副本数为啥增加了_HDFS详解之块大小和副本数
  6. C ++ 指针 | 指针与三维数组_6
  7. main()在C和C ++中应该返回什么?
  8. 如何自学生物信息学:从菜鸟到专家
  9. Kettle使用教程之数据同步
  10. Unity3D动态加载FBX文件
  11. 金税盘时钟异常的处理方法及处理流程
  12. linux更换steam目录,如何删除Steam?
  13. 软考高级系统架构设计师系列论文二十四:论信息系统的安全风险
  14. 怎么让蜘蛛喜欢你的网站
  15. [Python数据分析]NBA的球星们喜欢在哪个位置出手
  16. Unity UGUI 字体加粗特效
  17. matlab怎么画两个自变量的图_眼线液的画步骤图 眼线怎么画好看图解
  18. 【QScrollBar | QSlider | QDial | QProgressBar | QLCDNumber】
  19. Qt QSS QSlider样式
  20. Chrome浏览器更新

热门文章

  1. 深蓝学院的深度学习理论与实践课程:第二章
  2. apache安装_Apache+PHP 安装 ---windows
  3. 剑指offer:面试题18. 删除链表的节点
  4. JAVA中文注解驱动,解决api接口返回的json里面出现中文乱码的问题
  5. python中的正则替换字符串函数re.sub
  6. Unity 3D为策略游戏创建地图学习教程
  7. RTTI(三)相关函数1【转自大富翁】
  8. Python - 在CentOS7.5系统中安装Python3
  9. Kubernetes集群部署(yum部署)
  10. spring boot jpa 整合