1. 程式人生 > >VBA 工程程式碼加密混淆器,保護你的巨集作品

VBA 工程程式碼加密混淆器,保護你的巨集作品

個人製作的 VBA 程式碼加密混淆器,幫你加密你的巨集程式碼,讓它不再那麼易讀。因 VBA 的方便一直以來都喜歡用它寫一些小工具,瞭解多了也就知道這種程式碼編寫的工具完全沒有安全性可言,工程密碼形同虛設,很容易破解。(見我的文章中的第三點破解工程程式碼:Excel 各種密碼破解大全,建議收藏!)。

  我的這個工具的做法就是仿網上的一些 Java,Python 的程式碼混淆器,用很難辨別的字串去替換程式碼中用到的變數、函式或過程名,並轉譯程式碼中用到的字串。谷歌能找到一些付費的軟體,做的比我更好,支援控制元件名混淆、字串的加密,但我供不起那一兩千刀的價格,不划算。於是自己寫了一個小工具滿足自己的小需求,如果你有需要,在這裡只需支付 25 簡書幣就可以使用。要是你對原始碼感興趣也可以簡書私信我。

  工具的測試版在我的百度網盤下載,測試版支援部分變數混淆,不轉譯字串。
下載連結:https://pan.baidu.com/s/13gWedNicVSA2NKBDL9xJWw ,提取碼:13s4。如需正式版請關注我的微信公眾號,通過裡面的郵箱地址聯絡我。

1. 程式碼混淆後的效果

下面我先 show 一下程式碼加密後的效果,待加密程式碼的部分截圖:

混淆完成之後如下圖:

變數名稱、字串不再那麼容易辨別了,一串串的數字,頭暈,容我喝杯水先!哈哈。

2. 程式碼編碼注意事項

  工具做的比較簡單,不能處理太詭異的程式碼,這裡有一些注意事項在混淆前要對你的程式碼對照檢查一下:

  • 變數宣告的注意事項:
    • 所有變數使用前必須宣告,包含 For 語句中用到的變數
    • 變數的型別必須指定,型別未定的宣告為 Variant
    • 不能在一行程式碼中宣告多個變數,如下
      Dim strFirstName As String, strLastName As String
      
    • 變數名稱不能過於簡單,如下是不建議的
      Dim I As Integer
      
      建議修改為匈牙利命名法的變數,例如:
      Dim intIndex As Integer
      
    • 常量,變數必須宣告作用域,即用關鍵詞 Public, Private 或 Dim 宣告,不允許如下:
      Const SUB_PROCESS = 20
      
    • 暫不支援字串型別的常量,請用變數取代
  • 注意關鍵字的大小寫,例如不要把 Dim 寫成 dim
  • 程式碼中不要包含多餘的空格、製表符,尤其是在變數之間
  • 注意程式碼行的單引號,有時會被解析為註解。可用 Chr(39) 替換
  • 函式、過程名在不指定的情況下預設不混淆
  • 不支援多個模組的程式碼一起混淆

3. 工具使用方法

  進入工具的資料夾,你會看到四個檔案,如下:

  在 frmMain.vbs 中放入待混淆的程式碼。Variables.txt 檔案中放入那些要進行混淆的函式、過程名、錯誤處理斷點、或工具未能檢測到的變數,如無此要求請清空此檔案(不能刪除)。
  上述的內容提供完後雙擊 VBAObfuscate.exe 開始混淆你的程式碼,隨後會出現黑黑的一個視窗提示你程式碼混淆完畢,請按任意鍵關閉,如下:

混淆後的結果儲存在檔案 frmOutput.vbs。請用這些程式碼替換你的原始碼,替換前記得備份哦!
  VBA 程式碼再怎麼混淆、加密都很難做到完全的安全,核心程式碼建議你用 C 或 C++ 編寫成 dll 檔案,然後用 VBA呼叫。

全文完!歡迎評論,如你滿意工具的功能, 請記得點贊哦,謝謝!

本文為作者原創文章,未經作者允許不得轉載。