关于脚本调用外部对像和类型库

所属分类: 脚本专栏 / vbs 阅读数: 935
收藏 0 赞 0 分享
先举个例子,最近的flash网马调用:
var Flashver = (new ActiveXObject("ShockwaveFlash.ShockwaveFlash.9")).GetVariable("$version").split(",");

这个ShockwaveFlash.ShockwaveFlash.9从何而来,用exescope打开flash9f.ocx选择typelib,即可看到ShockwaveFlash.ShockwaveFlash.9对像的函数,其中就有GetVariable。这就带来另一个问题,如何知是要打开的是flash9f.ocx呢?如果只是针对这个,可以用IE的组件管理器查看到。

那么我们调用其它的可不可以,像mstsc.exe,3389连接器的组件呢?注册表查找mstsc.exe,找到的HKEY_CLASSES_ROOT\CLSID\{3523c2fb-4031-44e4-9a3b-f1e94986ee7f}\InprocServer32就是C:\WINDOWS\system32\mstscax.dll,然后用exescope打开也可以看到这个组件的函数、属性、方法等。可以简单示例(md,只是能改mstsc.exe的各方面属性值,一直打不开连接界面,谁来改改?):

Sub ExecuteConnection(strServer, strUser, strPW)
' create the client
Dim objMsRdpClient
Set objMsRdpClient = CreateObject("MsTscAx.MsTscAx.3")
objMsRdpClient.Server = strServer
objMsRdpClient.UserName =strUser
objMsRdpClient.FullScreen = false
objMsRdpClient.AdvancedSettings2.RedirectDrives = False
objMsRdpClient.AdvancedSettings2.RedirectPrinters = False
objMsRdpClient.AdvancedSettings2.RedirectPorts = False
objMsRdpClient.AdvancedSettings2.RedirectSmartCards = False

objMsRdpClient.AdvancedSettings2.ClearTextPassword = strPW
objMsRdpClient.StartConnected = True
WScript.echo "Before connecting"

wscript.echo objMsRdpClient.version
dim intResult
intResult = objMsRdpClient.Connect
WScript.echo "After connecting Result: " & intResult

End Sub

调用组件,不仅可以使用注册表中找到的HKEY_CLASSES_ROOT\CLSID\{3523c2fb-4031-44e4-9a3b-f1e94986ee7f}\ProgID(上边的例子就是CreateObject("MsTscAx.MsTscAx.3")
),也可以用HKEY_CLASSES_ROOT\CLSID,这也就是为什么我们在asp木马中也可以用到的classid,像海阳顶端2006+源码中的:

<object runat="server" id = "ws" scope = "page" classid = "clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8"></object>
<object runat="server" id = "fso" scope = "page" classid = "clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>
<object runat="server" id = "ws" scope = "page" classid = "clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B"></object>
<object runat="server" id = "sa" scope = "page" classid = "clsid:13709620-C279-11CE-A49E-444553540000"></object>

当然其它别的网马,基本调用的都是CLSID了,你可以随便找一些网马来看。

不过在vbs中好像不可以直接调用classid,放在wsf文件中就可以,当然是html之类的更无所谓了。
这里只是简单说一下,如果你要看图文的教程,可以看一下这个:
更多精彩内容其他人还在看

运行vbs脚本报错无效字符、中文乱码的解决方法(编码问题)

今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下
收藏 0 赞 0 分享

VBS打开当前脚本所在文件夹

有时候我们需要获取当前vbs脚本所在的文件夹,或者运行当前脚本文件夹中的文件那么就需要参考下面的代码了
收藏 0 赞 0 分享

vbs 读写注册表之系统启动项添加与删除

这篇文章主要介绍了vbs 读写注册表之系统启动项添加值,需要的朋友可以参考下
收藏 0 赞 0 分享

拖拽文件显示文件路径的vbs代码

这篇文章主要介绍了拖拽文件显示文件路径的vbs代码,需要的朋友可以参考下
收藏 0 赞 0 分享

VBS遍历Excel工作表的实现代码

这篇文章主要介绍了VBS遍历Excel工作表的实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

使用VBS浏览本地文件的3种方式,获取完整路径

这篇文章主要介绍了使用VBS浏览本地文件的3种方式,获取完整路径,需要的朋友可以参考下
收藏 0 赞 0 分享

VBS进程判断代码

这篇文章主要介绍了VBS进程判断代码,用来检测windows的某个进程是否正常运行,之前脚本之家分享过bat中判断进程的代码
收藏 0 赞 0 分享

VBS遍历文件或文件夹路径输入文件的所有绝对路径(附源码)

这篇文章主要介绍了VBS遍历文件或文件夹路径输入文件的所有绝对路径的代码,需要的朋友可以参考下
收藏 0 赞 0 分享

ActiveX部件不能创建对象:dm.dmsoft代码:800A01AD

vbs调用插件报:ActiveX部件不能创建对象,代码:800A01AD,一般是因为病毒导致dll文件丢失或者64系统问题导致,需要的朋友可以参考下
收藏 0 赞 0 分享

vbs ping实现的两种方式

这篇文章主要介绍了vbs ping实现的两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享
查看更多