当前位置:  开发笔记 > 编程语言 > 正文

Excel VBA代码的密码保护如何工作?

如何解决《ExcelVBA代码的密码保护如何工作?》经验,为你挑选了1个好方法。

这个问题与我之前的问题有关.

您能解释或提供一个链接,说明Excel VBA代码密码保护在2007年之前的版本中是如何实际运行的吗?在密码保护方面,Excel 2007和以前版本有什么区别?

Excel的密码保护实际上也加密了代码吗?如果加密,Excel如何执行代码?

最后,excel的密码删除软件如何工作?



1> Phil.Wheeler..:

人们普遍认为VBA安全性很差.未编译VBA代码,并且excel文件中提供了源代码.密码保护很容易规避.

据我了解,Office 2003及更早版本将vba代码保存为工作表(或文档/演示文稿)的二进制格式的一部分.当您启动VBA IDE时,它只是查看VBA代码是否已被"保护".这并不意味着它是加密的 - 只是无法查看.理论上,这会阻止您的用户干扰您的代码,但是核心编码器可以绕过密码.

所以Excel不需要解密任何代码 - 它只需要阻止人们查看它.

Office 2007 会对宏进行加密(不要问我如何或使用什么算法).这是必要的,因为XLSM文件(或任何Office 2007文件)只是具有不同扩展名的zip文件.任何人都可以进入这些文件并四处寻找.

要回答您的上一个问题 - 密码删除如何在较旧的Office格式上运行,我不完全确定.不同的供应商可能会以不同的方式解决问题,但我怀疑最常见的方法是在发现匹配之前对密码进行暴力攻击.

Excel VBProject对象具有Protection属性,该属性将根据宏的保护状态返回不同的枚举(vbext_pp_locked例如,如果宏受到保护).如果您要以编程方式继续尝试密码,直到vbext_pp_locked评估为false,您就会找到密码.


仅供参考 - 我创建了一个xlsm(使用2003年可用的转换器).将xlsm扩展名更改为xip,解压缩并查看内部.所有VBA都在一个文件'vbaProject.bin'中.在十六进制编辑器中,它似乎是由与其他excel文件完全相同的BIFF块构建的.宏中的所有字符串都清晰可见.所以它看起来好像加密没有太大变化.
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有