社区
进程/线程/DLL
帖子详情
如何得到一个EXE(或Dll)隐式依赖的Dll名称(含路径)列表?
he_sl
2009-10-23 01:01:48
如题。
...全文
356
16
打赏
收藏
如何得到一个EXE(或Dll)隐式依赖的Dll名称(含路径)列表?
如题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lllyyy2403
2010-01-03
打赏
举报
回复
这个有很多这样的例子啊,很多VC的参考书上就有的。我至少知道两本书上有,WIN核心编程(是在一个远程线程注入中的一段)和一本VC编程技巧宝殿什么的。
DavidHsing
2009-12-29
打赏
举报
回复
当这个目标程序正在运行的时候倒是好办,像很多进程管理那样,枚举他用到的 dll,这个可行.
要是他没运行,仅仅是个 PE 在磁盘上,俺没辄了....
还有楼上各位兄弟说的什么 depends 之类,应该都只能对静态的管用,动态的 LoadLibrary 不好使
jingzhongrong
2009-12-27
打赏
举报
回复
分析PE格式,读取导入表,里面就有EXE(DLL)导入的dll名称,不过没有记录路径,系统LoadLibrary时会在一些路径下查找dll,可以生成这些路径,然后判断对应路径dll是否存在来得到dll的路径。
哈利路亚1874
2009-12-27
打赏
举报
回复
用代码实现:这个就分析PE结构了,导入表;
包含导入函数和库;
还有就是用工具查了,这工具太多了,去Pediy下载,满地都是!
xwsn007
2009-10-23
打赏
举报
回复
就是这个啦
http://www.pudn.com/downloads40/sourcecode/windows/system/detail135813.html
deping_chen
2009-10-23
打赏
举报
回复
放心,EXE也是照样可以LoadLibrary进内存的.不要害怕.呵呵.
deping_chen
2009-10-23
打赏
举报
回复
你的问题需要解析PE格式文件.网上有很多讲PE文件格式知识的,但可能提供可靠代码的比较少.
下面是我的博客的链接,里面的类就是解析PE文件的.
如果该PE文件不在内存,你需要把PE文件用LoadLibrary加载进内存,然后构造KPEFile类的对象.
http://hi.baidu.com/chendeping/blog/item/c8e87d178b8218034a90a773.html
你把里面的这个函数略作修改,就可以得到该PE文件直接依赖的DLL,间接依赖的需要递归.
PIMAGE_IMPORT_DESCRIPTOR KPEFile::GetImportDescriptor(
LPCSTR pDllName)
{
// first IMAGE_IMPORT_DESCRIPTOR
PIMAGE_IMPORT_DESCRIPTOR pImport = (PIMAGE_IMPORT_DESCRIPTOR)
GetDirectory(IMAGE_DIRECTORY_ENTRY_IMPORT);
if ( pImport==NULL )
return NULL;
while ( pImport->FirstThunk )
{
if ( stricmp(pDllName, RVA2Ptr(pImport->Name))==0 )
return pImport;
// move to next imported module
pImport ++;
}
return NULL;
}
这个函数本来就简单,你自己改吧.
he_sl
2009-10-23
打赏
举报
回复
我没说清楚,问题是如何编程实现。
幸福官
2009-10-23
打赏
举报
回复
用Depends这个工具查看一下EXE文件,列表中的文件都是依赖的啊
MoXiaoRab
2009-10-23
打赏
举报
回复
用Depends看么,觉得不爽,用代码遍历PE结构,找IAT也不反对
xbottle
2009-10-23
打赏
举报
回复
另外编译后,debug,在“输出”视图也会显示dll和他的路径
xbottle
2009-10-23
打赏
举报
回复
你的项目->属性->配置属性->链接器->命令行
那里包含部分dll文件和相应路径。
ToperRay
2009-10-23
打赏
举报
回复
用Depends挨个找吧。
百事烟
2009-10-23
打赏
举报
回复
大部分在系统目录里,个别的搜索文件..
oyljerry
2009-10-23
打赏
举报
回复
http://www.pudn.com/downloads40/sourcecode/windows/system/detail135813.html
he_sl
2009-10-23
打赏
举报
回复
就是用Depends工具看到的那个列表。
改变
隐式
加载
dll
路径
的方法(不修改环境变量)
问题: 今天我遇到了这样
一个
需求:随着代码的累计,
dll
越来越多了,想将
exe
所有
依赖
的
dll
放到子目录中,保持软件顶级目录的整洁. 但有个一限制条件--不能修改环境变量PATH.对于使用LoadLibrary加载的
dll
还好办,只需要修改
dll
所在的
路径
即可.但对于那些
隐式
加载的
dll
却无法分离(有些
dll
要么导出了大量的函数,如果使用LoadLibrary+GetProcAddess的方式工...
windows下查看
exe
文件
依赖
的
dll
如题,安装VC后,在安装目录下能够找到
一个
叫dumpbin.
exe
的程序,在命令行下,用它来查看
一个
exe
的
依赖
的
dll
,如下所示: > dumpbin/dependents C:\Windows\System32\curl.
exe
Microsoft (R) COFF/PE Dumper Version 14.16.27045.0 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file C:\Windo..
dll
依赖
查看工具-depends
depends简介 一般情况下,
一个
可执行文件(
exe
或
dll
)的运行会
依赖
其他
dll
文件。 Depends用来显示与
一个
可执行文件(
exe
或者
dll
)相关的
依赖
项(
dll
),以及该
exe
或
dll
引用了这些
dll
中的哪些接口。同时也可以看到每个被
依赖
的
dll
中的所有导出的函数接口。 比如我们生产了
一个
exe
程序,显然在我们的开发环境下是可以执行这个e...
Qt5.15添加
dll
库如何指定库文件
路径
?
目前QtCreator是不支持添加后缀为
dll
动态库的,一般添加动态库的时候都是以lib或者a结尾的文件。Linux下则是so和a结尾的文件。MacOS为dylib。另外,大家在进行跨平台开发的时候,需要指定win32:{},以及在代码中指定#ifdef Q_OS_WIN等标识。那么如果你只是有
一个
dll
文件,没有.lib或者.a的文件,怎么办?这个时候,我们可以直接如下图所示添加该
dll
文件的
路径
即可。
Qt 设置
隐式
加载
dll
路径
我们对动态库的调用,是在代码中直接使用LoadLibrary,或其他加载函数,直接对
dll
或so进行加载,然后解析文件中的函数符号,并调用该函数。这种链接方式,称之为显式链接。从上述描述可以分析,
隐式
加载是不能从手动指定的位置进行加载的。但除了上述两种方式,还有一种延迟加载,可以融合
隐式
加载的便捷性和显式加载的位置灵活性。在程序从开始运行时,就会按照系统中一定的搜索
路径
,寻找动态库,找到就自动加载它,才能成功运行程序,这些步骤,是系统自动完成的。在c++中
DLL
的加载方式有两种,显式加载和
隐式
加载。
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章