原始出处:www.cnblogs.com/saveutime/p/vbaprotect.html
QQ:908852353
Email:saveutime@foxmail.com
20180402:
其实在找到软件Unviewable+ VBA(官网)的时候,我并没有对其加密后的文件进行强度验证,但通过一段时间后的测试发现,该加密也只是把代码放入到了其他*.bin文件里了,其实也就是换汤不换药,还是非常容易提取出vba代码的。
在使用Unviewable+ VBA加密的工作簿,使用最强的加密级别,发现加密后的代码几乎没有混淆,而官方的*.xlam文件里面混淆较为严谨(其实也就是注释多了很多,画风如下所示,感觉就是为了规避某VBA代码提取工具的限制)。
上图代码截取自RC-UnviewablePlus.xlam。
可能很多学习VBA的小伙伴都在苦恼,自己辛辛苦苦写的VBA代码就被别人拿去使用,有些还拿去商业用途。其实任何一门编程语言,代码的安全都是相对的,有编译就会有反编译。只能保证代码的相对安全,可以让大多数拿来主义的小白望而却步。
针对Excel文档的保护可以从单元格、工作表和工作簿等层面加以保护,那针对VBA代码可以从哪些方面加以保护呢?主要有以下3个方法加以保护。
一 VBAProject工程保护
该功能是有Excel官方提供,用于对VBA代码加以密码保护,具体设置方法如下动态图所示:
此方法的优点就是,设置起来方便,但缺点也很明显,此密码很容易被破解或免密查看。后期我会出视频加以介绍,敬请期待~
二 VBA工程不可查看
接触VBA比较久的小伙伴一般都会碰到在点击VBA工程的时候,弹出对话框,提示VBA工程不可查看。如下图所示:
那究竟如何设置并达到工程不可查看呢?方法很容易,有两种方法:
方法一(共用级锁定):
1、先对excel档进行一般的vbaproject”工程密码保护"。
2、打开要保护的档,选择∶工具--->保护--->保护并共用活页簿--->以追踪修订方式共用-->输入密码-->保存档。
完成后,当你打开“vbaproject”工程属性时,就将会提示∶“工程不可看"
方法二(推荐,破坏型锁定)∶
1、使用7z或Winrar等解压软件,右键打开*.xlsm文件;
2、打开xl文件夹,把文件vbaProject.bin拖放到桌面;
3、使用UltraEdit软件打开vbaProject.bin文件,并使用Ctrl+F打开查找对话框,输入id=,定位到需要修改的位置(动态演示如下);
4、只要将id后大括号中的位元组随便修改一下即可。保存vbaProject.bin文件;
5、把修改好的vbaProject.bin文件拖入打开的7z对话框xl文件夹中,再次打开Excel文件的宏编辑器界面,即可发现VBA工程已经不可查看了(动态演示如下)。
当然通过上面破坏型锁定也不是万无一失的,因为也是可以通过修改加以破解的。如果觉得上面的方法比较繁琐,完全可以通过别人写好的VBA程序加以完成。
眼尖的小伙伴可能也看到了,上面的工具也是自带解锁功能的,不要干坏事哦~
三 Unviewable+ VBA
目前研究下来,通过软件Unviewable+ VBA加密的VBA效果最好(此处为啥表红,请看文章开头的总结),软件主界面截图如下:
国内使用该软件加密的还不多,但国外很多使用该软件对其的VBA代码进行加密,加密操作方法如下:
虽然加密后的工作簿3.xlsm打开VBE宏编辑器后,也是提示VBA工程不可查看,但此时的工程不可查看是无法通过方法二中的超酷VBA解锁器加以加锁的,因为加密算法发生了很大的变化,不是简简单单修改id得到的。
四 我的总结
今天主要为大家介绍3个VBA加密的方法,其中前两个方法被广泛使用,但加密的效果也是很差的,但对于VBA小白来说足够,对于VBA大神来说,也不在乎我们写的代码。
当然也可以使用第三种方法进行强加密,和第二种方法混淆,因为效果展现都是VBA工程不可查看。
大家如果对Excel VBA的保护有更好的方法,欢迎骚扰^_^
---恢复内容结束---