这个组件在xp、2003上默认都可以用的,调用后可以听到电脑上一个国外老男人在说话。好比这样一句代码:●CreateObject("SAPI.SpVoice").Speak "I LOVE YOU"●,保存成vbs后缀后双击就会听到英语的我爱你了。但随之而来我们讲到另一个问题,不保存成vbs或vbe后缀如何运行vbs代码。
一、用mshta来运行vbs hta这种类型的文件运行后也是系统权限,其调用宿主就是mshta.exe。我们在cmd下运行这样一行代码:●mshta vbscript:createobject("sapi.spvoice").speak("I LOVE YOU.")(window.close)●,也会听到同样的发音。这行代码的意思类似是临时生成一个hta文件,然后运行里边的vbs代码,再调用window.close将运行窗口关掉。整个运行过程是看不到hta窗口的。这种运行方式你会想到什么?最少我是想到了两个。一个是批处理的隐藏运行,基本代码如下: ★ @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit :begin rem 下边开始写批处代码了 net user lcx 12345 /add ★ 这个代码只能双击运行,运行过程中你看不到具体的批处理运行流程的。第二个我想的是注射过程中的用途。网上有篇流传很广的文章《mssql注射中多次调用参数导致多次echo的解决方法》,中心思想是将vbs语句用冒号连接起来然后用echo命令一次写入到被注入的肉鸡上,然后再调用这个vbs来下载文件。如果调用mshta执行的话,下载、执行一次就ok了。不过在命令行下用mshta后边直接跟vbs代码有个难处理的问题是空格,不过这个好解决用execute将vbs代码放在括号里就ok了,这个读者可以亲自去试一下了,相信我不难的。