• 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
    程序源码在此

  • 相关阅读:
    IDEA使用 磨刀霍霍向代码
    如何设计一个高可用系统?要考虑哪些地方?
    spring boot 集成apollo 快速指南
    实战_Spring_Cloud
    Spring Boot 入门(十二):报表导出,对比poi、jxl和esayExcel的效率
    「newbee-mall新蜂商城开源啦」1000 Star Get !仓库Star数破千!记录一下
    一个C#开发者重温Java的心路历程
    BeanUtils 如何拷贝 List?
    JVM之JVM的体系结构
    python类中的私有方法
  • 原文地址:https://www.cnblogs.com/lanuage/p/7725695.html
Copyright © 2020-2023  润新知