美文网首页职场Office技巧程序员
我的 VBA 代码混淆器,加密你的宏作品

我的 VBA 代码混淆器,加密你的宏作品

作者: 贾斯汀表哥 | 来源:发表于2018-12-20 19:01 被阅读44次

      我的 VBA 代码加密混淆器,帮你加密你的宏代码,让它不再那么易读。因 VBA 的方便一直以来都喜欢用它写一些小工具,了解多了也就知道这种代码编写的工具完全没有安全性可言,工程密码形同虚设,很容易破解。(见我的文章中的第三点破解工程代码:Excel 各种密码破解大全,建议收藏!)。
       我的这个工具的做法就是仿网上的一些 Java,Python 的代码混淆器,用很难辨别的字符串去替换代码中用到的变量、函数或过程名,并转译代码中用到的字符串。谷歌能找到一些付费的软件,做的比我更好,支持控件名混淆、字符串的加密,但我供不起那一两千刀的价格,不划算。于是自己写了一个小工具满足自己的小需求,如果你有需要,在这里只需支付 25 简书币就可以使用。要是你对原代码感兴趣也可以简书私信我。

    工具的测试版在我的百度网盘下载,测试版支持部分变量混淆,不转译字符串。
    下载链接:https://pan.baidu.com/s/1B-y7LHBIjOaLkZ8YTbmR-w,提取码:x348
    如需正式版请在简书上私信作者,在简书上如何私信作者

    1. 代码混淆后的效果

    下面我先 show 一下代码加密后的效果,待加密代码的部分截图:


    混淆完成之后如下图:

    变量名称、字符串不再那么容易辨别了,一串串的数字,头晕,容我喝杯水先!哈哈

    2. 代码编码注意事项

      工具做的比较简单,不能处理太诡异的代码,这里有一些注意事项在混淆前要对你的代码对照检查一下:

    1. 变量声明的注意事项:
      • 所有变量使用前必须声明,包含 For 语句中用到的变量
      • 变量的类型必须指定,类型未定的声明为 Variant
      • 不能在一行代码中声明多个变量,如下
      Dim strFirstName As String, strLastName As String
      
      • 变量名称不能过于简单,如下是不建议的
      Dim I As Integer
      
      建议修改为匈牙利命名法的变量,例如:
      Dim intIndex As Integer
      
      • 常量,变量必须声明作用域,即用关键词 Public, Private 或 Dim 声明,不允许如下:
      Const SUB_PROCESS = 20
      
      • 暂不支持字符串类型的常量,请用变量取代
    2. 注意关键字的大小写,例如不要把 Dim 写成 dim
    3. 代码中不要包含多余的空格、制表符,尤其是在变量之间
    4. 注意代码行的单引号,有时会被解析为注解。可用 Chr(39) 替换
    5. 函数、过程名在不指定的情况下默认不混淆
    6. 不支持多个模块的代码一起混淆

    3. 工具使用方法

       进入工具的文件夹,你会看到四个文件,如下:

       在 frmMain.vbs 中放入待混淆的代码。Variables.txt 文件中放入那些要进行混淆的函数、过程名、错误处理断点、或工具未能检测到的变量,如无此要求请清空此文件(不能删除)。
       上述的内容提供完后双击 VBAObfuscate.exe 开始混淆你的代码,随后会出现黑黑的一个窗口提示你代码混淆完毕,请按任意键关闭,如下:

    混淆后的结果存储在文件 frmOutput.vbs。请用这些代码替换你的源代码,替换前记得备份哦!

       VBA 代码再怎么混淆、加密都很难做到完全的安全,核心代码建议你用 C 或 C++ 编写成 dll 文件,然后用 VBA调用。

    全文完!欢迎评论,如你满意工具的功能, 请记得点赞哦,谢谢!
    本文为作者原创文章,未经作者允许不得转载。

    相关文章

      网友评论

        本文标题:我的 VBA 代码混淆器,加密你的宏作品

        本文链接:https://www.haomeiwen.com/subject/gmxukqtx.html