问题标签 [portable-executable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
7629 浏览

c# - 在 .NET 中解析普通的 Win32 PE 文件(Exe/DLL)

我需要解析普通的 Win32 DLL/Exe 并从中获取所有导入和导出以显示在控制台或 GUI(即 Win Forms)上。是否可以通过读取其导出/导入表并从中获取托管类型来解析 C#.NET 中的 Win32 DLL/Exe?由于它是非托管 PE,.NET 不允许您将非托管 PE 文件转换为托管 .NET 程序集,它只生成 COM 托管程序集。

如何解析这些表并以托管形式获取其所有方法(签名)。(例如,如果 char* 作为参数,它应该显示为 IntPtr)。

0 投票
1 回答
89 浏览

com - 获取 Win32 Dll 中的类型

我想在普通的 Win32.dll 中获取类型和详细信息,就像我们在 COM 中一样。在 COM 中,idl 中嵌入的所有内容都会导致 TLB,MSFT 公开 APIS,我们可以在其中提取类型。

我需要在 Win32 中定义的类型以及该类型的所有详细信息(例如成员及其类型)。解析 PE 文件并查找导出的表只给出导出的函数,我希望在其中定义所有自定义类型(Win32 接口、类和成员详细信息与类型)。

0 投票
2 回答
1974 浏览

c - 任何读写二进制文件格式(PE和ELF)的库?

你好,

我想为 Windows 编写一个二进制文件格式查看器,它可以对 PE 和 ELF 文件进行操作。与已经存在的类似:

我有理由要写“又一个二进制查看器”。

是否有任何用于读取 PE 和 ELF 文件格式的 C 库?我下载了 Gnu binutils 的源代码,发现它使用二进制文件描述符库,声称支持大约 50 种文件格式,用于大约 25 种处理器架构。我不确定它是否实现了完整的 PE 规范,因为它基本上是一个很少使用 PE 格式的 Linux 库。此外,库源代码对我来说似乎有点复杂和多余。

0 投票
1 回答
71 浏览

.net - 如何使用类型库了解 com 服务器的类型?

是否有任何可用的属性、属性或方法来判断给定类型库是进程内 COM 服务器还是进程外 COM 服务器?

0 投票
4 回答
1059 浏览

virtualization - 为什么从本地文件夹加载 Ntdll 会产生异常?

我的 exe 依赖于 ntdll、user32 和 kernel32。我将这些 dll 保存为本地副本并将第一个字母更改为“V”。然后我将 exe 的 Import dll 名称编辑为来自 kernel32 的 Vernel32.dll。通过在本地空间中加载 vernel32.dll,该应用程序可以正常工作。接下来,我将 exe 的导入 dll 规范编辑为 vtdll 作为 ntdll,该进程从本地加载 vtdll,运行其代码并在 vtdll 指令上引发 _stackhash 异常。

我需要它来开发我的应用程序以捆绑所有 Windows 依赖项。有没有人有任何想法,为什么 ntdll 不能在本地空间运行。

0 投票
1 回答
107 浏览

linux - What are the files from the 'make' of git that I actually need to run git?

I'm trying to "portablize" git, so I want to send the required executables from the make process of git to my hosted web server. Can I do that? Do you think the executables will work?

0 投票
3 回答
3192 浏览

.net - PE Headers 的哪个字段告诉我们是否是一个有效的 PE 文件?

我需要验证给定的二进制文件是否为 PE 文件(例如,如果我将 JS/HTML 或 .class 文件重命名为 .exe 或 .dll),它仍然不会是 PE 文件。解析 PE 文件会给我关于这个问题的信息;哪个字段表明给定的二进制文件是有效的 PE 文件?

我检查了 FileHeader 的“e_magic”字段,它总是在 PE 文件错误的情况下被填充(即 js/html/java/class 文件重命名为 .dll/Exe)并且没有说明任何关于有效性的信息体育。

0 投票
2 回答
2538 浏览

c++ - 在可执行文件的资源中,如何找到默认图标?

我需要以编程方式找到 Windows 可执行文件(PE 文件 = dll、exe、com..)的默认图标。我确实知道如何浏览资源并确定什么是图标、什么是光标等,但据我所知,没有任何图标以任何方式标记为默认图标。那么,有人知道如何找到默认图标吗?此外,我不想使用任何 windows api 调用,我想自己编写函数。问题是我不知道所有图标中的哪一个是默认图标。

0 投票
2 回答
538 浏览

c++ - 如何用实际的源代码替换 stl 的分配器

我需要用它们的原始源代码替换分配器。我正在从 PE 导出表中提取导出的方法,并面对奇怪的冗长分配器,其中 STL 容器在原始源代码中使用。即如果源代码是:

从我得到的导出表中:

如何从上述冗长的分配器中获取其原始源代码的回溯?(typedef 的大小增加得更多。)

问候,

乌斯曼

0 投票
2 回答
1716 浏览

windows - 如何将 EXE 中的文件偏移量映射到其 PE 部分

我打开了一个我用 ImageHlp.dll 编写的程序来玩弄它,我注意到文件中似乎有很大的空白。据我了解,对于每个 PE 部分,部分标题将其在文件中的偏移量为PhysicalAddress,其大小为SizeOfRawData,因此从PhysicalAddress到的所有内容都PhysicalAddress + SizeOfRawData应该是该部分。但是这些范围没有涵盖大量的 EXE 文件,所以我一定遗漏了一些东西。

我知道我可以使用 ImageRVAToSection 并给它一个 RVA 地址来找出 RVA 位于哪个部分。有没有办法对文件偏移量做类似的事情?如何找出 $ED178 或任何属于哪个 PE 节字节?