Reverse-2 - PE文件

本文详细介绍了可移植可执行文件(PE)格式,主要应用于32位和64位Windows系统。内容涵盖PE文件的加载过程,文件头结构如DOS头和NT头,以及关键字段如AddressOfEntryPoint和ImageBase。此外,还讨论了不同平台的二进制文件格式,如Linux的ELF和Mac OS X的Mach-o。
摘要由CSDN通过智能技术生成

一、PE文件

wiki:可移植可执行文件(Portable Executable,缩写PE)是一种用于可执行文件,目标文件和动态链接库的文件格式。主要使用在32位和64位的Windows操作系统上,“可移植的”是指该文件格式的通用性,可用于许多不同的操作系统和体系结构中。PE文件格式封装了Windows操作系统加载可执行程序代码时所必须的一些信息,这些信息包括动态链接库、API导入和导出表,资源管理数据和线程局部存储数据,在Windows NT操作系统中,PE文件格式主要用于EXE文件、DLL文件、.sys文件(驱动文件)和其他文件类型。

1.1 不同平台的二进制文件格式

Executable(.exe on windows, no suffix on Linux)

包含自己独立执行的代码。资源有可能要依赖外部的动态链接库

Dynamic Linked Library(.dll on windows,.so (Shared Library aka Shared Object) on Linux)

需要被其他文件加载(exe、dll、......)(所用函数:LoadLibrary

Static Library (.lib on windows 、.a on Linux)

Mac OS X 使用Mach-o文件格式

Linux使用ELF文件格式

1.2 PE文件加载

        每个进程都会有自己的虚拟内存空间,分为内核空间和用户空间,通过Executable Loader来加载对应的库文件,依次加载到用户空间内。

 1.3 文件or镜像

文件:磁盘形式

映像:内存形式

 1.4 tools

所有关于PE文件的结构定义在WinNT.h中,

tools:010Editor、X64dbg、....

char(1byte) word(2byte)dword(4byte)qword(8byte)

VA(Virtual Address虚拟地址) RVA(Relative Virtual Address相对虚拟地址)

RVA=VA-base

虚拟内存:

        每个进程独立/隔离,32bit分配4GB(2^32),64bit分配256TB(2^48)

        内存由操作系统管理,映射到物理内存,

磁盘文件位置与内存位置的关系:

 二、PE文件具体内容

文件头、节区、各种属性表:导入导出表……

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值