首页
社区
课程
招聘
如何获得dll里面的某个函数的参数和返回值类型?
发表于: 2005-2-2 18:24 12102

如何获得dll里面的某个函数的参数和返回值类型?

2005-2-2 18:24
12102
收藏
免费 0
支持
分享
最新回复 (17)
雪    币: 150
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谁能够说说方法。谢谢!
2005-2-3 10:38
0
雪    币: 200
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好像不行,这在很久以前就讨论过了。我想如果能得到dll里面的函数和返回值的话,那么很多软件我们就可以自己编了,连破解也不必了,因为直接套用dll中的函数就可以了。
2005-2-3 11:04
0
雪    币: 223
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
可以看看pe文件输出表方面的介绍
2005-2-3 12:10
0
雪    币: 302
活跃值: (410)
能力值: ( LV12,RANK:410 )
在线值:
发帖
回帖
粉丝
5
我可以做到,我分析过的DLL最复杂的有20几个函数,并且有些函数的入口参数是结构或类指针,极其复杂,关键看你的功力了。不过要结合全套可执行文档,静态+动态分析。这个过程比起解个加密狗要难得多,令很多人望而生畏且认为不可思议。
    我除了分析过入口参数和返回类型,还分析过某些函数里面的算法(包括压缩算法),后来用VC++完全重新写了这个DLL,试验一点问题没有。

    天下无难事,只要有心人!相信比我水平高的人还大有人在,实践是检验真理的唯一标准!!!

                                         Spring.W
                                         2005.2.3
2005-2-3 21:02
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
论坛中能做到精通逆向工程的人屈指可数啊!功力不够还要加油啊
2005-2-3 21:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 Spring.W 发布
我可以做到,我分析过的DLL最复杂的有20几个函数,并且有些函数的入口参数是结构或类指针,极其复杂,关键看你的功力了。不过要结合全套可执行文档,静态+动态分析。这个过程比起解个加密狗要难得多,令很多人望而生畏且认为不可思议。
我除了分析过入口参数和返回类型,还分析过某些函数里面的算法(包括压缩算法),后来用VC++完全重新写了这个DLL,试验一点问题没有。

天下无难事,只要有心人!相信比我水平高的人还大有人在,实践是检验真理的唯一标准!!!

........

希望能讲讲经验
2005-3-11 10:03
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
8
最初由 Spring.W 发布
我可以做到,我分析过的DLL最复杂的有20几个函数,并且有些函数的入口参数是结构或类指针,极其复杂,关键看你的功力了。不过要结合全套可执行文档,静态+动态分析。这个过程比起解个加密狗要难得多,令很多人望而生畏且认为不可思议。
我除了分析过入口参数和返回类型,还分析过某些函数里面的算法(包括压缩算法),后来用VC++完全重新写了这个DLL,试验一点问题没有。

天下无难事,只要有心人!相信比我水平高的人还大有人在,实践是检验真理的唯一标准!!!

........


希望签名写在上面,经验写在下面,便于大家仰慕
2005-3-11 10:45
0
雪    币: 7
活跃值: (45)
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
9

IDA就可以把参数分析出来了吧..
2005-3-11 10:49
0
雪    币: 213
活跃值: (96)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
感觉没那么复杂
2005-3-11 12:36
0
雪    币: 279
活跃值: (375)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
11
好像感觉没那么复杂。逆向里的数据表示是计算机表示,如dword,word等,比编程语言里简单些
2005-3-11 13:03
0
雪    币: 236
活跃值: (155)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
12
C++风格导出的动态库返回值和参数都经过了修饰有编码的,因此可以直接解码看到,如果是COM的就根据简单了,直接看看类型库就完全可以搞定了,唯独那种C风格导出的DLL需要进行逆向分析。
2005-3-11 15:25
0
雪    币: 133
活跃值: (113)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
13
花费很多精力。
2005-3-11 21:39
0
雪    币: 313
活跃值: (440)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
14
最初由 wrong 发布
好像不行,这在很久以前就讨论过了。我想如果能得到dll里面的函数和返回值的话,那么很多软件我们就可以自己编了,连破解也不必了,因为直接套用dll中的函数就可以了。

你难道没听说过?这样的破解是有的啊!!
2005-3-11 22:20
0
雪    币: 221
活跃值: (55)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
我好象从来不觉得这是个问题,我一般看返回语句,例如:
retn 4h 表示有1个参数
retn 8h 表示有2个参数
retn 10h 表示有4个参数
etc...
不过有些时候,某些东西相当于跳转,虽然是对压栈进行操作,例如
push xxxxxh
ret
这实际上表示跳转到xxxxxh处,相当于JMP xxxxxh
另外,参数的类型即使IDA也不知道的,主要看跟踪者的经验了。Spring.W说的很对,需要分析的。有些是指针的指针,有些是直接数,只有针对具体的程序才能决定,同样,返回值不一定全部在EAX里,也要参考上下文来决定的。
2005-3-11 22:38
0
雪    币: 257
活跃值: (369)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
16
值得继续讨论这个问题,比较有价值。我正在分析PE文件并在写工具,用得上,呵呵。
2005-3-11 23:18
0
雪    币: 148
活跃值: (25)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
17
查看DLL的导出表想来没问题吧.
用SDK里的Depends.exe就可以或者Dumpbin /exports 文件名也可以实现.
取到导出函数后, 就可以用SDK里的undname.exe来再现函数的本来面貌了, 所谓本来面貌是指函数的返回类型, 所需参数等等信息.(注意, 要加参数 -f , 否则将只显示函数的所在类和函数名)
实例:
D:\MyProj\Two\Bin>dumpbin /exports twotst.dll
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

Dump of file twotst.dll

File Type: DLL

  Section contains the following exports for TwoTst.dll

           0 characteristics
    424775A1 time date stamp Mon Mar 28 11:10:25 2005
        0.00 version
           1 ordinal base
           1 number of functions
           1 number of names

    ordinal hint RVA      name

          1    0 00001060 ?TestA@@YAHH@Z

  Summary

        5000 .data
        1000 .rdata
        1000 .reloc
        6000 .text

D:\MyProj\Two\Bin>undname -f ?TestA@@YAHH@Z
Microsoft(R) Windows NT(R) Operating System
UNDNAME Version 5.00.1768.1Copyright (C) Microsoft Corp. 1981-1998

>> ?TestA@@YAHH@Z == int __cdecl TestA(int)

D:\MyProj\Two\Bin>
2005-3-28 11:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
最初由 coolstar14 发布
取到导出函数后, 就可以用SDK里的undname.exe来再现函数的本来面貌了, 所谓本来面貌是指函数的返回类型, 所需参数等等信息.(注意, 要加参数 -f , 否则将只显示函数的所在类和函数名)

别信...
2005-4-19 18:05
0
游客
登录 | 注册 方可回帖
返回
//