标签: portable-executable

为什么我没有得到“PE\0\0”?

从PE规格来看:

\n\n
\n

在位置0x3c,存根具有 PE​​ 签名的文件偏移量。\n 此信息使 Windows 能够正确执行映像文件,\n 即使它具有 MS DOS 存根。该文件偏移量在链接期间被放置在\n位置0x3c

\n\n

2.2. 签名(仅图像)
在 MS DOS 存根之后,在 offset 处指定的文件偏移处0x3c,是一个 4 字节签名,该签名将文件标识为 PE 格式图像文件。此签名为 \xe2\x80\x9cPE\\0\\0\xe2\x80\x9d (\n 字母 \xe2\x80\x9cP\xe2\x80\x9d 和 \xe2\x80\x9cE\xe2\x80\ x9d 后跟两个空字节)。

\n
\n\n

我尝试读取这些字节:

\n\n
using System;\nusing System.IO;\n\nclass Program {\n  const String fileName = @".\\some_application.exe";\n  const Int64 peMarkerPosition = 0x3c;\n\n  static void Main(string[] args) {\n    using (FileStream fs = new FileStream(fileName, FileMode.Open,\n      FileAccess.Read)) {\n      Byte[] marker = new Byte[4];\n      fs.Position = …
Run Code Online (Sandbox Code Playgroud)

.net c# coff portable-executable

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

PE文件:IMAGE_DEBUG_TYPE_VC_FEATURE类型的调试目录

我使用 Visual Studio 2015 编译了一个普通的 exe。除了预期的类型 调试目录之外IMAGE_DEBUG_TYPE_CODEVIEW,我还发现了第二个类型IMAGE_DEBUG_TYPE_VC_FEATURE.

我找不到有关它包含哪些数据及其用途的信息。有人可以解释一下或向我指出解释它的来源吗?

executable debug-symbols portable-executable visual-studio visual-studio-2015

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

使用 Python 从 PE 文件中提取软件签名证书

当尝试使用从 PE 文件中提取证书时cryptography,失败并显示ValueError: Unable to load certificate. 我可以使用命令行从同一个 PE 文件中正确提取subprocess证书openssl。我想了解使用的代码版本出了什么问题cryptography

我使用的是Python 3.7.1、加密2.4.2和pefile 2018.8.8

import pefile
from cryptography import x509
from cryptography.hazmat.backends import default_backend

pe = pefile.PE(fname)
pe.parse_data_directories(directories=[pefile.DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_SECURITY']])
sigoff = 0
siglen = 0
for s in pe.__structures__:
    if s.name == 'IMAGE_DIRECTORY_ENTRY_SECURITY':
        sigoff = s.VirtualAddress
        siglen = s.Size
pe.close()
with open(fname, 'rb') as fh:
    fh.seek(sigoff)
    thesig = fh.read(siglen)
cert = x509.load_der_x509_certificate(thesig[8:], default_backend())
Run Code Online (Sandbox Code Playgroud)

这失败了ValueError: Unable to load certificate

python openssl pyopenssl portable-executable python-cryptography

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

如何通过查看PE文件头来判断exe是静态加载DLL还是动态加载DLL?

正如标题所说,如何通过查看PE文件头来判断exe是静态加载DLL还是动态加载DLL?

换句话说,如何判断 DLL 是可执行文件的一部分,还是将被加载程序调用?

谢谢

portable-executable

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

如何使用Perl从WinNT可移植可执行文件中读取标头?

我想在Perl中使用PE文件并且没有找到模块,所以我想我会编写自己的(已经在delphi中做过一次).

我只有一个问题,当将可执行文件映射到缓冲区时,如何搜索像0x00004550(IMAGE_NT_SIGNATURE)这样的八进制,将它们转换回可写字符串等?

perl portable-executable

0
推荐指数
1
解决办法
827
查看次数

如何删除java程序生成的临时文件(清理)?

我正在开发一个便携式Java应用程序,它可以在用户的​​PC上动态生成一些文件(windows xp).现在,我想要的是在java程序退出后删除那些临时文件.显然,java的文件删除机制是不可信任的.即使我将文件标记为在退出时删除(file.deleteOnExit()),大多数时候也不会删除它.我使用包装器(java2exe)将其作为可执行文件运行.欢迎任何建议或解决方案?

谢谢,深

java portable-executable portable-applications

0
推荐指数
1
解决办法
1207
查看次数

获取.text段代码PE文件格式的偏移量?VirtualAddress,PointerToRawData?

我已经尝试这样做了大约两天,没有成功.我一直在阅读许多PE文件格式教程无济于事.

我通过CreateFileMapping将32位可执行文件映射到内存中,效果很好.然后我的程序遍历节标题,并根据我的默认特征检查特征(以确保该节是可执行的并且是代码).如果为真,则程序返回指向该节头的(PIMAGE_SECTION_HEADER)指针(程序到目前为止工作正常).

现在我有了指针,结构中有两个特定的条目让我困惑,那就是PointerToRawData和VirtualAddress,当我输入条目时; VirtualSize = 4096,PointerToRawData = 1536.

从我在PE文档中读到的,是PointerToRawData是磁盘上的部分中数据的第一个字节(我是否正确?)的假定偏移量(RVA ???),并且是对齐值的倍数(512 ).问题是如何设置此值,以获取可用于访问节的数据的指针.在内存映射文件上,最好使用(VirtualAddress值+ imagebase值)来查找该节的第一个字节?

另一个混淆点是VirtualSize vs SizeOfRawData.这让我很困惑,因为在这篇文章中 - http://msdn.microsoft.com/en-us/library/ms809762.aspx,它说"SizeOfRawData字段(似乎有点用词不当)后来在结构中持有向上舍入值"但我的VirtualSize大于我的SizeOfRawData值,这导致我应该使用哪一个混淆.

该程序的目的是找到可执行部分(.text部分)并对该部分中的所有位执行按位操作,并在下一部分之前结束操作.

我不希望它看起来像我期待的勺子,我只是想要一些澄清.

感谢您的时间/帮助,非常感谢.

c c++ portable-executable

0
推荐指数
1
解决办法
2094
查看次数

如何在运行时写入可移植可执行(PE)文件?

问题是我有一个Windows可执行文件(.exe),我希望它的进程在运行时修改其映像文件中的一些值,所以下次程序从它停止的点继续执行时,是什么最好的方法吗?

c windows winapi portable-executable

0
推荐指数
1
解决办法
301
查看次数

英特尔80x86 PE代码转换

我目前正在尝试理解以下PE代码指令的翻译:

004033C0 | .-E9 3BDCFFFF | JMP seh_exam.00401000
Run Code Online (Sandbox Code Playgroud)

我自己做了一些研究,因为它是一个无条件的跳转,我认为它是下表中的指令:

在此输入图像描述

(图片来源:http://www.mathemainzel.info/files/x86asmref.html#jmp)

根据我的理解,字节E9 =无条件跳转,3B = o0和DC = 01,其中o0和01表示设置EIP的偏移量.

代码跳跃了9152个字节,但负偏移的转换究竟是如何工作的?任何意见,将不胜感激.

PS:不是作业问题.

x86 portable-executable

0
推荐指数
1
解决办法
42
查看次数

是否有可能找到谁建立了exe文件?

手头有exe文件,是否可以找到有关编译它的人的任何信息?更具体地说,delphi编译器是否包含自己的许可证信息或OS用户,甚至可执行文件中的某些硬件ID?

delphi portable-executable

0
推荐指数
1
解决办法
219
查看次数