反射是某些语言的一个特性。一般的可执行文件或二进制文件可能不包含(太多)有关内部函数的信息。
我正在寻找从Windows程序集(exe、dll、ocx)中枚举检索函数的解决方案。我相信WMI中有一些工具,但我找不到。它必须接近.NET的System.Reflection函数,但我需要独立分析Windows可执行文件平台,System.Reflective仅适用于.NET应用程序。
PE格式的二进制文件确实列出了导出的函数(尽管不一定要按名称)。您可以使用Visual Studio附带的名为dumpbin
的命令行工具来查看这些内容。例如,dumpbin /exports
将列出导出的函数。
如果您想要完整的签名信息,以下是您的选项。
- 托管:可以使用反射
- COM:一些导出COM对象的二进制文件将支持
IDispatch
,这将允许您查询公开的API - 对于其他一切,您将不得不转到调试符号。如前所述,二进制文件不需要存储签名数据,因此它们不会保留这些数据。您可以使用
DIA
SDK来查询.PDB文件,但请记住,大多数开发人员不会提供完整的符号文件 - 如果你没有符号,那么任何导出函数的名称都是最接近的(当符号不可用时,调试器也会依赖它)。要通过程序访问,请参阅
PE COFF
规范