如何查看dll中的函数

如何查看dll中的函数,第1张

可以通过反汇编来知道接口函数参数,建议使用W32DSM来分析,也可以直接使用VC来分析,就是麻烦一点。

现在使用W32DSM来具体说明:

1。先打开需要分析的DLL,然后通过菜单功能-》出口来找到需要分析的函数,双击就可以了。

它可以直接定位到该函数。

2。看准该函数的入口,一般函数是以以下代码作为入口点的。

push ebp

mov ebp, esp

3。然后往下找到该函数的出口,一般函数出口有以下语句。

ret xxxx;//其中xxxx就是函数差数的所有的字节数,为4的倍数,xxxx除以4得到的结果

就是参数的个数。

其中参数存放的地方:

ebp+08 //第一个参数

ebp+0C //第二个参数

ebp+10 //第三个参数

ebp+14 //第四个参数

ebp+18 //第五个参数

ebp+1C //第六个参数

。。。。

-------------------------------------------

还有一种经常看到的调用方式:

sub esp,xxxx //开头部分

//函数的内容

。。。

//函数的内容

add esp,xxxx

ret //结尾部分

其中xxxx/4的结果也是参数的个数。

-------------------------------------------------

还有一种调用方式:

有于该函数比较简单,没有参数的压栈过程,

里面的

esp+04就是第一个参数

esp+08就是第二个参数

。。。

esp+xx就是第xx/4个参数

你说看到的xx的最大数除以4后的结果,就是该函数所传递的参数的个数。

----------------------------------------------

到现在位置,你应该能很清楚的看到了传递的参数的个数。至于传递的是些什么内容,还需要进一步的分析。

最方便的办法就是先找到是什么软件在调用此函数,然后通过调试的技术,找到该函数被调用的地方。一般都是PUSH指令

来实现参数的传递的。这时可以看一下具体是什么东西被压入堆栈了,一般来说,如果参数是整数,一看就可以知道了,

如果是字符串的话也是比较简单的,只要到那个地址上面去看一下就可以了。

如果传递的结构的话,没有很方便的办法解决,就是读懂该汇编就可以了。对于以上的分析,本人只其到了抛砖引玉,

希望对大家有点用处。

不是吧,那就研究DLL的文件结构

参看 Dependency Walker 软件

其实没那么多动态要获取的变量名和其相关的类型和值吧

要是少的话,就固定下来

多的话

那另说

就是先获取这个DLL都有什么接口名啊,这个就是查看DLL类似软件的功能实现啊

#include "stdafxh"

#include <windowsh>

#include <winbaseh>

#include <stdioh>

#include <tcharh>

#include <imagehlph>

typedef PVOID (CALLBACK PFNEXPORTFUNC)(PIMAGE_NT_HEADERS,PVOID,ULONG,PIMAGE_SECTION_HEADER);

void printAllFuncName(char fileName);//打印所有函数名称的函数声明

int main(int argc, char argv[])

以上就是关于如何查看dll中的函数全部的内容,包括:如何查看dll中的函数、VC++ exe如何获取dll的变量名称,和变量值。其中dll中的变量名、变量类型对exe来讲都是未知的。、如何获取一个DLL文件中的类名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9818401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存