34

我过去曾多次使用“十六进制编辑器将 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)
4

4 回答 4

57

我有你的答案,因为我今天也遇到了同样的问题:

有人制作了一个有效的 vba 代码,将所有 excel 文件的 vba 保护密码更改为“宏”,包括 .xlsm(2007+ 版本)。你可以通过浏览他的代码来了解它是如何工作的。

这是这个人的博客: http: //lbeliarl.blogspot.com/2014/03/excel-removing-password-from-vba.html 这是工作的文件:https ://docs.google.com/file /d/0B6sFi5sSqEKbLUIwUTVhY3lWZE0/edit

从他的博客上的一篇文章中粘贴:

对于 Excel 2007/2010 (.xlsm) 文件,请执行以下步骤:

  1. 创建一个新的 .xlsm 文件。
  2. 在 VBA 部分,设置一个简单的密码(例如“宏”)。
  3. 保存文件并退出。
  4. 将文件扩展名更改为“.zip”,由任何存档程序打开它。
  5. 找到文件:“vbaProject.bin”(在“xl”文件夹中)。
  6. 从存档中提取它。
  7. 使用十六进制编辑器打开刚刚提取的文件。
  8. 从参数 DPB 中查找并复制值(引号中的值),例如:DPB="282A84CBA1CBA1345FCCB154E20721DE77F7D2378D0EAC90427A22021A46E9CE6F17188A"。(此值是为“宏”密码生成的。您可以使用此 DPB 值跳过步骤 1-8)

  9. 对密码未知的文件(要解锁的文件)执行步骤 4-7。

  10. 根据您在步骤 8 中复制的值更改此文件中的 DBP 值。

    如果复制的值比加密文件中的短,您应该用 0(零)填充缺失的字符。如果值更长 - 这不是问题(按原样粘贴)。

  11. 保存“vbaProject.bin”文件并退出十六进制编辑器。

  12. 用修改后的文件替换现有的“vbaProject.bin”文件。
  13. 将扩展名从“.zip”改回“.xlsm”
  14. 现在,打开您需要在其中查看 VBA 代码的 excel 文件。VBA 代码的密码将只是宏(如我在此处显示的示例中所示)。
于 2014-03-28T21:51:05.087 回答
21

新版本,现在你也有 GC= 尝试用那些替换 DPB 和 GC

DPB="DBD9775A4B774B77B4894C77DFE8FE6D2CCEB951E8045C2AB7CA507D8F3AC7E3A7F59012A2" GC="BAB816BBF4BCF4BCF4"

密码将是“测试”

于 2015-02-13T19:02:48.167 回答
16
  1. 使用十六进制编辑器打开 xls 文件。
  2. 搜索DPB
  3. 替换DPBDPx
  4. 保存存档。
  5. 在 Excel 中打开文件。
  6. 如果您收到任何消息框,请单击“是”。
  7. 从 VBA 项目属性设置新密码。
  8. 关闭并再次打开文件,然后输入新密码以取消保护。

检查http://blog.getspool.com/396/best-vba-password-recovery-cracker-tool-remove/

于 2015-01-31T11:38:20.087 回答
6

如果您处理.xlsm文件而不是.xls您可以使用旧方法。我试图使用方法多次修改它不起作用,也改变了vbaProject.bin没有的值。所以我很惊讶以下工作: 1. 另存为。 2. 使用方法。 3.不幸的是,使用修改后的文件时可能会出现一些错误,我不得不另存为并添加模块,然后另存为。.xlsmDBP->DBxDBP
.xlsm.xls
DBP->DBx.xls
.xls.xls.xlsx.xlsm

于 2014-05-19T19:54:12.243 回答