过去,我多次使用“十六进制编辑器将DPB修改为DPx”来绕过旧的Excel VBA项目(.xls)上的VBA项目安全性,因此我绝对知道该怎么做并且知道自己可以做到。
但是,我昨天才尝试这样做,发现它似乎不再起作用。我尝试同时使用Excel 2011(Mac)和Excel 2003(Windows),在两种情况下,我都具有相同的行为。
打开VBA编辑器将显示一条消息,指出该项目已损坏,该项目将被删除。然后,将打开VBA编辑器,并且可以肯定的是,已从模块和工作表中剥离了所有VBA。
我试过这种方法:
Is there a way to crack the password on an Excel VBA Project?(即使用已知密码创建电子表格,然后在相关字段之间进行复制)
但是发现在我的“虚拟”电子表格上创建的“GC”键的长度比我希望访问的电子表格上的“GC”键(“目标”)短。我在其他地方读过,在“目标”键较长的情况下,您可以将“虚拟”键填充到相同的长度,但是我找不到相反的情况该怎么办。
所以-我的问题;
编辑
现在已经解决了这个问题(某种程度上),我想在这里添加一个摘要。
我尚未能够使它在Mac Excel 2011上正常工作。有关将文件从filname.xlsm更改为fielname.zip并再次返回的操作导致Excel 2011拒绝识别的Excel文件损坏。
我通过将.xlsm文件名修改为.zip,用十六进制编辑器编辑vbaproject.bin文件中的DPB = AND GC =值,设法使它在旧的Windows计算机(XP / Excel 2007)上运行,在将.zip重命名回xlsm之前,请先将其保存在.zip文件中。我使用了Ricko在底部给出的“测试”示例,它与ONE CAVEAT一起使用-我必须“填充”我的GC值,使其与文件中原始的值相同。
ORIGINAL: GC="0F0DA36FAF938494849484"
NEW: (TEST) GC="BAB816BBF4BCF4BCF4" (from Ricko below)
NEW: (TEST) GC="BAB816BBF4BCF4BCF40000" (what i used and what worked)
最佳答案
我有你的答案,因为我今天有同样的问题:
有人制作了一个有效的vba代码,将所有excel文件(包括.xlsm(2007+版本))的vba保护密码更改为“宏”。您可以通过浏览他的代码来查看其工作原理。
这是这个人的博客:http://lbeliarl.blogspot.com/2014/03/excel-removing-password-from-vba.html
这是完成工作的文件:https://docs.google.com/file/d/0B6sFi5sSqEKbLUIwUTVhY3lWZE0/edit
从他的博客的先前帖子中粘贴:
对于Excel 2007/2010(.xlsm)文件,请执行以下步骤:
DPB =“282A84CBA1CBA1345FCCB154E20721DE77F7D2378D0EAC90427A22021A46E9CE6F17188A”。 (此值是为“宏”密码生成的。您可以使用此DPB值跳过步骤1-8)
只会是宏(如我在此处显示的示例所示)。
关于vba - 通过十六进制编辑器的Excel VBA密码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22663809/