我过去曾多次使用“十六进制编辑器将 DPB 修改为 DPx”来绕过旧 Excel VBA 项目 (.xls) 上的 VBA 项目安全性,所以我绝对知道该怎么做并且知道我可以做到。
但是我昨天刚刚尝试这样做,发现它似乎不再起作用。我尝试使用 Excel 2011 (Mac) 和 Excel 2003 (Windows),在这两种情况下,我得到了相同的行为;
打开 VBA 编辑器会显示一条消息,指出该项目已损坏,该项目将被删除。然后打开 VBA 编辑器,果然,所有 VBA 都从模块和工作表中删除。
我试过这个方法: 有没有办法破解 Excel VBA 项目的密码?(即使用已知密码创建电子表格,然后跨相关字段复制)
但是发现在我的“虚拟”电子表格上创建的“GC”键的长度比我希望访问的电子表格上的“GC”键(“目标”)短。我在其他地方读到过,如果“目标”键较长,您可以将“虚拟”键填充到相同的长度,但我无法找到在相反情况下该怎么做。
所以-我的问题;
- 是否有人知道是否应用了使“十六进制编辑器”方法无效的补丁?
- 当虚拟键比目标键长时,任何人都可以帮忙做些什么吗?
- 其他人可以在此问题上提供任何更新的现场吗?
编辑 现在(在某种程度上)解决了这个问题,我想我会在这里添加一个摘要。
我无法让它在 Mac Excel 2011 上工作。将文件从filname.xlsm更改为 fielname.zip 并再次返回会导致 Excel 2011 拒绝识别的损坏的 excel 文件。
通过将 .xlsm 文件名修改为 .zip、使用十六进制编辑器编辑 vbaproject.bin 文件中的 DPB= 和 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)