【问题标题】:Viewing Contents Of a DLL File查看 DLL 文件的内容
【发布时间】:2010-08-11 01:17:17
【问题描述】:

这样可以查看DLL文件的内容和功能吗...
几次前我在玩 OlyDBG 然后我发现有查看 dll 内容的选项...
所以建议我为此提供任何好的工具或软件......

假设我有一个名为“Python27.dll”的 DLL...
现在我需要查看这个 DLL 的内容,我该怎么办...
谢谢...

【问题讨论】:

    标签: c# python c dll import


    【解决方案1】:

    虽然使用起来并不简单(您需要了解可移植可执行文件(也称为 PE)文件的格式),但pefile 似乎是一个很好、强大且通用的工具,可用于查看 DLL 或任何其他 PE 文件(我不会冒险使用它来更改这样的文件,尽管我认为这是它的功能之一。

    例如,摘录模块的usage examples(并进行编辑以显示 dll 而不是他们使用的同样假设的文件名,即 exe;-):

    import pefile
    pe =  pefile.PE(‘/path/to/pefile.dll’)
    for exp in pe.DIRECTORY_ENTRY_EXPORT.symbols:
      print hex(pe.OPTIONAL_HEADER.ImageBase + exp.address), exp.name, exp.ordinal
    

    根据我指向的维基页面,应该显示如下内容:

    0x7ca0ab4f SHUpdateRecycleBinIcon 336
    0x7cab44c0 SHValidateUNC 173
    0x7ca7b0aa SheChangeDirA 337
    0x7ca7b665 SheChangeDirExA 338
    0x7ca7b3e1 SheChangeDirExW 339
    0x7ca7aec6 SheChangeDirW 340
    0x7ca8baae SheConvertPathW 341
    

    【讨论】:

      【解决方案2】:

      Dependency Walker 可能会提供您想要/需要的东西——它肯定会显示 DLL 中的所有入口点。

      【讨论】:

        【解决方案3】:

        在 Windows 上,DUMPBIN 提供了一些 DLL 检查功能。例如:

        DUMPBIN /EXPORTS C:\path\to\my.dll
        

        将显示所有导出的定义。

        【讨论】:

          【解决方案4】:

          我已经使用 ctypes 完成了一些工作,并在 Windows 中加载了 dll,但我认为 DLL 没有任何形式的自省。这真的没什么大不了的,因为 DLL 中的所有函数调用都是静态的。如果您尝试使用未记录的 DLL,您不仅需要知道函数的名称,还需要知道函数的参数。您必须对 DLL 进行逆向工程,这可不是小事。

          所以,在我看来,我会拒绝。

          【讨论】:

            猜你喜欢
            • 2011-09-06
            • 2018-01-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-03
            • 2022-01-03
            • 1970-01-01
            • 2018-02-14
            相关资源
            最近更新 更多