ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 24731|回复: 47

[分享] 一种适合新手的VBA代码加密的方法

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2017-9-13 20:36 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 liucqa 于 2017-9-17 12:13 编辑

    VBA代码加密是个老问题,自从五年前我写的的VBA Dumper发布之后,在Office层面上做任何加密都已经失去了意义。所以,很多人开始转战VB封装或者升级到VSTO等。但是,对于广大的VBAer来说,重新学一门语言带来的麻烦要远远超过开发VBA程序所带来的收益。所以,是否能有一种办法在不改变VBA代码的情况下,将VBA代码脱离office进行加密呢?

    考虑到office支持Com插件,那么是否能够通过外接插件完成VBA代码的动态生成,动态解密,实时运行,完毕删除这一系列保护代码的动作呢。这样,VBA代码不会与office文件存在一处,就可以有充分的手段对VBA明文代码进行加密了。

    本人在去年开发了VBA智能排版插件Smart Indenter for VBE,那么我就利用这个插件,完成了上述功能。

    1.gif

    在演示里面,可以看到运行了几个过程和函数,运行的都是vba代码,由插件动态生成到Excel里面,然后通过Application.Run命令运行的。
这种加密方式的好处是不需要改动VBA代码,当然也就不需要学什么新的语言了。适合专注VBA应用开发的童鞋。

有几点说明:
1、  此功能只是VBA加密的一个思路,供大家参考。
2、  此种加密方式的优点在于将vba代码的加密层面从office转移到了.net。这给保护代码提供了很强的可行性。

提供附件,供大家测试。测试前请先安装Smart Indenter for VBE v2.4插件以提供最新的动态VBA加解密支持。

附件看八楼,问题看十楼。

如果有问题,欢迎QQ联系。

评分

12

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-9-13 21:28 | 显示全部楼层
消灭0回复.

TA的精华主题

TA的得分主题

发表于 2017-9-13 22:31 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-9-13 22:47 | 显示全部楼层
动态增加,删除,修改VBA代码是这种加密方式的核心价值。

VBA开发者可以提供给用户A数据,代码注册通过之后,动态生成B数据完成核心功能。或者根据程序流程,动态修改运行分支,这样使用者永远也不知道程序的真正运行流程,达到保密效果。

TA的精华主题

TA的得分主题

发表于 2017-9-13 22:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
支持一下刘大人的好技术

TA的精华主题

TA的得分主题

发表于 2017-9-14 09:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-9-14 11:42 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-9-14 18:37 | 显示全部楼层
本帖最后由 liucqa 于 2017-9-27 21:48 编辑

2.71版发布,支持VBA的各种参数,开放加密VBA明文代码文件的接口。使用者基本不需要更改代码即可实现高强度的加密效果。此版本增强安全性检测。
Demo_v2.x.rar (25 KB, 下载次数: 802)
测试Demo之前,请先下载2.71版Smart Indenter for VBE插件,具体网址见Demo文件说明。

**************

提供一个CrackMe文件供测试加密强度。欢迎交流。
CrackMe.rar (14.7 KB, 下载次数: 547)






TA的精华主题

TA的得分主题

发表于 2017-9-14 21:06 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-9-14 22:02 | 显示全部楼层
本帖最后由 liucqa 于 2017-9-27 21:49 编辑

几点说明:1、此加密功能特点在于不需要更改vba代码即可实现高强度的加密效果。
2、Demo中的明文文件是给看代码用的。实际应用使用的是密文文件。
3、对动态运行的vba代码有功能限制,不能Show窗体,报错,中断等,避免看到插入的代码。
4、VBA代码中,函数名称写法要规范,加上前面的库名,以避免函数劫持。例如VBA.Left。
5、考虑安全问题,不能设置信任对VBA工程对象模型的访问,工程文件里面也不要存在操作vbe的代码。



**********
安装插件之后如何生成自己的VBA加密文件?
1、准备你自己的VBA代码文本文件,注意要保证代码运行正确,不能有弹窗和报错中断问题。
2、修改DynamicVBADemo.xlsm中的CryptVBAFile函数,将fullpath和destpath指向你自己的文件路径和文件名。
3、运行CryptVBAFile
4、参考Sample模块中的例子,使用Call obj.RunVBASub或者obj.RunVBAFunction来调用你的函数。

调用参数:
文件名,文件密钥(无密钥写""),文件格式编码(True=ansi,False=UTF8),要调用的VBA函数名,函数参数1,函数参数2,函数参数3...(超过五个请使用不定参数)


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-20 21:33 , Processed in 0.046373 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表