标题: [系统相关] [已解决]批处理如何获取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
用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地址:
- 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进门了就顺手把 ‘去重’ 也给练了...
以下代码仅供参考
- @echo off &cd.>"0.0" &tasklist /m /fo csv|findstr /iv "映像名称 暂缺 tasklist.exe findstr.exe">0.1
- 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"
- setlocal enabledelayedexpansion & (for /f "tokens=2 delims=}=" %%a in (0.1) do (
- set "a=%%a" &for /f "tokens=2 delims==" %%v in (
- 'wmic datafile where "name='!a:\=\\!'" get manufacturer /value^|find "=" '
- ) do set "v=%%v" &if /i "!v!"=="!v:microsoft corporation=!" echo,[%%a] !v:~,-1!))>list.txt
- 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 中的空行和行尾空格...- @echo off &setlocal enabledelayedexpansion
- (for /f "tokens=* delims= " %%a in (2.txt) do echo,%%~dpnxa)>0.0
- (for /f "delims=" %%a in ('sort 0.0') do (
- if /i "%%a" neq "!a!" if "!a!" neq "" echo,!a!)&set "b=!a!"&set "a=%%a")>2.new.txt
- if /i "!b!" neq "!a!" echo,!a!>>2.new.txt
- del/q "0.0"&endlocal&pause&exit/b
复制代码
以下代码未用 sort.exe 完成,但仍须第2行代码专为删除 2.txt 中的空行和行尾空格...- @echo off &setlocal enabledelayedexpansion
- (for /f "tokens=* delims= " %%a in (2.txt) do echo,%%~dpnxa)>0.0
- (for /f "delims=" %%a in (0.0) do if not defined _%%a set "_%%a=1"&echo,%%a)>2.new.txt
- del/q "0.0"&endlocal&pause&exit/b
复制代码
作者: luckboy45 时间: 2024-11-3 08:16
回复 17# Batcher
我指的效果不佳是,因为我上面代码生成的2.TXT内每行末尾都有空格符号,而且有些下面有空行,内容如下,节选部分- C:\WINDOWS\system32\cryptdll.dll
-
- C:\WINDOWS\system32\sensapi.dll
-
- C:\WINDOWS\system32\DNSAPI.dll
-
- C:\Program Files\Bonjour\mdnsNSP.dll
-
- C:\WINDOWS\system32\rasadhlp.dll
-
- C:\WINDOWS\system32\rsaenh.dll
-
- D:\常用工具\UnLocker185\UnlockerCOM.dll
-
- C:\WINDOWS\system32\syncui.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:\WINDOWS\system32\MSISIP.DLL
-
- C:\WINDOWS\system32\wshext.dll
-
- 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\svchost.exe
-
- C:\WINDOWS\system32\ntdll.dll
-
- C:\Documents and Settings\All Users\Application Data\Thunder Network\KanKan\Pusher\xappdrv.1.0.0.87.dll
-
- C:\WINDOWS\system32\kernel32.dll
-
- 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://bathome.net./) |
Powered by Discuz! 7.2 |