VBScriptさんま屋.

VBScriptの個人的なメモです (´・ω・`)

VBScriptの暗号化

暗号化によるコード改変防止

VBScriptを組織内の不特定多数で使用する場合にはコードを改変される可能性がある。改変されると最悪の場合、PCのシステムファイルを破壊したり、機密情報を外部へ送信したりと有害な動作をする可能性がある。コードの改変を簡単にできないようにする手段として、コードを暗号化するという選択肢がある。

ドラッグ&ドロップで暗号化するスクリプト

次のコードはhttps://gallery.technet.microsoft.com/scriptcenter/16439c02-3296-4ec8-9134-6eb6fb599880からの転載である。
2020年にTechNetギャラリーが廃止された為、転載元は無くなっている。
dim->Dim、set->Setなど元の表記から一部変更した。

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 

使い方

  1. このコードをencode.vbsなどの名前で保存する。
  2. 暗号化したいvbsファイルをencode.vbsにドラッグ&ドロップすると、暗号化されて拡張子vbeのファイルが作成される。
  3. 複数のvbsファイルをまとめてドラッグ&ドロップすることもできる。

暗号化したコードを復号化するツールも存在するらしいので、コードの改変を完全に防げるわけではない。