2012-07-11 52 views
1

我有一个编译的DLL库,但我没有关于它的文档。有一种方法可以获取dll的公共接口(至少函数名称,参数号和类型)。从DLL获取库接口

感谢

+0

哪个技术是这样的? – 2012-07-11 07:37:40

+0

如何知道?我只是有一个DLL文件... – Tobia 2012-07-11 07:40:11

+0

要检索此信息,请使用PeStudio(http://www.winitor.com) – mox 2012-07-11 07:46:47

回答

0

你将不得不反编译它并分析每个函数,它的调用约定,参数计数,参数含义(除非它带有一些PDB,但我怀疑它),我之前做过类似的工作,这是复杂的工作, 但这是可以完成的。

+0

我正在使用IDA和反编译库...但是它似乎很辛苦,我解决了参数计数和类型,但意义并不那么容易。 – Tobia 2012-07-11 18:52:47

+2

您需要调试应用程序,并在所选函数中放置断点以查看调用来自哪里(并对应用程序本身进行逆向工程),以及参数是什么,在IDA中列入死锁是有用的,但您需要运行它(除非参数在IDA的应用程序转储中清晰可见)。在IDA或OllyDbg v2中使用调试器。如果您需要更多帮助,请下午我(您可以在我的个人资料页面找到我的MSN)。 – 2012-07-11 21:12:54

0

为了获取一个动态链接库导出的公共符号(函数和变量),可以使用众所周知的dependency walker。参数和类型只有在关联的PDB文件可用时才可用(这似乎不是您的情况)。

+0

当然,处理托管或不托管的库时,情况会有所不同。我认为你的情况是不受管理的。 – mox 2012-07-11 07:41:21

+0

我得到的函数名称,但我仍然没有关于他们的参数的信息...唯一的选择是反向英雄该DLL? – Tobia 2012-07-11 07:49:26

+0

如果您有关联的符号文件(PDB文件 - http://msdn.microsoft.com/en-us/library/yd4f8bd1(v=vs.90).aspx),您可以将您的库加载到调试器中并检索这些细节。 – mox 2012-07-11 07:51:22

0

如果它是一个COM库,您可以使用Visual Studio附带的OLEViewer来查看该DLL的TypeLib。这会给你你需要的信息。