• PE文件简介


    PE文件的全称是Portable Executable,意为可移植的可执行的文件,常见的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微软Windows操作系统上的程序文件(可能是间接被执行,如DLL)。它是跨win32平台的,只要运行在Windows上,不管是在什么体系的CPU上都可以运行
    PE文件使用平面的地址空间,所有代码和数据都合并在一起,组成一个很大的结构,文件的内容被分为不同的区块,块中包含代码和数据,每个区块在内存中都有其对应的权限,比如有的快只读,有的只写或者有的只可执行。
    一般有以下区块:
    .text : 是在编译或者汇编结束时产生的一种区块,是指令的代码
    .rdata :是运行时的只读数据,也就是所说的const常量
    .data:初始化的数据块,也就是全局变量
    .idata:包含其他外来dll的函数以及数据信息,即输入表
    .rsrc:包含全部的资源,如图标、菜单、位图等等
    每个区块在内存中按页边界对齐,区块没有大小限制,是一个连续的结构,每个块都有对应的属性
    pe文件的优势:
    磁盘上的数据结构与在内存中的结构是一致的
    相关名词:
    入口点(EntryPoint):程序执行的第一条指令所在的内存地址
    文件偏移地址(FileOffset)PE文件存储在磁盘上的时候,各个数据的地址相对于文件头的距离为文件的偏移地址
    虚拟地址(VirtuallAddress VA)应用程序访问的逻辑地址也就是它的虚拟地址
    基地址(ImageBase):文件被映射到内存时,初始地址叫做基地址
    pe文件大致结构如下图所示:
    PE文件大致结构
    一般在说到PE文件时都会涉及到以下几个名词
    基地址(ImageBase):PE文件被加载到内存中的首地址,是这个模块的句柄,可以使用函数GetModuleHandle来获取
    文件的偏移地址:PE文件中各个部分相对于文件头的偏移
    相对虚拟地址(RVA):PE结构被映射到内存中后,某个位置所在内存相对于基地址的偏移
    一般可执行文件被PE加载器加载到内存中后,文件的基本格式不会发生改变,只是会将各个块按照页来进行对其,PE文件在磁盘与在内存中的对应关系大致如下图所示:
    这里写图片描述

  • 相关阅读:
    GPS部标平台的架构设计(五)-地图服务算法库
    GPS部标平台的架构设计(四)-百度地图设计
    GPS部标平台的架构设计(三) 基于struts+spring+hibernate+ibatis+quartz+mina框架开发GPS平台
    罗永浩专访全文记录(转自好奇心日报-http://www.qdaily.com/)
    GPS部标平台的架构设计(二) 可扩展性设计
    心情不好是因为没有方向
    如何验证域名解析状态?
    如何使用AWS Route53解析域名
    IaC
    Java连接Amazon ElastiCache(redis)报错
  • 原文地址:https://www.cnblogs.com/lanuage/p/7725705.html
Copyright © 2020-2023  润新知