【发布时间】:2010-08-11 01:17:17
【问题描述】:
这样可以查看DLL文件的内容和功能吗...
几次前我在玩 OlyDBG 然后我发现有查看 dll 内容的选项...
所以建议我为此提供任何好的工具或软件......
假设我有一个名为“Python27.dll”的 DLL...
现在我需要查看这个 DLL 的内容,我该怎么办...
谢谢...
【问题讨论】:
这样可以查看DLL文件的内容和功能吗...
几次前我在玩 OlyDBG 然后我发现有查看 dll 内容的选项...
所以建议我为此提供任何好的工具或软件......
假设我有一个名为“Python27.dll”的 DLL...
现在我需要查看这个 DLL 的内容,我该怎么办...
谢谢...
【问题讨论】:
虽然使用起来并不简单(您需要了解可移植可执行文件(也称为 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
【讨论】:
Dependency Walker 可能会提供您想要/需要的东西——它肯定会显示 DLL 中的所有入口点。
【讨论】:
【讨论】:
我已经使用 ctypes 完成了一些工作,并在 Windows 中加载了 dll,但我认为 DLL 没有任何形式的自省。这真的没什么大不了的,因为 DLL 中的所有函数调用都是静态的。如果您尝试使用未记录的 DLL,您不仅需要知道函数的名称,还需要知道函数的参数。您必须对 DLL 进行逆向工程,这可不是小事。
所以,在我看来,我会拒绝。
【讨论】: