社区
C++ 语言
帖子详情
怎样查看lib文件中的函数名和函数参数啊
xiao41321yx
2010-04-27 07:08:30
各位大虾:
小弟在做一个项目时需要得到一个lib文件中的函数名和参数,网上找了很久没有什么有用的方法。用记事本倒是可以得到函数名可惜得不到函数的参数,郁闷啊,那位大虾知道告知小弟一声。小弟在此谢谢了!
小弟邮箱xiao41321@126.com
...全文
24790
9
打赏
收藏
怎样查看lib文件中的函数名和函数参数啊
各位大虾: 小弟在做一个项目时需要得到一个lib文件中的函数名和参数,网上找了很久没有什么有用的方法。用记事本倒是可以得到函数名可惜得不到函数的参数,郁闷啊,那位大虾知道告知小弟一声。小弟在此谢谢了! 小弟邮箱xiao41321@126.com
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ColaCoding
2011-05-06
打赏
举报
回复
6楼真厉害啊!
danny1221
2011-01-27
打赏
举报
回复
Mark.....................
jizhongqing
2010-04-28
打赏
举报
回复
lib就是obj文件打包起来的,可以用lib.exe解出来,下面是vc环境下的操作,其他环境,看命令行帮助就可以了。
lib /list xx.lib 列出lib里所有obj文件名,我这里如下
。。。。。很多省略
lib/err/err.obj
lib/dict/dictll.obj
lib/coreDump/coreDumpWin32.obj
lib/config/preference.obj
lib/config/configUL.obj
找到你关注的obj,这里选择configUL.obj,然后 lib /EXTRACT:lib/config/configUL.obj xx.lib
解出configUL.obj, 然后把obj拖入IDA,我这里是ida5.5,在函数列表里找你要调用的函数,然后逆之
_Config_GetString .text 00000068 00000039 R . . . B . .
_Config_GetBool .text 000000B8 00000039 R . . . B . .
_Config_GetLong .text 00000108 00000039 R . . . B . .
_Config_GetInt64 .text 00000158 0000003D R . . . B . .
_Config_GetTriState .text 00000198 00000039 R . . . B . .
_Config_GetDouble .text 000001E8 00000041 R . . . B T .
_Config_GetPathName .text 00000288 00000039 R . . . B . .
_Config_NotSet .text 000002C4 00000035 R . . . B . .
_Config_GetLongPlain .text 000003B0 00000015 . . . . . . .
_Panic UNDEF 000003D0 00000004 R . . . . . .
_Preference_GetString UNDEF 000003D4 00000004 R . . . . . .
_Str_Vsnprintf UNDEF 000003D8 00000004 R . . . . . .
_Preference_GetBool UNDEF 000003DC 00000004 R . . . . . .
_Preference_GetLong UNDEF 000003E0 00000004 R . . . . . .
_Preference_GetInt64 UNDEF 000003E4 00000004 R . . . . . .
_Preference_GetTriState UNDEF 000003E8 00000004 R . . . . . .
_Preference_GetDouble UNDEF 000003EC 00000004 R . . . . . .
_Preference_GetPathName UNDEF 000003F4 00000004 R . . . . . .
_Preference_NotSet UNDEF 000003F8 00000004 R . . . . . .
我这里随便选择一个函数 _Config_GetString,很小的函数,呵呵,方便说明
.text:00000068 _Config_GetString proc near
.text:00000068
.text:00000068 var_400 = byte ptr -400h
.text:00000068 arg_0 = dword ptr 8
.text:00000068 arg_4 = dword ptr 0Ch
.text:00000068 arg_8 = byte ptr 10h
.text:00000068
.text:00000068 push ebp
.text:00000069 mov ebp, esp
.text:0000006B mov ecx, [ebp+arg_4]
.text:0000006E sub esp, 400h
.text:00000074 lea eax, [ebp+arg_8]
.text:00000077 push eax
.text:00000078 push ecx
.text:00000079 lea edx, [ebp+var_400]
.text:0000007F push 400h
.text:00000084 push edx
.text:00000085 call _Str_Vsnprintf
.text:0000008A mov ecx, [ebp+arg_0]
.text:0000008D lea eax, [ebp+var_400]
.text:00000093 push eax
.text:00000094 push ecx
.text:00000095 call _Preference_GetString
.text:0000009A add esp, 18h
.text:0000009D mov esp, ebp
.text:0000009F pop ebp
.text:000000A0 retn
.text:000000A0 _Config_GetString endp
这个函数很简单,一看就知道功能了,格式化一个buffer,构建一个字符串返回,
下面是是直接f5后修改的结果
int __cdecl Config_GetString(int a1, int a2, char *buf)
{
char buffer[0x400];
Str_Vsnprintf(buffer, sizeof(buffer), a2, buf);
return Preference_GetString(a1, &v4);
}
这种手法,搞个10个,8个的函数还行,多了会死人的,最好看了关键思路自己写个来的更快
xiao41321yx
2010-04-28
打赏
举报
回复
谢谢,非常有用,哈哈
柯本
2010-04-27
打赏
举报
回复
呵呵,没细看要求,函数名是没问题,函数参数是不可能得到的
太乙
2010-04-27
打赏
举报
回复
lib静态库的话,使用也要.h的吧??否则怎么编译?
柯本
2010-04-27
打赏
举报
回复
[Quote=引用 2 楼 xiao41321yx 的回复:]
请问dumpbin在什么地方输入啊?
不好意思,小弟菜鸟
[/Quote]
你是用什么开发工具?
VC的话进入命令行方式(如VS2008:菜单上有Visual Studio 2008 命令提示)
然后进入你lib所在目录(用cd ....)就可用dumpbin了
如果你用gcc,可用objdump
如果你用bcb,可用tdump
如果你还在用TC,可用tlib
xiao41321yx
2010-04-27
打赏
举报
回复
请问dumpbin在什么地方输入啊?
不好意思,小弟菜鸟
xiuxianshen
2010-04-27
打赏
举报
回复
直接用命令dumpbin -exports 你的lib名称
Lib
Tools-Viewer1.0 windows
lib
dll库
函数
查看
器
Lib
Tools-Viewer1.0 windows
lib
dll库
函数
查看
器,只能
查看
函数
名
lib
viewer 源码及 可执行
文件
lib
文件
查看
器,可用于
查看
lib
中
导出的
函数
名
及参数,并且可将所有
函数
原型导出成.h
文件
。 具体参考: http://www.codeproject.com/Articles/9310/A-tool-to-view-a-
LIB
QT编写DLL调用示例 方法 参数 返回值 事件回调
QT编写DLL给外部程序调用示例 方法 参数 返回值 事件回调 : 1:C#或者 NET 第一步:引入命
名
空间; using System Runtime InteropServices; 第二步:声明
函数
必须与实际DLL
中
函数
名
及参数一致; [DllImport "qtdll dll" ] public static extern int add int i ; 第三步:调用
函数
执行; Console WriteLine add 10 ToString ; 2:QT 第一步:引入头
文件
; #include <Q
Lib
rary> 第二步:定义
函数
指针 以备调用; typedef int Add int ; 第三步:载入DLL 调用
函数
执行; Q
Lib
rary
lib
"qtdll dll" ;
lib
load ; Add add Add
lib
resolve "add" ; add 50 ; 3:C或C++ 第一步:引入头
文件
; #include <windows h> 第二步:定义
函数
指针; typedef int Add int ; 第三步:载入DLL 调用
函数
执行; HINSTANCE hDll Load
Lib
rary "qtdll dll" ; 载入DLL获取句柄 if hDll NULL { Add add Add GetProcAddress hDll "add" ; 获取
函数
地址 printf "%d" add 110 ; Free
Lib
rary hDll ; 释放DLL }">QT编写DLL给外部程序调用示例 方法 参数 返回值 事件回调 : 1:C#或者 NET 第一步:引入命
名
空间; using System Runtime InteropServices; 第二步:声明
函数
必须与实际DLL
中
函数
名
及参数一致; [DllImport "qtdll dll" ] public static extern int add in [更多]
windows下
查看
lib
,dll包含
函数
名
通常
lib
,dll
中
的
函数
的具体实现方法,我们是无法看到的,但是可以通过dumpbin工具看到里面的
函数
名
称。可用如下方法: 开始->所有程序->Microsoft Visual Studio 2010->Visual Studio Tools ->“Visual Studio 命令提示(2010)”后 对于
lib
:C:\Program Files (x86)\Micr...
查看
lib
中
的
函数
命令
dump /exports a.
lib
C++ 语言
65,170
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章