VBScript之通过对比注册表查找隐藏的服务

效果图:

代码(checksvr.vbs):

代码如下:

'On Error Resume Next

Const HKEY_LOCAL_MACHINE = &H80000002

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")

strKeyPath = "SYSTEM\CurrentControlSet\Services"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

Wscript.Echo "Checking, please wait ..."
Wscript.Echo ""

For Each subkey In arrSubKeys
 oReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath & "\\" & subkey, "ObjectName", strValue

If Not (strValue = "") Then
  '判断服务, 利用数组来比较不知道会不会快些?
  If Not (CheckSvr(subkey)) Then
   Wscript.Echo subkey & FormatOutTab(subkey) & strValue & FormatOutTab(strValue) & "[ Hidden ]"
  Else 
   Wscript.Echo subkey & FormatOutTab(subkey) & strValue & FormatOutTab(strValue) & "[   OK   ]"
  End If

End If
Next
Wscript.Echo ""
Wscript.Echo "All done."
Wscript.Quit (0)

Function CheckSvr(strName)
 Set oWMI = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
 Set cService = oWMI.ExecQuery("Select * from Win32_Service WHERE Name='" & strName & "'")
 If (cService.count <> 0) Then
  CheckSvr = True
 Else
  CheckSvr = False
 End If
End Function

Function FormatOutTab(strName)
 strLen = Len(strName)
 Select Case True
  Case strLen < 8
   FormatOutTab =  vbTab & vbTab & vbTab & vbTab & vbTab

Case strLen < 16
   FormatOutTab =  vbTab & vbTab & vbTab & vbTab

Case strLen < 24
   FormatOutTab =  vbTab & vbTab & vbTab

Case strLen < 32
   FormatOutTab =  vbTab & vbTab

Case strLen < 40
   FormatOutTab =  vbTab

Case Else
   FormatOutTab =  vbTab
  End Select
End Function

利用字典,速度要快很多:

代码如下:

Dim oDic, oReg, oWmi, arrServices
Const HKEY_LOCAL_MACHINE = &H80000002

Wscript.Echo "[*] Checking, please wait ..."
Wscript.Echo ""

Set oDic = CreateObject("Scripting.Dictionary")

Set oWmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set arrServices = oWmi.ExecQuery("Select * from Win32_Service")
For Each strService In arrServices
 oDic.Add strService.Name, strService.Name
Next

Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
strKeyPath = "SYSTEM\CurrentControlSet\Services"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

For Each subkey In arrSubKeys
 oReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath & "\\" & subkey, "ObjectName", strValue
 If Not (strValue = "") Then
  If oDic.Exists(subkey) Then
   Wscript.Echo subkey & FormatOutTab(subkey) & strValue & FormatOutTab(strValue) & "[   OK   ]"
  Else 
   Wscript.Echo subkey & FormatOutTab(subkey) & strValue & FormatOutTab(strValue) & "[ Hidden ]"
  End If
 End If
Next

oDic.RemoveAll

Wscript.Echo ""
Wscript.Echo "[*] All done."
Wscript.Quit (0)

Function FormatOutTab(strName)
 strLen = Len(strName)
 Select Case True
  Case strLen < 8
   FormatOutTab =  vbTab & vbTab & vbTab & vbTab

Case strLen < 16
   FormatOutTab =  vbTab & vbTab & vbTab

Case strLen < 24
   FormatOutTab =  vbTab & vbTab

Case strLen < 32
   FormatOutTab =  vbTab

Case Else
   FormatOutTab =  vbTab
  End Select
End Function

来自: enun.net

(0)

相关推荐

  • VBScript之通过对比注册表查找隐藏的服务

    效果图: 代码(checksvr.vbs): 复制代码 代码如下: 'On Error Resume Next Const HKEY_LOCAL_MACHINE = &H80000002 Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv") strKeyPath = "SYSTEM\CurrentControlSet\Services&qu

  • 用VBScript实现对Windows注册表的修改详解

    大名鼎鼎的WSH听说过吗? 它就是Windows Script Host的缩写形式,WSH是Windows平台的脚本指令,它的功能十分强大,并且它还是利用语法结构简单.易学易用且功能强大的JScript和VBScript脚本语言,来实现其卓越的功能的,除了本文介绍的修改注册表之外,它还可以访问Excel文件,也能与网络沟通,当然它最大的优势莫过于它能与操作系统沟通,而修改注册表只是它与操作系统沟通的冰山一角.正是它有如此诸多的优点与实用性,正倍受很多Windows用户的青睐,本文就为大家介绍一二

  • XP系统优化和安全限制 IE相关修改方法与注册表文件第1/2页

    彻底删除 Internet Explorer  工具列表上其它图标 在[开始]-->[运行]-->键入[regedit]选[HKEY_LOCAL_MACHINE]-->[SOFTWARE]-->[Microsoft]-->[InternetExplorer]-->[Extensions],检查各数字文件夹的内容将不需要的整个文件夹删除便可. 禁止IE界面相关按钮禁用"文件"按钮  隐藏和禁用 Internet Explorer 工具栏上特定的按钮. 

  • 提高系统安全的注册表修改秘籍

    现在的电脑给人有一种弱不禁风的感觉,不是今天受到这个病毒突袭,就是明天受到那个黑客的攻击,出错.死机变得象家常便饭一样了.为了让计算机"坚强"起来, 不少人找来了杀毒软件.防火墙,希望通过这些软件来增强计算机的免役力.的确,这些软件在一定程度上增强了计算机抵抗外来攻击的能力,但对于计算机内部系统存在的漏洞就无能为力了.本文的目的主要是向大家介绍一下通过修改注册表的方法,来提高系统的安全. 一.隐藏一个服务器 为了保证局域网中服务器上的资源不受其他人的非法访问和攻击,我们从安全的角度考虑

  • 修改注册表权限加强对木马、病毒的防范

    一.问题的提出 大部分的木马及部分的病毒是通过注册表的自启动项或文件关联或通过系统服务实现自启动的,详见<Windows的自启动方式>,那是否有一种方法可以防止木马或病毒修改注册表项及增加服务呢? 二.问题的解决 windows2000/xp/2003的注册表是可以设置权限的,只是我们比较少用到.设置以下注册表键的权限: 1.设置注册表自启动项为everyone只读(Run.RunOnce.RunService),防止木马.病毒通过自启动项目启动 2.设置.txt..com..exe..inf

  • vbscript Registry 注册表操作实现代码(读写删除)

    VBScript Code: 复制代码 代码如下: ' Create a WSH Shell object: Set wshShell = CreateObject( "WScript.Shell" ) ' ' Create a new key: wshShell.RegWrite "HKCU\TestKey\", "" ' Create a new DWORD value: wshShell.RegWrite "HKCU\TestKe

  • 用vbscript得到注册表中是否存在某个值

    问: 嗨,Scripting Guy!如何知道远程计算机上的注册表中是否存在某个值? -- AL 答: 嗨,AL.完全披露时间:尽管我们叫做 Scripting Guy,但这并不表示我们了解有关脚本编写的一切事情.这个问题就是一个很好的例证.第一次看到这个问题时,我们认为:"好吧,WMI 中显然有某种 If Exists 方法可以实现这个目的."但当我们发现其中并没有这样的方法时,知道我们有多吃惊么?事实上,我们找不到任何可以检查注册表中是否存在某个值的方法.我们甚至--惭愧!--去查

  • Vbscript写注册表的方法

    分类:程序 早些年用过DOS系统的用户都知道,MS-DOS操作系统允许普通用户编写批处理文件来实现简单的编程.它有效地简化了我们的工作,带给我们许多方便.当时甚至出现了一些专门编写批处理文件的程序员呢. 事实上,操作系统除了提供易于操作的使用界面外,还应当有一套内建的Script(脚本)语言才算完整.从某种角度来说,批处理文件可以说就是MS-DOS下的脚本语言.到了Windows时代,虽然Windows系统仍然保留了批处理,但是批处理在Windows中就显得功能过于简单,无法满足用户的需要了--

  • PowerShell小技巧之查找获取注册表路径

    在先前的技巧中我们说明如何将一个PS内置的路径格式转化成一个实际路径.这里介绍了一个例子.这段代码递归从HKEY_CURRENT_USER获取所有包含"powershell"词缀的键(简单的替换查询词缀将能获得你想要查询的任何东西) 复制代码 代码如下: Get-ChildItem -Path HKCU:\ -Include *PowerShell* -Recurse -ErrorAction SilentlyContinue|Select-Object -Property *Path

  • 常见的注册表修改大全第1/3页

    <开始菜单及相关设置>  [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]  "NoRecentDocsMenu"=dword:00000001(隐藏开始->文档菜单)  "NoRecentDocsHistory"=dword:00000001(禁止将打开的文档存入历史记录)  "ClearRecentDocsOnExit&quo

随机推荐