查看DLL文件的内容

时间:2010-08-11 01:17:17

标签: c# python c dll import

是否可以查看DLL文件的内容和功能...
很久以前我在玩OlyDBG然后我发现有查看dll内容的选项...
所以建议我任何好的工具或软件......

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

4 个答案:

答案 0 :(得分:5)

虽然使用起来并不简单(您需要了解可移植可执行文件,即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
根据我指出的wikipage,应该显示如下内容:

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

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

将显示所有导出的定义。

答案 3 :(得分:0)

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

所以,在我看来,我会说不。