这个问题与我之前的问题有关.
您能解释或提供一个链接,说明Excel VBA代码密码保护在2007年之前的版本中是如何实际运行的吗?在密码保护方面,Excel 2007和以前版本有什么区别?
Excel的密码保护实际上也加密了代码吗?如果加密,Excel如何执行代码?
最后,excel的密码删除软件如何工作?
人们普遍认为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,您就会找到密码.