- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个程序,该程序将解析 PE 对象以获取各种信息。
虽然阅读规范,但我无法找出为什么 MZ 字节在那里,因为我在这 2 个字节应该表示的机器类型列表中找不到它。
谁能澄清一下?
最佳答案
MZ签名是MS-DOS可重定位16位EXE格式使用的签名。
PE 二进制文件包含 MZ header 的原因是为了向后兼容。如果可执行文件在基于 DOS 的系统上运行,它将运行 MZ 版本(它几乎总是只是 stub ,表示您需要在 Win32 系统上运行该程序)。
当然,当世界从 DOS 过渡到它之后出现的任何东西时,这在今天已经没有那么有用了。
那时有一些程序实际上将 DOS 版本和 Win32 版本绑定(bind)在一个二进制文件中。
与处理 Windows 历史的大多数事情一样,Raymond Chen 有一些关于这个主题的有趣文章:
关于c++ - PE文件中的MZ签名有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/957057/
我需要验证给定的二进制文件是否是 PE 文件(例如,如果我将 JS/HTML 或 .class 文件重命名为 .exe 或 .dll),它不会仍然是 PE 文件。解析 PE 文件会给我关于这个问题的信
我想将一些二进制数据附加到我的可执行文件的末尾。这只是为了使我的程序成为一个文件。我尝试使用 UpdateResource 但我用我的特定数据在其中遇到了一些错误,所以我必须使用其他解决方案。所以我需
我知道还有其他一些类似的问题,无论是否是 StackOverflow。我为此研究了很多,但仍然没有找到单一的解决方案。 我正在做一个操作系统作为一个副项目。我一直在做汇编,但现在我想加入 C 代码。
Is the pointer to the PE-header at offset 0x3c in the PE-file always set to 0x80? 我想知道为什么这个指针会改变。我猜
我是操作系统编程的新手,我正在阅读一本书,其中给出了一个简单的内核示例,如下所示: main() { char *video_memory = 0xb8000; *video_memory
我正在用 C# 编写程序,在其中读取 PE 的字节。但是为了获得 RVA,我需要使用部分标题。我想知道节标题的最大数量是多少? 我试过谷歌,我看过这里,但我没有找到任何可以指向正确方向的东西 谢谢。
一个awesome article关于PE格式说明如下: Name. Each section header has a name field up to eight characters long,
我对他们为什么在这里使用 - 1 感到困惑。有人可以解释这条线在非常非常非常低级别的详细信息中所做的事情......不是它的减法 1 结构......我需要了解更多......关于低级别......谢
我可以成功地在内存中加载并运行x32 pe,但是当我调整变量使其与x64可执行文件一起使用时,该程序将无休止地启动其自身的数千个副本,直到您杀死该程序或耗尽内存,而不是从内存启动pe。 我已经进行了尽
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我正在研究 PE 解析器,遇到了一些非常不寻常的事情。 PE 格式中目录的名称和顺序似乎因您查看的位置而异: 来自 PEReader (perdr) : #define IMAGE_DIRECTORY
我试图在IDA中找出一种方法,哪些导出是数据导出,哪些是实函数导出。 例如,让我们看一下Microsoft的msftedit.dll的导出条目: 虽然CreateTextServices是真正的导出函
有很多Windows PE 资源查看器程序。但它们是如何工作的?他们是否解码对 winapi 的函数调用,或者 PE 是否有一些 GUI 信息部分?就像 Android 有 XML GUI 定义一样?
我正在对 PE 文件进行一些批量分析,在解析 PE 文件的导入表时,我发现许多 PE 文件为给定的 DLL 导入了重复的条目...这是为什么?这在功能上提供了什么? 例如,example.exe 导入
我正在使用“PE 编辑器”检查 Windows 可执行文件,它显示入口点为 0x15B8,我们如何确定该入口点的地址为虚拟地址? 最佳答案 入口点是相对于模块的加载地址存储的。 模块可以通过设置 IM
根据这篇文章http://msdn.microsoft.com/en-us/library/ms809762.aspx?ppud=4 我们可以用自定义名称命名 PE 部分。 所以在一个 PE 文件中,
PE 加载器是否完全 加载了任何部分?或者是否加载了节标题中指定的每个节?在 ELF 程序中,应该加载的节头(称为程序头或段)是那些用 PT_LOAD 标记的。 PE项目中有类似的东西吗? 附言。我找
我查看了特定 DLL 的导出表,我在表中看到了一些奇怪的条目,所以我试图在 pecoff 规范中找到这个问题的答案,但没有找到任何答案,我希望有人可能有。 我在某个 DLL (Qt5Core.dll)
我已经问过类似的问题,"PE Header requirements" ,但我对它的答案并不满意。 我正在用 Java SE 1.6 构建一个汇编器/链接器。我已经阅读了大约 5 个关于 PE/COF
我正在“C/C++ - Win32API”环境中编写一个 dll。 我有一些常量变量(都是 DWORD 值和 LPWSTR/LPSTR 字符串),我必须启用用户修改。 我正在寻找的是(希望)一种工具,
我是一名优秀的程序员,十分优秀!