如何得到一个EXE(或Dll)隐式依赖的Dll名称(含路径)列表?

he_sl 2009-10-23 01:01:48
如题。
...全文
356 16 打赏 收藏 转发到动态 举报
写回复
用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下载,满地都是!
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工具看到的那个列表。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧