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

先举个例子,最近的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之类的更无所谓了。
这里只是简单说一下,如果你要看图文的教程,可以看一下这个:

时间: 2024-08-01 23:34:00

关于脚本调用外部对像和类型库_vbs的相关文章

Lua脚本调用外部脚本_Lua

test.lua脚本定义main函数如下: function main(szName, num1, num2) print("main()", szName, num1, num2); local nRandMax = 10000; local nRand = math.random(nRandMax); print("nRand =", nRand) return 1; end 现在我想在test.lua脚本中调用另外一个test1.lua脚本文件中的GetRan

使用脚本调用系统的关机对话框实现代码_vbs

以前有介绍如何使用命令行调用系统的关机对话框: 具体方法:开始/运行: 复制代码 代码如下: rundll32.exe shell32.dll #60 但是,上述方法会存在一问题,XP下无法正常使用该方法进行关机(感谢网友沐烨 发现该问题).问题原因可能是:正常情况下,关机对话框是有explorer.exe调用,直接使用rundll32调用时无法触发相关命令. 既然使用explorer.exe调用可以,我们可以尝试使用脚本来实现.实现原理: 激活explorer.exe 按ALT+F4 编写VB

Lua 脚本怎么样调用外部脚本

在游戏脚本开发中,我们往往会发现脚本量非常大,而且我们经常会在一些核心脚本文件中定义常用的功能函数,但是Lua脚本没有提供include关键词,那又是怎样调用外部函数的呢?如何实现脚本的Include功能? test.lua脚本定义main函数如下: function main(szName, num1, num2) print("main()", szName, num1, num2); local nRandMax = 10000; local nRand = math.rando

调用外部as的action代码

版本:flashMX 应用语句:#include语句讲解:#include用法#include "filename.as"参数filename.as 要添加到"动作"面板的脚本的文件名:.as 是推荐使用的文件扩展名. 说明动作:包括当测试.发布或导出影片时参数中指定的文件的内容.当您进行测试.发布或导出时,#include 动作将被调用.当执行语法检查时,将检查 #include 动作.1,这个道理和制作网页时的调用外部css样式表差不多,今天我们来制作一个简单的

spring框架中Bean的基本属性及调用外部properties等配置文件的方法介绍

Bean的基本属性   id属性: Bean的唯一标识名.它必须是合法的XML ID,在配置文件中,不能有重复id的Bean,因为容器在获取Bean的实例时都用它来做唯一索引. name属性: 用来为id创建一个或多个别名.它可以是任意的字母符合.多个别名之间用逗号,封号或空格分开. class属性: 用来定义类的全限定名(包名+类名),class属性指明了Bean的来源. 下面是一个Bean的简单配置: <?xml version="1.0" encoding="UT

java调用外部webservice接口

问题描述 哪位高手能提供一个Java调用外部webservice的例子··? 解决方案 解决方案二:网上一搜一大把搜搜这个JAX-WS解决方案三:Publicvoidmain(Stringargs[]){Stringurl="*****";//webservice接口地址Serviceservice=newService();try{Callcall=(Call)service.createCall();call.setTargetEndpointAddress(newURL(url)

在Sql Server中调用外部EXE执行程序引发的问题

一.先开启xp_cmdshell 打开外围应用配置器-> 功能的外围应用配置器-> 实例名\Database Engine\xp_cmdshell-> 启用 二.解决方法 use master Exec xp_cmdshell 'mkdir d:\csj' --调用dos命令创建文件夹,(执行成功了!) Exec xp_cmdshell 'c:\calc.exe' --调用exe文件(但是执行exe文件,总一直显示"正在执行查询") 三.如果出现问题 可能会出现如上[

异常-c# 程序调用外部dll文件对采集模块进行读写,不定时出现以下错误

问题描述 c# 程序调用外部dll文件对采集模块进行读写,不定时出现以下错误 问题签名: 问题事件名称: BEX 应用程序名: NangGang11.20.vshost.exe 应用程序版本: 9.0.21022.8 应用程序时间戳: 47316898 故障模块名称: MSVCR80.dll 故障模块版本: 8.0.50727.6195 故障模块时间戳: 4dcddbf3 异常偏移: 00008aa0 异常代码: c000000d 异常数据: 00000000 解决方案 光给出一个异常信息,天知

Java中调用外部命令

Java中调用外部命令 public class ExecCommond{ public ExecCommond(){} /** * 执行一条命令 * @param execStr String 命令字符串 * @return String 执行命令错误时的信息. */ public static String exec(String execStr) { Runtime runtime = Runtime.getRuntime(); 取得当前运行期对象 String outInfo="&quo