【问题标题】:Get library interface from dll从 dll 获取库接口
【发布时间】:2012-07-10 18:45:43
【问题描述】:

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

谢谢

【问题讨论】:

  • 要检索此信息,请使用 PeStudio (winitor.com)
  • 有了 Dependency Walker,我发现这是一个 C 库……没有了。

标签: dll interface reverse-engineering


【解决方案1】:

你必须反编译它并分析每个函数,它的调用约定,参数计数,参数含义(除非它带有一些 PDB,但我怀疑它),我以前做过这样的事情,这是复杂的工作,但可以做到。

【讨论】:

  • 我正在尝试使用 IDA 并反编译库...但是这似乎是一项艰巨的工作,我解决了参数计数和类型,但意义并不那么容易。
  • 您需要调试应用程序并在所选函数处设置断点以查看调用来自何处(并对应用程序本身进行反向工程)以及参数是什么,IDA 中的死列表很有用,但您需要运行它(除非参数在 IDA 的应用程序转储中清晰可见)。在 IDA 或 OllyDbg v2 中使用调试器。如果您需要更多帮助,请私信我(您可以在我的个人资料页面中找到我的 MSN)。
【解决方案2】:

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

【讨论】:

  • 当然,处理托管库或非托管库时情况有所不同。我想你的案子是无人管理的。
  • 我得到了函数名称,但我仍然没有关于它们的参数的信息......唯一的选择是对那个 dll 进行反向工程?
  • 如果您有相关的符号文件(PDB 文件 - msdn.microsoft.com/en-us/library/yd4f8bd1(v=vs.90).aspx),您可以在调试器中加载您的库并检索这些详细信息。
  • 您也可以使用像这样的 PDB 浏览器 (codeproject.com/Articles/37456/…) 浏览 PDB
  • 我没有任何其他文件,只有一个示例 exe(使用该库)和 dll。
【解决方案3】:

如果是 COM 库,您可以使用 Visual Studio 附带的 OLEViewer 查看 DLL 的 TypeLib。这将为您提供所需的信息。

【讨论】:

    猜你喜欢
    • 2010-11-12
    • 2021-11-18
    • 2022-11-25
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多