Board logo

标题: [系统相关] [已解决]批处理如何获取DLL路径? [打印本页]

作者: luckboy45    时间: 2009-10-19 18:50     标题: [已解决]批处理如何获取DLL路径?

思路是先用TASKLIST /M列出所有进程调用的DLL,接着,用命令获取DLL的详细路径,并赋予给%%A

希望各位帮忙写出来,本人能力有限。

参见DOS联盟贴 http://www.cn-dos.net/forum/viewthread.php?tid=49030&fpage=1

希望能有P处理版本的出现。本人能力有限,期待各位帮忙!

[ 本帖最后由 luckboy45 于 2009-10-24 17:19 编辑 ]
作者: zqz0012005    时间: 2009-10-19 19:17

[原创][安全类脚本]VBS版进程放大镜(显示进程加载的所有模块(*.dll)详细信息)
http://www.bathome.net/viewthread.php?tid=339
作者: keen    时间: 2009-10-19 19:31     标题: 回复 1楼 的帖子

请参看此帖:
http://bbs.bathome.net/viewthread.php?tid=4290&highlight=wmic
作者: zqz0012005    时间: 2009-10-19 21:39

另一个相关应用:
杀死调用某个指定dll文件的所有进程
http://bbs.verybat.org/viewthread.php?tid=15362
作者: Taurus    时间: 2009-10-19 23:28

原帖由 luckboy45 于 2009-10-19 18:50 发表
思路是先用TASKLIST /M列出所有进程调用的DLL,接着,用命令获取DLL的详细路径,并赋予给%%A

希望各位帮忙写出来,本人能力有限。

参见DOS联盟贴 http://www.cn-dos.net/forum/viewthread.php?tid=49030&fpag ...

用wmic取commandline該可以
作者: foxJL    时间: 2009-10-20 20:29

本论坛早已经有纯批处理的了
请见 进程与DLL模块相互查询及管理批处理版 http://bbs.bathome.net/thread-530-1-7.html
作者: luckboy45    时间: 2009-10-21 18:34     标题: 回复 6楼 的帖子

兄弟的P处理写的不错,不过真遗憾,我的XP精简系统没有你所写的msinfo32 。。。。
start msinfo32 /categories +swenvloadedmodules /report particular.txt

我只希望能出现WMIC版本的P处理脚本,如果是调用外部工具PV的就免贴代码了,我有现成代码的。。。希望WMIC擅长的朋友能帮忙写出来,也好共同学习下!

还有一个问题,使用WMIC JOB 获得计划任务列表,或者用AT命令也可以,只要实现,列出所有的计划任务及该任务的程序路径,我曾试过用DIR那计划任务文件夹来获得计划任务,不过效果不理想,也希望各位看到后给一并解决掉,请务必帮忙,谢谢各位楼上的朋友热情帮忙!有电脑病毒问题请来我博客留言求救,我一定给予解决!
作者: keen    时间: 2009-10-21 19:06     标题: 回复 7楼 的帖子

你怎么不看3楼给出的链接?
作者: luckboy45    时间: 2009-10-21 19:13     标题: 回复 8楼 的帖子

3楼的我看过的,没有我想要的结果,且运行多无效果。。。。说无效查询
作者: foxJL    时间: 2009-10-21 21:52

尝试一下获得进程 explorer.exe 的DLL地址:
  1. wmic process where name="explorer.exe" assoc
复制代码

作者: luckboy45    时间: 2009-10-23 18:06     标题: 回复 10楼 的帖子

可能我的系统是GHOST版的关系,代码无任何效果可言。。。很感谢你的帮忙!

看样子这个帖子是比较有挑战难度的啊!~还是期待有能力的各位能帮忙写出来,

具体要求见7楼
作者: zqz0012005    时间: 2009-10-23 19:12     标题: 回复 11楼 的帖子

大家给的那些链接中的代码你都看过吗?还是看了之后不懂?随便修改一下就可以了。如果是不懂请直说,大家会直接给你写代码,而不用这么白费口舌。

另外,请不要在一个帖子中问多个主题不同的问题。问题如果有更新,请在顶楼编辑。
作者: luckboy45    时间: 2009-10-23 19:42

感谢各位的帮助!

[ 本帖最后由 luckboy45 于 2009-10-24 17:18 编辑 ]
作者: luckboy45    时间: 2024-11-1 15:17

将老帖重新顶起来,需要实现的效果是,过滤系统DLL,思路是获取所有进程和进程调用的所有DLL详细路径,接着过滤掉重复的DLL,然后用wmic datafile where "name='!a:\=\\!'" get manufacturer /value ,获得他们的签名,再过滤掉微软签名的DLL,从而达到最终过滤出可疑DLL的目的。

我是使用start msinfo32 /categories +swenvloadedmodules /report %temp%\a.txt来实现的,期待有不同方案。
作者: aloha20200628    时间: 2024-11-2 15:05

回复 14# luckboy45

用14楼要求的流程走一遍,只有获取*.dll全路径的可选方法不多,其中借用powershell一行流似乎至为简洁,但首启 ps 稍慢点,既然请ps进门了就顺手把 ‘去重’ 也给练了...
以下代码仅供参考
  1. @echo off &cd.>"0.0" &tasklist /m /fo csv|findstr /iv "映像名称 暂缺 tasklist.exe findstr.exe">0.1
  2. powershell "gc 0.1|%%{$_.split('.')[0].substring(1)}|select -unique|%%{gps $_|select -expandproperty modules|select filename|ac 0.0};gc 0.0|select -unique|sc 0.1"
  3. setlocal enabledelayedexpansion & (for /f "tokens=2 delims=}=" %%a in (0.1) do (
  4.    set "a=%%a" &for /f "tokens=2 delims==" %%v in (
  5.    'wmic datafile where "name='!a:\=\\!'" get manufacturer /value^|find "=" '
  6. ) do set "v=%%v" &if /i "!v!"=="!v:microsoft corporation=!" echo,[%%a] !v:~,-1!))>list.txt
  7. del/q "0.?"&endlocal&pause&exit/b
复制代码

作者: luckboy45    时间: 2024-11-2 19:25

本帖最后由 luckboy45 于 2024-11-2 21:32 编辑

回复 15# aloha20200628

感谢你的热心回复!

因为我电脑没有安装PS,且我有4台电脑均是XP系统,有专业版、家庭版、精简版,我写的程序需要适用于不同版本的系统,故我的操作思路是
@echo off
For /f "skip=1 delims=" %%a in ('WMIC Process WHERE "handle!=0 AND handle!=4" GET ExecutablePath^|more') do (
        For /f "tokens=2 delims=/" %%b in ('WMIC Path  Win32_PerfFormattedData_PerfProc_FullImage_Costly where "name like "%%~na%%"" GET Name') do echo %%b>>2.txt
)
goto :eof


2.txt   的内容生成如下:
C:\WINDOWS\system32\ntdll.dll  

C:\WINDOWS\system32\csrss.exe     

C:\WINDOWS\system32\ntdll.dll     

C:\WINDOWS\system32\CSRSRV.dll   

C:\WINDOWS\system32\basesrv.dll   

C:\WINDOWS\system32\winsrv.dll   

C:\WINDOWS\system32\GDI32.dll     

C:\WINDOWS\system32\KERNEL32.dll  

C:\WINDOWS\system32\USER32.dll   

C:\WINDOWS\system32\LPK.DLL      

C:\WINDOWS\system32\USP10.dll     

C:\WINDOWS\system32\ADVAPI32.dll  

C:\WINDOWS\system32\RPCRT4.dll   

C:\WINDOWS\system32\Secur32.dll   

C:\WINDOWS\system32\sxs.dll      

C:\WINDOWS\system32\winlogon.exe                                                                                   

C:\WINDOWS\system32\ntdll.dll                                                                                      

C:\WINDOWS\system32\kernel32.dll                                                                                   

C:\WINDOWS\system32\ADVAPI32.dll                                                                                   

C:\WINDOWS\system32\RPCRT4.dll                                                                                    

C:\WINDOWS\system32\Secur32.dll                                                                                    

C:\WINDOWS\system32\AUTHZ.dll                                                                                      

C:\WINDOWS\system32\msvcrt.dll                                                                                    

C:\WINDOWS\system32\CRYPT32.dll                                                                                    

C:\WINDOWS\system32\MSASN1.dll                                                                                    

C:\WINDOWS\system32\USER32.dll                                                                                    

C:\WINDOWS\system32\GDI32.dll                                                                                      

C:\WINDOWS\system32\NDdeApi.dll                                                                                    

C:\WINDOWS\system32\PROFMAP.dll                                                                                    

C:\WINDOWS\system32\NETAPI32.dll                                                                                   

C:\WINDOWS\system32\USERENV.dll                                                                                    

C:\WINDOWS\system32\PSAPI.DLL  

如何过滤重复行???代码最好不依赖外部工具,我尝试用下面代码过滤重复行,但效果不佳,请问怎么解决?

for /f "delims=" %%i in (2.txt) do (if not defined %%i set %%i=s & echo %%i>>b.txt)

接着再用wmic datafile where "name='!a:\=\\!'" get manufacturer /value
来判断过滤掉微软签名的,最终过滤出可疑DLL。
作者: Batcher    时间: 2024-11-2 21:46

回复 16# luckboy45


"效果不佳"的意思是代码得到了正确的结果但是速度太慢?还是代码得到了错误的结果?
作者: aloha20200628    时间: 2024-11-2 22:49

本帖最后由 aloha20200628 于 2024-11-3 11:13 编辑

回复 16# luckboy45

以下去重的代码针对16楼的示例文件 2.txt(数据行均为全路径文件名),第2行代码专为删除 2.txt 中的空行和行尾空格...
  1. @echo off &setlocal enabledelayedexpansion
  2. (for /f "tokens=* delims= " %%a in (2.txt) do echo,%%~dpnxa)>0.0
  3. (for /f "delims=" %%a in ('sort 0.0') do (
  4.    if /i "%%a" neq "!a!" if "!a!" neq "" echo,!a!)&set "b=!a!"&set "a=%%a")>2.new.txt
  5. if /i "!b!" neq "!a!" echo,!a!>>2.new.txt
  6. del/q "0.0"&endlocal&pause&exit/b
复制代码
以下代码未用 sort.exe 完成,但仍须第2行代码专为删除 2.txt 中的空行和行尾空格...
  1. @echo off &setlocal enabledelayedexpansion
  2. (for /f "tokens=* delims= " %%a in (2.txt) do echo,%%~dpnxa)>0.0
  3. (for /f "delims=" %%a in (0.0) do if not defined _%%a set "_%%a=1"&echo,%%a)>2.new.txt
  4. del/q "0.0"&endlocal&pause&exit/b
复制代码

作者: luckboy45    时间: 2024-11-3 08:16

回复 17# Batcher

我指的效果不佳是,因为我上面代码生成的2.TXT内每行末尾都有空格符号,而且有些下面有空行,内容如下,节选部分
  1. C:\WINDOWS\system32\cryptdll.dll                                                                                             
  2. C:\WINDOWS\system32\sensapi.dll                                                                                               
  3. C:\WINDOWS\system32\DNSAPI.dll                                                                                                
  4. C:\Program Files\Bonjour\mdnsNSP.dll                                                                                          
  5. C:\WINDOWS\system32\rasadhlp.dll                                                                                             
  6. C:\WINDOWS\system32\rsaenh.dll                                                                                                
  7. D:\常用工具\UnLocker185\UnlockerCOM.dll                                                                                       
  8. C:\WINDOWS\system32\syncui.dll                                                                                                
  9. C:\Program Files\Common Files\Autodesk Shared\dwf Common\DWFShellExtension.dll                                                
  10. C:\Program Files\Common Files\Autodesk Shared\dwf Common\MSVCP71.dll                                                         
  11. C:\Program Files\Common Files\Autodesk Shared\dwf Common\MSVCR71.dll                                                         
  12. C:\WINDOWS\system32\MSISIP.DLL                                                                                                
  13. C:\WINDOWS\system32\wshext.dll   
  14.                                                                                              
  15. C:\WINDOWS\system32\ntdll.dll  
  16. C:\WINDOWS\system32\csrss.exe     
  17. C:\WINDOWS\system32\ntdll.dll     
  18. C:\WINDOWS\system32\CSRSRV.dll   
  19. C:\WINDOWS\system32\basesrv.dll   
  20. C:\WINDOWS\system32\winsrv.dll   
  21. C:\WINDOWS\system32\GDI32.dll     
  22. C:\WINDOWS\system32\KERNEL32.dll  
  23. C:\WINDOWS\system32\USER32.dll   
  24. C:\WINDOWS\system32\LPK.DLL      
  25. C:\WINDOWS\system32\USP10.dll     
  26. C:\WINDOWS\system32\ADVAPI32.dll  
  27. C:\WINDOWS\system32\RPCRT4.dll   
  28. C:\WINDOWS\system32\Secur32.dll   
  29. C:\WINDOWS\system32\sxs.dll      
  30. C:\WINDOWS\system32\winlogon.exe                                                                                   
  31. C:\WINDOWS\system32\ntdll.dll                                                                                      
  32. C:\WINDOWS\system32\kernel32.dll                                                                                   
  33. C:\WINDOWS\system32\ADVAPI32.dll                                                                                   
  34. C:\WINDOWS\system32\RPCRT4.dll                                                                                    
  35. C:\WINDOWS\system32\Secur32.dll                                                                                    
  36. C:\WINDOWS\system32\AUTHZ.dll        
  37. C:\WINDOWS\system32\svchost.exe                                                                                    
  38. C:\WINDOWS\system32\ntdll.dll      
  39. C:\Documents and Settings\All Users\Application Data\Thunder Network\KanKan\Pusher\xappdrv.1.0.0.87.dll                                                                           
  40. C:\WINDOWS\system32\kernel32.dll                                                                                   
  41. C:\WINDOWS\system32\ADVAPI32.dll                                                                                   
复制代码
我需要过滤掉重复的行,因为那会影响到后续代码执行效率。
作者: luckboy45    时间: 2024-11-3 08:23

本帖最后由 luckboy45 于 2024-11-3 08:27 编辑

回复 18# aloha20200628

感谢你热情的帮助,测试了18楼代码,使用sort的那段,无法过滤干净,效果如下,很多重复的没有被过滤,大概是因为大小写的缘故。

C:\Documents
C:\Program
C:\WINDOWS\AppPatch\AcAdProc.dll
C:\WINDOWS\AppPatch\AcGenral.dll
C:\WINDOWS\explorer.exe
c:\WINDOWS\pchealth\helpctr\binaries\pchsvc.dll
C:\WINDOWS\system32\AcSignIcon.dll
c:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\activeds.dll
c:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\activeds.dll
c:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\activeds.dll
c:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\activeds.dll
c:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\activeds.dll
C:\WINDOWS\system32\actxprxy.dll
C:\WINDOWS\system32\adsldpc.dll
c:\WINDOWS\system32\adsldpc.dll
C:\WINDOWS\system32\adsldpc.dll
c:\WINDOWS\system32\adsldpc.dll


而使用第二段代码,过滤的是干净了,但把
C:\Program Files\Bonjour\mdnsNSP.dll

C:\Program Files\Common Files\Autodesk Shared\dwf Common\DWFShellExtension.dll                                                

C:\Program Files\Common Files\Autodesk Shared\dwf Common\MSVCP71.dll                                                         

C:\Program Files\Common Files\Autodesk Shared\dwf Common\MSVCR71.dll
C:\Documents and Settings\All Users\Application Data\Thunder Network\KanKan\Pusher\xappdrv.1.0.0.87.dll


经过过滤后变成了
C:\Program
C:\Documents

其实应该是过滤掉空行和行尾的空格即可,麻烦再帮完善下,谢谢!~
作者: aloha20200628    时间: 2024-11-3 10:30

回复 20# luckboy45

18代码已被订正,用19楼节选示例测试已通过...





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