Board logo

标题: [文件操作] ldd - 查看 exe 所依赖的 dll [打印本页]

作者: tmplinshi    时间: 2012-10-30 08:48     标题: ldd - 查看 exe 所依赖的 dll

C:\>ldd
ldd for Windows, Version 1.0
usage:
ldd FILE...

C:\>


示例:
C:>ldd wget.exe curl.exe FLVExtractCL.exe
wget.exe
        ADVAPI32.dll => C:\WINDOWS\system32\ADVAPI32.dll
        GDI32.dll => C:\WINDOWS\system32\GDI32.dll
        KERNEL32.DLL => C:\WINDOWS\system32\kernel32.dll
        USER32.dll => C:\WINDOWS\system32\USER32.dll
        WSOCK32.dll => C:\WINDOWS\system32\WSOCK32.dll
curl.exe
        KERNEL32.dll => C:\WINDOWS\system32\kernel32.dll
        LIBEAY32.dll => D:\wchx\command line tools\LIBEAY32.dll
        SSLEAY32.dll => D:\wchx\command line tools\SSLEAY32.dll
        WS2_32.dll => C:\WINDOWS\system32\WS2_32.dll
        msvcrt.dll => C:\WINDOWS\system32\msvcrt.dll
        wldap32.dll => C:\WINDOWS\system32\wldap32.dll
FLVExtractCL.exe
        mscoree.dll => C:\WINDOWS\system32\mscoree.dll

C:\>


mscoree.dll 表示程序需要 .NET Framework。

--------------------------------------------
官网: https://code.google.com/p/win-ldd/
--------------------------------------------

注:11 楼有单文件版

MSVCP100.dll MSVCR100.dll.7z
http://pan.baidu.com/share/link?shareid=347430309&uk=1124163200

http://bcn.bathome.net/s/tool/index.html?key=ldd
作者: CrLf    时间: 2012-10-30 15:45

貌似需要 C++2010 支持
作者: tmplinshi    时间: 2012-10-30 16:02

本帖最后由 tmplinshi 于 2012-10-31 00:04 编辑

回复 2# CrLf

是的。

C:\>ldd ldd.exe
ldd.exe
        KERNEL32.dll => C:\WINDOWS\system32\kernel32.dll
        MSVCP100.dll => C:\WINDOWS\system32\MSVCP100.dll
        MSVCR100.dll => C:\WINDOWS\system32\MSVCR100.dll

C:\>


我把这两个 dll 传上来吧。
作者: wc726842270    时间: 2012-10-30 16:10

作为CUI的检测工具应该说很不错。
作者: kidzgy    时间: 2012-10-30 16:35

dependency walker 可以胜任这个
作者: lllsoslll    时间: 2012-10-30 19:35

tasklist /m 可以间接实现,论坛有这个代码。。。
作者: CrLf    时间: 2012-10-30 19:47

回复 6# lllsoslll


    这个好像是不用启动进程的
作者: tmplinshi    时间: 2012-10-30 22:36

tasklist /m 可以间接实现,论坛有这个代码。。。
lllsoslll 发表于 2012-10-30 19:35



tasklist /m 只能查看正在运行的程序吧。
作者: wc726842270    时间: 2012-10-31 03:53

本帖最后由 wc726842270 于 2012-10-31 03:55 编辑

有个小问题,它是不是只是显示现存的文件?还是只会显示所需的文件,
当然这个都可以弥补,不过有些麻烦
作者: tmplinshi    时间: 2012-10-31 07:41

本帖最后由 tmplinshi 于 2012-10-31 07:43 编辑
有个小问题,它是不是只是显示现存的文件?还是只会显示所需的文件,
当然这个都可以弥补,不过有些麻烦
wc726842270 发表于 2012-10-31 03:53



    是显示所需的文件。例如,我把 iconv.exe 依赖的 dll 删除后:
C:\>ldd iconv.exe
iconv.exe
        KERNEL32.dll => C:\WINDOWS\system32\kernel32.dll
        libiconv2.dll =>
        libintl3.dll =>
        msvcrt.dll => C:\WINDOWS\system32\msvcrt.dll

C:\>

作者: Demon    时间: 2012-10-31 21:38

受不了,一个小工具还要两个DLL才能用,自己编译了一个单文件版。

http://bcn.bathome.net/s/tool/index.html?key=ldd
作者: tmplinshi    时间: 2012-11-1 08:36

回复 11# Demon


    谢谢!
作者: yu2n    时间: 2012-11-4 17:44

本帖最后由 yu2n 于 2012-11-4 17:57 编辑

写了一个匹配的批处理,便于将找到的.dll文件复制出来。(支持直接拖放与手动输入单个文件)
  1. cls&@echo off&title ldd for Windows, Version 1.0
  2. If '%1' EQU '' (
  3.   set /p p=Drag and drop an .exe program files here:
  4. ) Else (
  5.   set p=%1
  6. )
  7. If '%2' NEQ '' Exit
  8. If Not Exist "%~dp0ldd.exe" Exit
  9. FOR /F "tokens=1,* delims=^?^?" %%i in ('echo _??%p%') do (
  10.    set creat_folder=%%~nj
  11.    If /i "%%~xj" NEQ ".exe" Exit
  12.    If Not Exist "%~dp0%%~nj" mkdir "%~dp0%%~nj"
  13. )
  14. FOR /F "skip=1 tokens=1,* delims=^=^> " %%i in ('cls^&"%~dp0ldd.exe" %p%') do (
  15.    If Exist "%%j" (
  16.       set/a a=a+1
  17.       echo ^-^> Copy %%j
  18.       copy "%%j" "%~dp0%creat_folder%">nul 2>nul
  19.    ) Else (
  20.       echo [x]File "%%j" Not Found !
  21.    )
  22. )
  23. echo Done! The %a% dll files successfully copied
  24. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2