0

我正在寻找从 Windows 程序集(exe、dll、ocx)中检索函数枚举的解决方案。我相信 WMI 中有一些工具,但我找不到。它必须接近 .NET 的 System.Reflection 功能,但我需要独立分析 Windows 可执行平台,并且 System.Reflection 仅适用于 .NET 应用程序。

4

2 回答 2

0

反射是某些语言的一个特性。一般的可执行文件或二进制文件可能不包含(很多)关于内部函数的信息。

PE 格式的二进制文件确实列出了导出的函数(尽管不一定按名称)。您可以使用 Visual Studio 附带的名为dumpbin. 例如,dumpbin /exports将列出导出的函数。

于 2013-02-20T21:11:52.090 回答
0

如果您想要完整的签名信息,这些是您的选择。

  • 托管:您可以使用反射
  • COM:一些导出 COM 对象的二进制文件将支持IDispatch,这将允许您查询公开的 API。
  • 对于其他一切,您将不得不去调试符号。如前所述,二进制文件不需要存储签名数据,因此它们不会保留它。您可以使用DIASDK查询 .PDB 文件,但请记住,大多数开发人员不会提供完整的符号文件。
  • 如果您没有符号,那么任何导出函数的名称都是您将获得的最接近的东西(并且正是当符号不可用时调试器依赖的名称)。要以编程方式访问它,请参阅PE COFF规范。
于 2013-12-09T22:38:48.400 回答