本篇文章给大家谈谈怎么看dll的函数,以及如何能看到dll中的函数定义对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、如何查看DLL中的函数名及参数
- 2、怎么查看dll函数 vs2010
- 3、怎么查看dll里面的函数,怎么用dumpbin查看dll
- 4、你好,怎么查看dll中函数的的代码
- 5、如何查看DLL中的函数信息
- 6、如何查看DLL中的函数
如何查看DLL中的函数名及参数
函数名很简单,导出表里写的明明白白,随便一个dll查看工具都可以读出,比如CFF explorer。但是对于参数,就像楼上说的那样,不能看出它真实的数据类型(即在高级语言中的抽象数据类型)。因为都编译成汇编了,没有抽象的概念了,此时只能知道数据大小。
但是,不代表就没有办法了。有个一软件叫IDA,专门用于静态分析,它可以反编译汇编成C的伪代码,从而大致能知道传入、传出了啥。如果再知道函数的功能的话,只要不是太复杂,分析出参数类型问题不大。
IDA反编译大概效果就是这样:void __fastcall Function(__int64 a1, __int64 *a2, int a3, _QWORD *a4)。这里只复制了个声明,但也可以看出,比晦涩的汇编容易读多了。注意上面写的数据类型只能当作参考,因为这些数据类型也是软件根据代码行为推测的。
怎么查看dll函数 vs2010
1. 打开命令行窗口CMD
2. 运行vcvarsall.bat
VS2010 里vcvarsall.bat是在右键VS打开文件位置,D:\Microsoft Visual Studio 10.0\Common7\Tools目录下,运行方法是直接将vcvarsall.bat文件拖入命令行窗口,然后回车。(拖入相当于在命令行中输入“D:\Microsoft Visual Studio 10.0\Common7\Tools\vcvarsall.bat”)
运行vcvarsall.bat后,窗口中出现“Setting environment for using Microsoft Visual Studio 2010 x86 tools.”
3. 在命令行了输命令:dumpbin /exports dll文件完整路径,即可得到DLL的接口。
如要查看user32.dll的接口,输入:dumpbin /exports “C:\Windows\System32\user32.dll” 回车即可。
其中,步骤2可以省去,方法是不在运行中打开命令行窗口,而是在应用程序Microsoft Visual Studio 2010的Visual Studio Tools文件夹中打开Visual Studio Command Prompt (2010)命令窗口,可发现窗口中直接有“Setting environment for using Microsoft Visual Studio 2010 x86 tools”这句话,此时,直接输入命令:dumpbin /exports dll文件完整路径,即可得到DLL的接口。
其它内容:
查看静态库的信息要用命令行来实现:
dumpbin /LINKERMEMBER Test.lib 1.txt
上面的功能是将静态库的信息导出保存在1.txt文件中,这样就可以在1.txt文件中查看相关的信息了
怎么查看dll里面的函数,怎么用dumpbin查看dll
没有dumpbin工具的话,去网上下载
在cmd下面,进入dump文件的目录下
方法/步骤
1
接着,我们输入命令 dumpbin -export dll名
,函数名出来了。。。
2
还有其他命令,可以参考help,这样就可以了。
还有另外一种方式是用软件查看的。
你好,怎么查看dll中函数的的代码
没有dumpbin工具的话,去网上下载
在cmd下面,进入dump文件的目录下
1接着,我们输入命令 dumpbin -export dll名
2还有其他命令,可以参考help,这样就可以了。
3可以用C++自带的工具查
开始 ——》所有程序 ——》 Microsoift visual C++ 6.0 ——》Microsoift visual C++ 6.0 Tools ——》 depends
查具体参数用反汇编,习惯于用OD,ctrl+N 找到要查的参数(后面会有显示是几个参数的),选中那一行按Enter就会跳到那个函数的调用段,里面会有具体的参数类型
如何查看DLL中的函数信息
函数名可以查到,vc工具的depend就可以了,其他也有不少工具可以查到,声明的没有,声明没有编译到dll里的,声明包括函数名、参数和返回值。函数名说了,参数得通过反汇编得到,由于函数里通过堆栈来获得参数值,通过反汇编该函数,从函数头开始找出取堆栈的代码,可以找出该函数的参数个数和类型。参数的含意得读懂函数的反汇编代码,了解各参数的使用才能确定参数用途了。返回值在windows中是通过寄存器eax来返回的,如果返回的值小于32位,就用eax保存值,大于32位就用eax保存返回值的地址,所以要知道返回值的类型,得了解函数最好把什么存到eax中,存的值是什么才能知道返回值。
如何查看DLL中的函数
可以通过反汇编来知道接口函数的参数,建议使用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的函数和如何能看到dll中的函数定义的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » 怎么看dll的函数(如何能看到dll中的函数定义)
1 评论