当前位置: 首页 > ds >正文

2.6 查看动态库或程序的依赖库

一、分析软件依赖库的原理

动态库依赖关系由可执行文件结构决定:

  • Windows PE文件​​:通过​​导入表(Import Table) ​明确声明依赖的DLL名称及调用的函数。
  • ​​Linux ELF文件​​:在 ​​.dynamic段​​ 中记录NEEDED条目,列出所有依赖的.so文件。

工具通过解析这些结构获取依赖信息,若库文件缺失或路径错误会导致运行时报错(如Windows的“缺少xxx.dll”,Linux的“error while loading shared libraries”)。

二、Windows系统常用分析工具

工具类型特点
Dependencies图形完整依赖树、缺失库标记
dumpbin命令行快速列表,需VS环境
Process Explorer进程监控实时依赖分析

2.1 ​​Dependencies(推荐)

下载地址:Dependencies

​功能​​:图形化工具,显示依赖树、缺失库、搜索路径及版本信息。

操作流程​​:打开DependenciesGui.exe → File → Open → 选择.exe/.dll → 查看依赖树

​​优势​​:支持递归分析、延迟加载检测,直观标记缺失项(红色)
在这里插入图片描述

2.2 ​​​​dumpbin(命令行)​

适用场景​​:需快速获取依赖列表时。

​​命令示例​​:dumpbin /dependents “C:\Path\To\Program.exe”

​​依赖环境​​需安装Visual Studio,定位到VS工具目录执行

在这里插入图片描述

在这里插入图片描述

2.3 ​​​​​​Process Explorer(进程级分析)​

下载地址:Download Process Explorer (3.3 MB)

功能​​:实时查看运行中进程加载的DLL。

​​操作​​:启动进程 → 右键进程 → Properties → DLLs选项卡

在这里插入图片描述

三、Linux系统常用分析工具

工具适用场景优势
ldd快速依赖检查直接显示路径及状态
objdump/readelf安全静态分析不执行程序,避免风险
pldd/pmap运行时进程分析监控实际加载的库

3.1 ​​ ​​ldd(基础命令)​

​功能​​:列出可执行文件或共享库的运行时依赖

命令示例​​:

ldd /path/to/program  # 显示依赖库路径及状态(not found即缺失)

在这里插入图片描述

3.2 ​​​​objdump/readelf(底层解析)​

​​适用场景​​:安全查看ELF文件结构,避免直接执行程序。

命令示例​​:

objdump -p /path/to/program | grep NEEDED  # 提取依赖库名
readelf -d /path/to/program | grep NEEDED  # 显示NEEDED条目

在这里插入图片描述

3.2 ​​​​​​进程级依赖查看​

​​pldd​​:查看运行中进程加载的共享库
命令示例​​:sudo pldd <PID>

在这里插入图片描述

pmap​​:通过内存映射分析
命令示例​​:sudo pmap <PID> | grep .so
在这里插入图片描述

四、总结

  • Windows优先选Dependencies​​:图形化操作全面直观,适合调试缺失库问题。
  • ​​Linux首选ldd+objdump​​:ldd快速筛查,objdump安全验证。
  • 跨平台共性​​:依赖缺失时,Windows需补全DLL到系统路径或程序目录,Linux需安装.so或设置LD_LIBRARY_PATH
http://www.xdnf.cn/news/13349.html

相关文章:

  • PH热榜 | 2025-06-06
  • 高保真组件库:上传
  • “深时数字地球”新进展!科学智能助推地球科学研究范式变革
  • if综合演练——石头剪刀布
  • 命令行关闭Windows防火墙
  • 网络爬虫解析技术与实战代码详解
  • 可编程光子处理器新范式:《APL Photonics》封面级成果展示多功能集成突破
  • 报文口令重写功能分析(以某巢为例)
  • 一款 AI 驱动的 Wiki 知识库
  • python中的闭包
  • 安装和使用G4F(GPT4Free) 最新0.5.3.2 版本
  • 算法从0到1 Day 17 二叉树part 06
  • Linux 关键目录解析:底层机制与技术细节
  • 从制造出海到智造全球,艾芬达如何拥抱工业互联网革命?
  • Sass具有超能力的CSS预处理器
  • 【leetcode】136. 只出现一次的数字
  • RAG质量评估
  • Spacy词性对照表
  • 位运算总结
  • 博科Brocade FC交换机常用操作命令
  • 【Vue】scoped+组件通信+props校验
  • istio流量管理问题
  • 2.3 物理层设备
  • python load/loads dump/dumps的区别
  • Web 前端性能优化全景指南与实战策略
  • 何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
  • 2025-06-09 java面试总结
  • 新基建浪潮下:中国新能源汽车充电桩智慧化建设与管理实践
  • CC攻击与WAF的对抗战
  • 深入理解 Socket 的底层原理