Board logo

标题: [原创][安全类脚本]VBS获取系统驱动信息 [打印本页]

作者: somebody    时间: 2007-12-10 23:54     标题: [原创][安全类脚本]VBS获取系统驱动信息

先抱怨一下,论坛的所谓代码模式和所见即所得模式真不好搞.....明明结构很美观的代码贴到这里一看就跟垃圾一样难看,我不再重复编辑了,反正在notepad++里浏览我的代码是很美观的。
先推荐大家用一用这款软件:notepad++
最新版:notepad++ v4.6
下载地址:http://nchc.dl.sourceforge.net/sourceforge/notepad-plus/npp.4.6.Installer.exe
安装好后用notepad++ 打开我的浏览我的代码行了..
----------------------------------------------------------------------------------------------------------

前言:
        中过毒的朋友应该中过驱动级别的病毒。
        病毒作者往往会向 %systemroot%\system32\drivers 目录里添加驱动以达到免杀目的。
----------------------------------------------------------------------------

脚本主功能:
            获取系统驱动部分信息以判断其安全性:
                                                1. 通过判断驱动文件制造商
                                                2. 通过判断驱动文件创建时间
两者结合效果最佳.

Tips:
       1. 保存代码为VBS文件,双击即可使用
       2. 建议执行脚本前关闭所有IE浏览器,因为执行脚本过程若你的IE浏览器是打开的,这时会弹一个空白页 about:blank
       3. 执行完后,鼠标右键单击CMD窗口并且按回车键即可重复执行脚本
       4. 脚本会还原对系统的任何改动,可以放心使用
       5. 代码已经测试
       6. 申请月精华
下载地址:http://kimhoo.lin.googlepages.com/SystemDriver.vbs
  1. '  code by somebody
  2. '  LastModified: 2007-12-9  19:15
  3. '  测试环境: Windows Script Host Version 5.6 & CMD@XP(sp2)
  4. const HKEY_CURRENT_USER = &H80000001
  5. Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
  6. strKeyPath = "Console\%SystemRoot%_system32_cmd.exe"
  7. oReg.CreateKey HKEY_CURRENT_USER,strKeyPath
  8. strValueName1 = "CodePage"
  9. dwValue1 = 936
  10. strValueName2 = "ScreenBufferSize"
  11. dwValue2 = 98304160
  12. strValueName3 = "WindowSize"
  13. dwValue3 = 2818173
  14. strValueName4 = "HistoryNoDup"
  15. dwValue4 = 0
  16. strValueName5 = "FontFamily"
  17. dwValue5 = 48
  18. strValueName6 = "QuickEdit"
  19. dwValue6 = 2048
  20. strValueName7 = "FontSize"
  21. dwValue7 = 1048584
  22. strValueName8 = "FontWeight"
  23. dwValue8 = 400
  24. oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName1,dwValue1
  25. oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName2,dwValue2
  26. oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName3,dwValue3
  27. oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName4,dwValue4
  28. oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName5,dwValue5
  29. oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName6,dwValue6
  30. oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName7,dwValue7
  31. oReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName8,dwValue8
  32. Dim objWSH, FinalVBSPath
  33. Set objWSH = WScript.CreateObject("WScript.Shell")
  34. If (LCase(Right(WScript.Fullname,11))="wscript.exe") Then
  35.     FinalVBSPath = "'" & WScript.ScriptFullName & "'"
  36.     objWSH.Run("cmd.exe /k cscript //nologo " &Replace(FinalVBSPath,"'",""""))
  37.     Wscript.Quit
  38. End If
  39. oReg.DeleteKey HKEY_CURRENT_USER, strKeyPath
  40. Set oReg = nothing
  41. Wscript.Sleep 1000
  42. Mystr = Array(115,111,109,101,98,111,100,121)
  43. for i=0 to Ubound(Mystr)
  44.     author=author&chr(Mystr(i))
  45. next
  46. Wscript.Echo vbCr
  47. Wscript.echo "  code by " & author
  48. Wscript.echo "  LastModified: 2007-12-9  18:50"
  49. Wscript.Sleep 2000
  50. Wscript.Echo vbCr
  51. str1 = "                               ╭━━╮╭━━╮╭╭━╮╭━━╮╭━━╮╭━━╮┏━━╮╭╮╭╮"
  52. str4 = "                               ╰━╮┃┃┃┃┃┃╭╮┃┃╭━╯┃╭╮╮┃┃┃┃┃┃┃┃?┃┃?"
  53. str6 = "                               ╰━━╯╰━━╯╰╯╰╯╰━━╯╰━━╯╰━━╯┗━━╯?╰╯?"
  54. str3 = "                               ┃╰━╮┃┃┃┃┃┃┃┃┃╰━╮┃╰╯╯┃┃┃┃┃┃┃┃╰╮╭╯"
  55. str5 = "                               ╭━╯┃┃╰╯┃┃┃┃┃┃╰━╮┃╰╯┃┃╰╯┃┃╰╯┃?┃┃?"
  56. str2 = "                               ┃╭━╯┃╭╮┃┃??┃┃╭━╯┃╭╮┃┃╭╮┃┃╭╮┃┃╰╯┃"
  57. myArray = Array(str1,str2,str3,str4,str5,str6)
  58. For each str in myArray
  59.     Wscript.Echo str
  60. Next
  61. Wscript.Sleep 2000
  62. Wscript.Echo
  63. Dim DriverState, DriverStartMode
  64. DriverState = InPutBox("根据系统驱动状态进行筛选:"&chr(13)&chr(10)&chr(10)&"1. Running"&chr(13)&chr(10)&chr(10)&"2. Stopped","请输入筛选条件序号","请输入数字1或2")
  65. If DriverState = "1" Then
  66.     DriverState = "Running"
  67. ElseIf DriverState = "2" Then
  68.     DriverState = "Stopped"
  69. Else
  70.     Msgbox "       输入超出范围!"&chr(13)&chr(10)&chr(10)& "将以默认值:Running 传递参数!"
  71.         DriverState = "Running"
  72. End If
  73.    
  74. DriverStartMode = InPutBox("根据系统驱动启动模式进行筛选:"&chr(13)&chr(10)&chr(10)&"1. Auto"&chr(13)&chr(10)&chr(10)&"2. System"&chr(13)&chr(10)&chr(10)&"3. Boot"&chr(13)&chr(10)&chr(10)&"4. Manual"&chr(13)&chr(10)&chr(10)&"5. Disabled","请输入筛选条件序号","请输入数字1-5其中一个")
  75. If DriverStartMode = "1" Then
  76.     DriverStartMode = "Auto"
  77. ElseIf DriverStartMode = "2" Then
  78.     DriverStartMode = "System"
  79. ElseIf DriverStartMode = "3" Then
  80.     DriverStartMode = "Boot"
  81. ElseIf DriverStartMode = "4" Then
  82.     DriverStartMode = "Manual"
  83. ElseIf DriverStartMode = "5" Then
  84.     DriverStartMode = "Disabled"        
  85. Else
  86.     Msgbox "      输入超出范围!"&chr(13)&chr(10)&chr(10)& "将以默认值:Auto 传递参数!"
  87.         DriverStartMode = "Auto"
  88. End If        
  89. colName_1 = "驱动文件名称        "
  90. colName_2 = "启动模式  "
  91. colName_3 = "驱动状态  "
  92. colName_4 = "驱动文件路径                                    "
  93. colName_5 = "驱动创建时间            "
  94. colName_6 = "驱动文件制造商"
  95. Wscript.Echo vbCrLf & colName_1 & colName_2 & colName_3 & colName_4 & colName_5 & colName_6
  96. Wscript.Echo "---------------------------------------------------------------------------------------------------------------------------------------"
  97. Set OBJWMI = GetObject("winmgmts:\\.\root\CIMV2")
  98. Set colItems = OBJWMI.ExecQuery("Select * From Win32_SystemDriver Where State='" & DriverState & "' and StartMode='" & DriverStartMode & "'")
  99.     For Each driver In colItems
  100.             If not IsNull(driver.PathName) Then
  101.                 WMIPathMode = Replace(Replace(driver.PathName,"\??\",""),"\","\\")
  102.                 End If
  103.         Set colManufacturer = OBJWMI.ExecQuery("Select * From CIM_DataFile Where Name='" & WMIPathMode & "'")
  104.             For Each OBJManufacturer In colManufacturer
  105.                                 finalName = driver.Name & "                    "
  106.                                 finalStartMode = driver.StartMode & "          "
  107.                                 finalState = driver.State & "          "
  108.                                 finalPath = LCase(OBJManufacturer.Name) & "          "
  109.                 finalManufacturer = OBJManufacturer.Manufacturer
  110.                     Set FSO = CreateObject("Scripting.FileSystemObject").GetFile(OBJManufacturer.Name)                                
  111.                 Wscript.Echo Mid(finalName,1,20) & Mid(finalStartMode,1,10) & Mid(finalState,1,10) & Mid(finalPath,1,45) &vbTab& FSO.DateCreated &vbTab& finalManufacturer
  112.                         Next
  113.         Next
  114. MyVBSPath = "'" & WScript.ScriptFullName & "'"        
  115. Myclipboard = "cscript //nologo " & Replace(MyVBSPath,"'","""")
  116. Set objIE = CreateObject("InternetExplorer.Application")  
  117. objIE.Navigate("about:blank")  
  118. objIE.document.parentwindow.clipboardData.SetData "text", Myclipboard
复制代码

[ 本帖最后由 somebody 于 2007-12-11 16:14 编辑 ]
作者: 随风    时间: 2007-12-11 00:08

虽然不懂vbs但我知道你为这个作品所花的精力,和代码功能.不错.
加分
期待更好的作品.
作者: somebody    时间: 2007-12-11 00:38

哈哈,普通人不敢用一用啊,用过后才知道那才叫好东西.................................
作者: 随风    时间: 2007-12-11 01:52

我用了啊!
不过还是不明白是什么东西
作者: youxi01    时间: 2007-12-11 07:44

原帖由 somebody 于 2007-12-10 23:54 发表
先抱怨一下,论坛的所谓代码模式和所见即所得模式真不好搞.....明明结构很美观的代码贴到这里一看就跟垃圾一样难看,我不再重复编辑了,反正在notepad++里浏览我的代码是很美观的。
先推荐大家用一用这款软件:note ...


想法、代码都非常不错,不过提点建议:
在等待人家输入的时候(就是那两个inputbox),个人觉得,人家输入错误,不应该以默认值进入到下步,而应该停留在当前位置。
作者: somebody    时间: 2007-12-11 15:56

回复5楼:
我已经够仁慈了.................
连数字都会输错,并且输错了还去按回车的人,这世界上只有那种故意不给我面子的人才会做得出来.......
inputbox 那里我已经提示得够清楚了,而且我提供了重复执行脚本的功能,选择错了还可以再来一次,并不是我做得不够严密,只是故意捣乱的人我是不会管他的

回复4楼:
         脚本功能我都写在上面了吖......




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