此问题与 my previous one 相关.
您能否解释一下或提供一个链接来说明 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 属性,该属性将根据宏的保护状态返回不同的枚举(例如,如果宏 protected ,则为 vbext_pp_locked
)。如果您继续以编程方式尝试密码,直到 vbext_pp_locked
评估为 false,您就会找到密码。
关于security - Excel VBA 代码的密码保护如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/259897/