从 HTA 调用时编码的 VBS 不工作

Encoded VBS not working when called from HTA

我们有一个 HTA 用于使用 VBS 自动登录到服务器。为了维护安全性,我们想要对 VBS 进行编码,它具有用于登录服务器的凭据。我们遇到了一个 VBS 脚本,当拖到 VBS 文件上时,它会对 VBS 文件进行编码,输出是一个 VBE 文件。

现在,当从 HTA 调用此 VBE 时,它显示错误,似乎无法正确读取 VBE。

下面是我们如何将 VBE 链接到 HTA:

<script language="VBScript" src="hola.vbe" > </script>

此外,下面是编码代码:

Option Explicit 

dim oEncoder, oFilesToEncode, file, sDest 
dim sFileOut, oFile, oEncFile, oFSO, i 
dim oStream, sSourceFile 

set oFilesToEncode = WScript.Arguments 
set oEncoder = CreateObject("Scripting.Encoder") 
For i = 0 to oFilesToEncode.Count - 1 
    set oFSO = CreateObject("Scripting.FileSystemObject") 
    file = oFilesToEncode(i) 
    set oFile = oFSO.GetFile(file) 
    Set oStream = oFile.OpenAsTextStream(1) 
    sSourceFile=oStream.ReadAll 
    oStream.Close 
    sDest = oEncoder.EncodeScriptFile(".vbs",sSourceFile,0,"") 
    sFileOut = Left(file, Len(file) - 3) & "vbe" 
    Set oEncFile = oFSO.CreateTextFile(sFileOut) 
    oEncFile.Write sDest 
    oEncFile.Close 
Next 

根据我的理解,编码后的 VBS 应该可以正常工作,不确定为什么我们在这种情况下会出现褪色问题。

为了使用编码的 VBScript,您需要指定要与 language="VBScript.Encode" 一起使用的语言引擎,而不仅仅是 language="VBScript".

此外,如果您想使用它,请务必小心"To maintain security"。脚本编码器的目的是防止随意检查,但它不会 "encrypt" 任何常规意义上的代码,它 not that hard 可以恢复纯脚本。