2011-02-17 29 views

回答

1

不,IAT必须包含API名称或函数序号 - 否则加载程序无法将导入的函数与从您加载的DLL中导出相匹配。如果你有这个名字,它将成为你自己过程映像中一个窄字符串的偏移量;如果它是序号,那么您可能能够从导入的DLL的导出表中的序号中查找函数名称,但并不总是提供它。

除非您的API名称是一个C++ mangled名称,否则您将不会从此处获取签名。您可能能够查询PDB的调试资源目录,然后使用PDB API从中读取签名(如果有可用的PDB)。

+0

Thanks Rup。有些情况下PDB不存在。我对吗?在这种情况下,我们如何获得签名? – 2011-02-17 07:20:24

1

如果您有一个所有DLL的列表,您可以遍历每个的导出地址表以查找所有导出函数的地址(以及序号和可能的名称,如果DLL中有该信息的话) 。从那里,您可以生成函数地址映射回DLL和导出的函数信息。处理转发的导出函数可能会遇到一些困难,但它应该相对简单。

相关问题