2009-10-10 26 views

回答

56

您可以使用Dependency Walker来查看函数名称。 只有在装饰后才能看到该功能的参数。 阅读常见问题解答如下:

如何查看参数和返回类型的函数? 对于大多数功能,这些信息根本不存在于模块中。 Windows的模块文件格式只提供一个文本字符串来标识每个函数。没有结构化的方式来列出参数数量,参数类型或返回类型。然而,一些语言做了一些叫做“修饰”或“修饰”的功能,这是将信息编码到文本字符串中的过程。例如,像简单修饰编码的int Foo(int,int)这样的函数可能会被导出为_Foo @ 8。 8表示参数使用的字节数。如果使用C++装饰,该函数将被导出为?Foo @@ YGHHH @ Z,它可以直接解码回函数的原始原型:int Foo(int,int)。 Dependency Walker通过使用Undecorate C++ Functions Command支持C++ undecoration。

+0

谢谢,但是当我尝试打开任何DLL时,它显示在日志窗口中: 错误:由于隐式依赖模块中缺少导出功能,至少有一个模块具有未解析的导入。 错误:找到具有不同CPU类型的模块。 警告:未找到至少一个延迟加载依赖项模块。 警告:由于延迟加载相关模块中缺少导出功能,因此至少有一个模块具有未解析的导入。 – 2009-10-10 18:17:38

+0

我正在使用Windows 7 x64 Final。 – 2009-10-10 18:21:24

+3

@Alon:嗯,你的应用程序是安静的搞砸了:)第一个错误表明你的一些dll是为32位系统编译的,而一些是为64位编译的。你只能在相同的进程中使用相同的CPU架构加载dll。只要应用程序正在处理它们,您就可以忍受其他两个错误。 – 2009-10-10 18:25:32

2

不确定其参数列表,但following TotalCommander plugin是非常有用的。

+8

我不知道人们想下载一个二进制不知道它到底是什么。插件页面在这里:http://physio-a.univ-tours.fr/tcplugins/ – RedGlyph 2009-10-10 18:34:34

+0

@RedGlyph随时编辑我的答案 – Restuta 2015-10-02 23:13:54

8

如果你没有源代码和API文档,机器码就是一切,你需要拆开使用类似IDA Pro的dll库,另一个选择是使用PE Explorer试用版。

PE Explorer提供反汇编程序。只有一种方法可以找出参数:运行反汇编程序并阅读反汇编输出。不幸的是,这个反向工程接口的任务不能自动完成。 PE资源管理器捆绑了39个不同库的描述,其中包括核心Windows®操作系统库(例如KERNEL32,GDI32,USER32,SHELL32,WSOCK32),关键图形库(DDRAW,OPENGL32)等。在Visual Studio命令提示

alt text http://www.heaventools.com/img/tour2-2.gif

+0

这与Nirsoft DLL Export Viewer有何不同? – Pacerier 2017-04-29 23:21:22

60

DUMPBIN:

C:\用户\安德鲁\ src2011 \加密\ cspsdk> DUMPBIN /出口csp.dll

微软(R)COFF/PE Dumper版本10.00.30319.01 版权所有(C)Microsoft Corporation。版权所有。

文件类型的文件csp.dll的转储:DLL

段包含CSP.dll

00000000 characteristics 
3B1D0B77 time date stamp Tue Jun 05 12:40:23 2001 
    0.00 version 
     1 ordinal base 
     25 number of functions 
     25 number of names 

ordinal hint RVA  name 

     1 0 00001470 CPAcquireContext 
     2 1 000014B0 CPCreateHash 
     3 2 00001520 CPDecrypt 
     4 3 000014B0 CPDeriveKey 
     5 4 00001590 CPDestroyHash 
     6 5 00001590 CPDestroyKey 
     7 6 00001560 CPEncrypt 
     8 7 00001520 CPExportKey 
     9 8 00001490 CPGenKey 
    10 9 000015B0 CPGenRandom 
    11 A 000014D0 CPGetHashParam 
    12 B 000014D0 CPGetKeyParam 
    13 C 00001500 CPGetProvParam 
    14 D 000015C0 CPGetUserKey 
    15 E 00001580 CPHashData 
    16 F 000014F0 CPHashSessionKey 
    17 10 00001540 CPImportKey 
    18 11 00001590 CPReleaseContext 
    19 12 00001580 CPSetHashParam 
    20 13 00001580 CPSetKeyParam 
    21 14 000014F0 CPSetProvParam 
    22 15 00001520 CPSignHash 
    23 16 000015A0 CPVerifySignature 
    24 17 00001060 DllRegisterServer 
    25 18 00001000 DllUnregisterServer 

摘要

1000 .data 
    1000 .rdata 
    1000 .reloc 
    1000 .rsrc 
    1000 .text 
+6

注意不要意外执行'dumpbin/export'(最后缺少's'),这是一个完全不同的命令。 – 2013-04-17 01:07:14

+1

我忘记了dumpbin,每六个月左右就必须查找一次这个答案。谢谢! – tofutim 2013-12-05 18:09:29

17

DLL Export Viewer以下出口NirSoft能用于在DLL中显示导出的函数。

This utility displays the list of all exported functions and their virtual memory addresses for the specified DLL files. You can easily copy the memory address of the desired function, paste it into your debugger, and set a breakpoint for this memory address. When this function is called, the debugger will stop in the beginning of this function.

enter image description here

+1

Nirsoft的应用程序不会显示无名函数:-( – TCS 2016-09-06 07:44:19

+0

@MagnusLindhe我使用这个应用程序复制地址并将其设置为断点,但是当我使用Visual Studio(调试模式,Win32)对其进行调试时,它不会暂停这个函数被调用了,我用了地址和相对地址来试试这个,他们不工作,我做错了什么?也许你知道吗?我找不到更多的信息。 – 2017-01-27 12:21:00

+0

The DLL button的浏览('64bit) – Owl 2017-07-14 13:52:15

相关问题