VBScript

VBScriptを暗号化する方法で気付いた注意点

今回の方法

Encode and Decode a VB script
正常なファイルがウイルスとして検知された場合(誤認)の対処方法
MACAFEEでは標準だとVBEになると隔離されてしまう。

役立たないVBA版

VBSをVBEに変換する

ドラッグアンドドロップではないのでファイル名は指定である。
Microsoft Scripting Runtimeを参照設定してください。
C:\hoge\test.vbsからC:\hoge\test.vbeを作成します。

VbEncode
Sub VBSEncode()
Dim oEncoder As New Scripting.Encoder, oFilesToEncode, sfile As String, sDest
Dim sFileOut, oFile As file, oEncFile, oFSO As New Scripting.FileSystemObject, i
Dim oStream, sSourceFile

Const sPath = "C:\hoge"
'Set oEncoder = CreateObject("Scripting.Encoder")
'   Set oFSO = CreateObject("Scripting.FileSystemObject")
   sfile = sPath & "\test.vbs"
    Set oFile = oFSO.GetFile(sfile)
     Set oStream = oFile.OpenAsTextStream(1)
    sSourceFile = oStream.ReadAll
    oStream.Close
    sDest = oEncoder.EncodeScriptFile(".vbs", sSourceFile, 0, "")
    sFileOut = Left(sfile, Len(sfile) - 3) & "vbe"
    Set oEncFile = oFSO.CreateTextFile(sFileOut)
    oEncFile.Write sDest
    oEncFile.Close
End Sub

このスクリプトの注意点?

マカフィーに食われてしまうのもそうだが、もっとも重要な点はVBSがANSIテキスト形式であること。が挙げられる。ユニコード形式とかだとうまくいかないときがある。これどこにも書いていないので間違いなのかもしれないが。

歴史

WindowsでWSHスクリプトコードを暗号化する
は2004年の記事であるが。Windows Script Encoder(日本語版)はもうダウンロードできない。
しかしながら
VBScriptの暗号化
では

以前は Windows Script Encoder というツールがマイクロソフトから提供されていたが、現在はWindow OSに標準で暗号化機能が用意されている。scrrun.dllのEncoderオブジェクトを利用してVBScriptを暗号化するスクリプトを作成できる。

とのことである。実際上記のVBAはその機能を利用しているのである。