gpt4 book ai didi

c# - 在外部 C++ 库中检索入口点列表?

转载 作者:行者123 更新时间:2023-11-28 06:47:02 26 4
gpt4 key购买 nike

我找到了软件 DLL Export Viewer它可以从 dll 库文件中检索导出函数的名称:

enter image description here

我想知道如何开始尝试在 VB.NET 或 C# 代码中为 C++ 库模仿函数名称检索的相同功能(我不需要检索地址)。

我想测试的 C++ dll 是 MediaInfo

谁能指导我?

最佳答案

现代windows中.exe和.dll的文件格式是Portable Executable(最常见的PE或PE32,有一个64位版本的格式,可以改变一些数据的大小并扩展其他的)。

关于格式的信息:
Microsoft PE and COFF Specification
An In-Depth Look into the Win32 Portable Executable File Format, Part 1
An In-Depth Look into the Win32 Portable Executable File Format, Part 2
Peering Inside the PE: A Tour of the Win32 Portable Executable File Format (搜索PE文件导出)
corkami Website (关于二进制格式的好东西的非常好的信息)

在您的特定情况下,您对导出的数据目录感兴趣(这是保存有关二进制文件导出函数信息的数据结构(不仅 dll 可以具有导出函数))。此数据结构包含有关导出函数总数、导出函数地址列表、导出函数的名称(如果存在)和序号等信息...)

如果您想模仿DLL 导出查看器 功能,您需要能够加载 PE 文件(例如:您的 .dll 文件并解析必要的数据以到达导出数据目录,例如 MZ header , PE Header, 最后解析Export Data Directory结构)。

有一个名为 PyFile 的非常好的 python 库(您可以使用或至少可以为您提供内部信息和检查问题的方法),还有 PeLib in C++ .

如果想自己动手,要走的路是:
-Load MZ Header(获取PE Header偏移量)
-Load PE Header (get Export Data Directory Offset)
-加载导出数据目录结构(获取导出函数的数量和导出函数信息列表的地址)
-Loop the list Loading exported functions info(获取导出函数名称的地址)
-读名字。

关于c# - 在外部 C++ 库中检索入口点列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24780311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com