| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何在 HTA 内对脚本进行编码?
如何在 HTA 内对脚本进行编码?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 11:15:01
问:

您好,脚本专家!如何在 HTA 内对脚本进行编码?

-- LL

答:

您好,LL。您知道,刚看到这个问题时,我们就在想:“这有什么大不了的?难道不能像在 HTML 文件中那样在 HTML 应用程序 (HTA) 中对脚本进行编码吗?”令我们大为吃惊的是,好像不能在 HTA 中对脚本进行编码;每次试图这样做时,都会返回像下面这样的错误消息:

Scripting encoder object ("Scripting.Encoder") failed on C:/Scripts/test.hta

老实说,我们从未找到在 HTA 中对脚本进行编码的方法。不过没关系,因为我们的确想出了一个解决此问题的鬼点子。我们一会儿就为您展示。

但是,在做之前,我们需要花点儿时间解释对脚本编码是什么意思。Microsoft 有一个实用程序,名为 Script Encoder(脚本编码器),可将您的脚本代码“打乱”。例如,假设您有一个类似下面的脚本:

strComputer = "."



Set objWMIService = GetObject("winmgmts://" & strComputer &  "/root/cimv2")



   Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")



For Each objOperatingSystem in colOperatingSystems

    Msgbox objOperatingSystem.Caption & " " &   objOperatingSystem.Version

Next

假设出于某些原因,您希望人们无法阅读脚本代码。这是个问题:毕竟,任何人只要有权运行脚本,就同样有权在记事本中打开此脚本,并且想看什么就看什么。不过,同一个脚本经“脚本编码器”处理后,会成为下面显示的样子:

#@~^8AEAAA==@#@&@#@&@#@&,PP,?!8PV+OrU.n.kkW@#@&,PP,~~PkYMZG:2;D+.P{~JcJ@#@&,PP~~,P~P,~U+O,W(Ltq

UnD7k^+,'~!Yr(%+1Y`rArxsosYd)wwrP'PkOD;Wh2!Y+.~LP~J'.KWO'mb:/yJ*@#@&@#@&~P,P~~,PP,~?YP1Gsra+MlOkULUXdYh/,'~G(

L/(U+./b^R3X+1pEDH~{@#@&~P,P~~,PP,~P,PPvEj+^+1Y~e~W

MWhPqrx2 m6a+DCObxL?HdD+hr#@#@&@#@&P,~P,P~P,P~oKDPACm4PW(%6wDmYr

xLjH/O+s~kP^G^rwn.mYrxTjH/O:k@#@&,P,~P,P~P,P~~,PHkL4K6PK8%ra+M

lOkULUXdYhR;l2ObWx~',J~J,',{@#@&P,PP,P,~P,P~P,P~~,PW(%ra+DmOrxT?H/O+h 

j+./bGx@#@&~~,PP~~,P~PgnXY@#@&P,PPAx9~?!4@#@&QYQAAA==^#~@

脚本仍可正常运行,只是任何人再想查看代码并剽窃您的工作成果就有点困难了。(您说对了:尽管如此,但它确实要比您好,脚本专家!中提到的大多数笑话更有意义)

现在,要记住的重要一点是,我们只将脚本编码(或打乱),而绝对没有加密。这意味着什么?这意味着编码器会对多数人隐藏您的脚本;但是,一个掌握编码知识或拥有从 Internet 下载的实用程序的真正铁杆黑客,却能破解此代码。这尤其意味着永远不要在脚本中“隐藏”管理员密码,也不要以为“脚本编码器”能保证密码不被窥探。它不会像您想的那样,因为它是编码器而不是加密器,这绝对是有区别的。

那么,在 HTA 中对脚本编码的问题又怎么样呢?好吧,我们假设您有一个类似下面所示的 HTA(我们同样假设您已经下载并安装了“脚本编码器”):

<head>

<title>Operating System Version</title>

<HTA:APPLICATION 

     APPLICATIONNAME="Operating System Version"

     SCROLL="yes"

     SINGLEINSTANCE="yes"

>

</head>



<script language="VBScript">



    Sub GetOSVersion

       strComputer = "."

           Set objWMIService = GetObject("winmgmts://" & strComputer &  "/root/cimv2")



           Set colOperatingSystems = objWMIService.ExecQuery _

               ("Select * from Win32_OperatingSystem")



           For Each objOperatingSystem in colOperatingSystems

               Msgbox objOperatingSystem.Caption & " " & _

                   objOperatingSystem.Version

           Next

    End Sub

</script>



<body>

<input type="button" value="Operating System" name="run_button"  onClick="GetOSVersion">



</body>

如果要对此 HTA 的 VBScript 部分编码,首先要使用 '**Start Encode** 标记在要编码部分的开始处进行标记。换言之,<Script> 标记需要像下面这样,使 '**Start Encode** 恰好位于 VBScript 代码的第一行之前:

<script language="VBScript">



'**Start Encode**





    Sub GetOSVersion

       strComputer = "."

           Set objWMIService = GetObject("winmgmts://" & strComputer &  "/root/cimv2")



           Set colOperatingSystems = objWMIService.ExecQuery _

               ("Select * from Win32_OperatingSystem")



           For Each objOperatingSystem in colOperatingSystems

               Msgbox objOperatingSystem.Caption & " " & _

                   objOperatingSystem.Version

           Next

    End Sub

</script>

从理论上来讲,这样便能通过运行 Screnc.exe 并传递两个参数(现有 HTA 文件 (Test.hta) 的名称和要指定给编码文件 (Encoded.hta) 的名称)来对脚本编码:

C:/Scripts>screnc test.hta encoded.hta

不幸的是,这样做行不通。

为什么?噢,我们实在是不能确定。不过,我们知道怎样会真正行得通。我们只需将现有文件的扩展名 .hta 更改为 .htm。换言之,我们只需将 Test.htm 文件重新命名。“脚本编码器”无法处理 HTA 文件,但是处理 HTML 文件就没有问题了。现在,我们可以使用类似下面的语法启动“脚本编码器”:

C:/Scripts>screnc test.htm encoded.hta

这样做确实可行吗?别告诉我们您对脚本专家表示怀疑!编码后的 .hta 将类似下面这样:

<head>

<title>Operating System Version</title>

<HTA:APPLICATION 

     APPLICATIONNAME="Operating System Version"

     SCROLL="yes"

     SINGLEINSTANCE="yes"

>

</head>



<script language="VBScript.Encode">



'**Start Encode**#@~^8AEAAA==@#@&@#@&@#@&,PP,?!8PV+OrU.n.kkW@#@&,PP,~~PkYMZG:2;D+.P{~JcJ@#@&,PP~~,P~P,~U+O,W(Ltq

UnD7k^+,'~!Yr(%+1Y`rArxsosYd)wwrP'PkOD;Wh2!Y+.~LP~J'.KWO'mb:/yJ*@#@&@#@&~P,P~~,PP,~?YP1Gsra+MlOkULUXdYh/,'~G(

L/(U+./b^R3X+1pEDH~{@#@&~P,P~~,PP,~P,PPvEj+^+1Y~e~W

MWhPqrx2 m6a+DCObxL?HdD+hr#@#@&@#@&P,~P,P~P,P~oKDPACm4PW(%6wDmYr

xLjH/O+s~kP^G^rwn.mYrxTjH/O:k@#@&,P,~P,P~P,P~~,PHkL4K6PK8%ra+M

lOkULUXdYhR;l2ObWx~',J~J,',{@#@&P,PP,P,~P,P~P,P~~,PW(%ra+DmOrxT?H/O+h 

j+./bGx@#@&~~,PP~~,P~PgnXY@#@&P,PPAx9~?!4@#@&QYQAAA==^#~@</script>



<body>

<input type="button" value="Operating System" name="run_button"  onClick="GetOSVersion">



</body>

它仍是个有效的 HTA;单击按钮会返回本地机器上安装的操作系统的名称和版本。但是,对于任何试图查看代码的人,它看上去纯粹就是一些杂乱信息。(不用说,脚本专家比任何人都更了解这些杂乱信息!)

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客
    如何在一个文件被添加到
    如何将“珊瑚虫”好友请

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览