zoukankan      html  css  js  c++  java
  • PE解析器的编写(一)——总体说明

    之前自己学习了PE文件的格式,后来自己写了个PE文件的解析器,这段时间工作上刚好要用到它,老板需要能查看某个exe中加载的dll的一个工具,我在使用之前自己写的这个东西的时候,发现很多东西都忘记了,所以,我在这回顾下当时的思路,并记录下来,方便以后直接使用。也算是回顾下之前学习的内容,将学的东西学以致用
    工具总体分为这样几个部分:
    1. 文件头的信息
    2. pe文件节表的信息
    3. pe文件数据目录表的信息
    4. 简单的从RVA到Frva的计算
    工具主要采用MFC的框架作为界面,pe文件的解析部分完全由自己编写,主要使用了Windows中定义的一些结构体。刚开始开启界面时,所有功能按钮和显示界面都为空,当我们正确加载一个pe文件后这些按钮就都可以使用。加载后效果如图:
    这里写图片描述
    两侧显示pe文件的基本信息,比如文件头部中的信息,文件的OEP,基地址等等,右侧提供一个根据RVA计算它在文件中偏移的功能,工具可以显示数据目录表的信息和节表的信息。
    显示节表的信息如下:
    这里写图片描述
    显示数据目录表的信息如下:
    这里写图片描述
    一般在数据目录表中关心导出导出表,所以这个工具也提供了导入导出表的解析功能。
    下面是查看导入表的功能:
    这里写图片描述
    这个主要分为两个部分,上部分是它导入的dll文件,当点击某个dll的时候,会将这个dll中的函数给列举出来。
    导出表的界面如下:
    这里写图片描述
    在这个界面中主要显示这个dll模块的名称,其中导出的函数等信息。
    以上是程序的主要功能,下面说下程序各个模块的组成:
    这里写图片描述
    这个是工具中的主要对话框资源,从上到下依次是关于(这个是MFC自己生成的,我只是将它的版本信息作了修改)、显示数据目录表信息的对话框,它对应的是第三个图、用来显示文件具体标识信息的对话框、显示节区表信息的对话框、显示导出表对话框、显示导入表对话框、显示pe文件头信息的对话框,是程序的主界面;
    我们为每一个对话框都关联了一个类,然后在专门写了一个解析pe文件中各种信息的类,这样整体的类视图如下:
    这里写图片描述
    到此,我对这个工具中的模块作了简单的说明,后面会一一讲解各个部分的实现。敬请期待!!!!O(∩_∩)O
    程序源码在此

  • 相关阅读:
    A1052. Linked List Sorting (25)
    A1032. Sharing (25)
    A1022. Digital Library (30)
    A1071. Speech Patterns (25)
    A1054. The Dominant Color (20)
    A1060. Are They Equal (25)
    A1063. Set Similarity (25)
    电子码表
    矩阵键盘
    对象追踪、临时对象追踪、绝对坐标与相对坐标
  • 原文地址:https://www.cnblogs.com/lanuage/p/7725695.html
Copyright © 2011-2022 走看看