(转)怎么获取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函数查看工具,直接把DLL文件拖入列表查看即可。 1.将本程序快捷方式放入系统 "SendTo" 目录后,就可以右键文件"发送到"实现文件快速查看 2.按粘帖键(Ctrl+V)将剪辑板中字符串在列表中匹配查找 3.关于参数量的问题,由于猜解方法过于简单对于部分函数未从当前函数返回,而是"JMP"到别的函数 所以猜解可能会有错误,需要结合已知函数库或反汇编查看,另此方法对于cdecl调用函数无效 4.关于反汇编视图的"到首返回"如果勾选即表示仅反汇编到头一个RETN为止,否者将按照"DisAsm_MaxLine" 所指定的行数.生效方法参见说明细则12~13. 5.将PEID userdb.txt 放置到程序目录下可以实现查壳 6.如果将易语言API伴侣DATA下文件复制到本目录,可获得已知函数信息.这首先要感谢API伴侣的作者 7.在目录下建立 "ViewApi.cfg" ,设置信息将写入配置文件可方便放入优盘等移动存储器中使用 程序启动时会优先读取配置文件,如果文件不纯在则会访问注册表 8.如果你觉得这个美化窗口很浪费资源,可以打开注册表修改如下项值即可关闭 [HKEY_CURRENT_USER\Software\ViewApiList] "UI"=dword:00000000 9.如果你觉得反汇编影响了效率,可以打开注册表修改如下项值即可关闭 [HKEY_CURRENT_USER\Software\ViewApiList] "DisAsm"=dword:00000000 10.如果想关闭查壳功能可以删除userdb.txt或注册表如下设置 [HKEY_CURRENT_USER\Software\ViewApiList] "CheckShell"=dword:00000000 11.在线查询接口可在注册表如下位置修改,{searchTerms}为保留关键字被作为替换函数名 [HKEY_CURRENT_USER\Software\ViewApiList] "WebSearch"="http://www.baidu.com/s?wd={searchTerms}&ie=utf-8" 12.是否仅反汇编到头一个返回,1.表示是,0表示否 [HKEY_CURRENT_USER\Software\ViewApiList] "DisAsm_Retn"=dword:00000001 13.反汇编最大行数,即表示当前地址向后的长度,与函数实际长度无关.是否生效需要根据"DisAsm_Retn"设置 [HKEY_CURRENT_USER\Software\ViewApiList] "DisAsm_MaxLine"=dword:000003e8 键盘快捷键说明: TAB(SHIFT+TAB) -- 视图焦点切换 CTRL+S -- 视图切换 CTRL+F -- 文字搜索 F3 -- 搜索下一个 CTRL+A -- 项目全选 CTRL+C -- 复制选中项目函数名称/汇编代码 CTRL+V -- 将剪辑板中的字符在视图中匹配搜索 ALT+← -- 反汇编视图上一次跳的后退 ALT+→ -- ... 前进 Application -- 弹出右键菜单(右WIN键和右CTRL键中间的那个键)
w32dsm1、修正第一版本(2000.9.5): 修改者:kuangren 可以同时对付VB/DELPHI,而且提取字符能力更高,同时减少了无效字符的提取 2、修正第二版本: 修改者:bpx 解决反汇编有中文字串的软件时,中文串都以乱码显示问题。 3、修正第三版本 (by Killer http://nfans.net/) 1)、自定义语法高亮显示的色彩,某些关键字可以用突出颜色显示,Good! 2)、可以手工增加注释,类似IDA,注释可以复制、保存。更加方便分析和写破解文章! 3)、增强的搜索、查找功能! 4)、命令行功能! 5)、增加最新使用文件列表功能! 6)、相当实用的快速编辑功能,可以取代HEX编辑器了! Cool:) 7)、增加汇编代码修补(Permenant Patcher)功能! 8)、打开当前反汇编文件写操作! 9)、本版修正两个窗口不能正常显示的BUG。 10)、在反汇编窗口显示显示中文的功能! 11)、在串式数据参考中提取中文字符串的功能! 12)、支持VB/DELPHI字符串的提取,可以自定义VB_patch的打开和关闭 ======================================================== 这中间有众多修改版本,我也记不清,欢迎补充。 ======================================================== 4、W32dsm8.93+ 修改者:pll621 支持滚轮鼠标的滚动和文件的拖放打开。 在串式参考、输入表、输出表等窗口增加了字串查找功能,非常实用。 添加右键功能: 右健双击弹出search菜单 按住右键不放点击左键弹出打开文件菜单 更改滚动速度跳三行 增加区域判断在原来能跳回去的那一行不弹出右键菜单而是实现原来的双击的功能,其他地方单击右键弹出菜单。 右键菜单在W32Dasm(20020827)版的基础上增加cemment,hexedit,和goto localtion三个经常用的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值