标签: portable-executable

PE 文件中的 DOS 存根

最近,我使用十六进制编辑器分析了一些 Windows 可执行文件。PE 标头从地址 0x100 开始,因此在 PE 映像实际开始之前有 256 字节的数据。前 256 字节:

Windows 可执行文件的前 256 个字节

我了解以下有关文件结构的信息

  • 0x00 - 0x3F:这是 MZ 标头(64 字节长)。
  • 0x40 - 0x4D:这 14 个字节编码了 7 个 x86(16 位模式)指令,这些指令用于使用 DOS 系统调用(中断 0x21)在屏幕上打印“此程序无法在 DOS 模式下运行。\r\r\n” )。
  • 0x4E - 0x78:这是字符串“此程序无法在 DOS 模式下运行。\r\r\n”,末尾带有美元符号,告诉 DOS 这是字符串的结尾。
  • 0x79 - 0x7F:这些是 NULL 字节;我猜想它们是为了对齐而插入的。

所以我知道前 128 个字节是做什么用的。我的问题是:接下来的 128 字节 (0x80 - 0xFF) 有何用途?(PE 映像在它们之后从 0x100 处开始。)

windows exe dos portable-executable

5
推荐指数
1
解决办法
945
查看次数

微软的ASLR很奇怪

我观看了一个ASLRed dll图像基于32位进程的地址.
这不是完全随机化.它只是随机化了1/2概率.

例如,一旦我加载一个DLL,然后图像加载到0x12345678.
然后我再次加载图像,图像加载到0x23456789.(基地址已更改!)
但我再次加载图像
0x12345678
0x23456789
0x12345678
0x23456789

...

为什么他们这样实施?
它是否适用于崩溃报告的频率?(用于获取重新部署的dll的相同崩溃地址)

windows dll portable-executable aslr

4
推荐指数
1
解决办法
2065
查看次数

什么是"对齐",以及如何从一个对齐转换为另一个对齐?

以下是从节对齐转换为文件对齐的步骤:

  1. 找到数据的RVA
  2. 从RVA中,导出所引用数据所属的部分.这是微不足道的,因为部分不重叠.文件头中提供了各个部分的起始地址
  3. 找出RVA与该部分的起始地址之间的差异,以查找数据偏移量,即该部分中该数据的偏移量.
  4. 从文件标题中,对于同一部分,在文件中查找相同部分的位置.
  5. 将数据偏移量添加到文件中节的位置,以查找文件中数据的地址.

但我只是不明白,有人可以详细说明吗?

alignment portable-executable

4
推荐指数
1
解决办法
3051
查看次数

在PE中导入表(.exe)

我找到了"导入表"字段的指针.这是8字节大小,分为虚拟地址和大小.但是,虚拟地址字段中的值很大,并且误导了我提取与导入表相关的条目的下落相关信息的努力.值是否指向偏移量,如果是,则(.exe)文件在到达所需偏移量之前完成.

portable-executable

4
推荐指数
1
解决办法
3169
查看次数

PE目录的名称

我正在研究一种PE解剖器,并且遇到了一些非常不寻常的事情.PE格式中目录的名称和顺序似乎根据您的外观而有所不同:

PEReader(perdr):

#define IMAGE_DIRECTORY_ENTRY_EXPORT          0   // Export Directory
#define IMAGE_DIRECTORY_ENTRY_IMPORT          1   // Import Directory
#define IMAGE_DIRECTORY_ENTRY_RESOURCE        2   // Resource Directory
#define IMAGE_DIRECTORY_ENTRY_EXCEPTION       3   // Exception Directory
#define IMAGE_DIRECTORY_ENTRY_SECURITY        4   // Security Directory
#define IMAGE_DIRECTORY_ENTRY_BASERELOC       5   // Base Relocation Table
#define IMAGE_DIRECTORY_ENTRY_DEBUG           6   // Debug Directory
#define IMAGE_DIRECTORY_ENTRY_ARCHITECTURE    7   // Architecture Specific Data
#define IMAGE_DIRECTORY_ENTRY_GLOBALPTR       8   // RVA of GP
#define IMAGE_DIRECTORY_ENTRY_TLS             9   // TLS Directory
#define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG    10   // Load Configuration Directory
#define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT   11   // Bound Import …
Run Code Online (Sandbox Code Playgroud)

windows winapi executable coff portable-executable

4
推荐指数
1
解决办法
3331
查看次数

导出的DLL函数没有词法排序?

好吧,今天我遇到了一个奇怪的问题.我刚才写了自己的GetProcAddress版本来获取远程进程的函数地址.我显然花了很多时间阅读PE架构,找出解决这个问题的最佳方法.

根据PECOFF v8规范(我认为它是最新的官方规范),有以下符号Export Name Pointer Table:

导出名称指针表是导出名称表中的地址数组(RVAs).指针各32位,并且相对于图像库.指针是词法排序的,以允许二进制搜索.

所以我在编写GetProcAddress版本时考虑到了这一点.显然,使用线性搜索的二进制搜索,在导出表格中可以有很好的效率提升... KERNEL32.dll(1300+导出函数).

直到今天,我遇到了一个奇怪的问题.看起来Kernel32中的一些导出函数实际上并没有按词汇顺序排序,这就是我的二进制搜索.以下是使用我将在下面发布的函数导出的Dll转储的摘录:

Ordinal: 810    Name: K32QueryWorkingSetEx
Ordinal: 811    Name: LCIDToLocaleName
Ordinal: 812    Name: LCMapStringA
Ordinal: 813    Name: LCMapStringEx
Ordinal: 814    Name: LCMapStringW
Ordinal: 815    Name: LZClose
Ordinal: 816    Name: LZCloseFile
Ordinal: 817    Name: LZCopy
Ordinal: 818    Name: LZCreateFileW
Ordinal: 819    Name: LZDone
Ordinal: 820    Name: LZInit
Ordinal: 821    Name: LZOpenFileA
Ordinal: 822    Name: LZOpenFileW
Ordinal: 823    Name: LZRead
Ordinal: 824    Name: LZSeek
Ordinal: 825    Name: LZStart
Ordinal: 826    Name: LeaveCriticalSection …
Run Code Online (Sandbox Code Playgroud)

c++ windows portable-executable

4
推荐指数
1
解决办法
665
查看次数

使用c#分析便携式可执行文件

C/C++具有一组预定义的结构和常量,对应于exe-header等.是否存在一些类比标准命名空间,C#中的类用于分析可移植可执行文件?或者它只是非托管不安全更多本地语言的特权?

.net c# reverse-engineering portable-executable

4
推荐指数
1
解决办法
2513
查看次数

如何使用pefile从PE文件中获取.text部分

如何.text通过使用pefile模块从PE 获取部分(或任何其他部分)的内容?

python portable-executable python-2.7

4
推荐指数
1
解决办法
9490
查看次数

机器代码(可执行文件)?

如何访问可执行文件的机器代码(二进制文件)?

细节

  • 我在Ubuntu(Linux)
  • 我想访问.exe文件的机器代码(二进制文件)(文件遵循PE格式)
  • 我正在使用C来实现

c ubuntu machine-language disassembly portable-executable

4
推荐指数
2
解决办法
227
查看次数

如何从页眉和/或页脚确定PE可执行文件的大小

假设您想要刻录数据流或字节块,那么如何确定可执行文件的大小?

PE可执行格式中有许多标题,但我使用哪些标题部分来确定(如果可能)可执行文件的总长度?

这是文件格式的图片.

PE文件格式

windows portable-executable

4
推荐指数
1
解决办法
6271
查看次数