通过十六进制编辑器的Excel VBA密码

时间:2014-03-26 14:18:30

标签: excel vba excel-vba hex-editors

我过去多次使用“十六进制编辑器修改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文件损坏拒绝承认。

我DID设法通过将.xlsm文件名修改为.zip来使旧的Windows机器(XP / Excel 2007)工作,使用十六进制编辑vbaproject.bin文件中的DPB = AND GC =值然后编辑器将此文件保存在.zip文件中,然后将.zip重命名为xlsm。我使用了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 个答案:

答案 0 :(得分:51)

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

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

这是该家伙的博客: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部分中,设置一个简单的密码(例如'macro')。
  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代码的密码 将只是宏(如我在这里展示的例子)。

答案 1 :(得分:15)

新版本,现在您还拥有GC = 尝试用那些

替换DPB和GC

DPB = “DBD9775A4B774B77B4894C77DFE8FE6D2CCEB951E8045C2AB7CA507D8F3AC7E3A7F59012A2” GC =“BAB816BBF4BCF4BCF4”

密码将为“test”

答案 2 :(得分:11)

  1. 使用十六进制编辑器打开xls文件。
  2. 搜索DPB
  3. DPB替换为DPx
  4. 保存文件。
  5. 在Excel中打开文件。
  6. 点击"是"如果你有任何消息框。
  7. 从VBA项目属性设置新密码。
  8. 再次关闭并打开文件,然后键入新密码以取消保护。
  9. 检查http://blog.getspool.com/396/best-vba-password-recovery-cracker-tool-remove/

答案 3 :(得分:4)

如果您处理.xlsm文件而不是.xls,则可以使用旧方法。我试图使用vbaProject.bin方法在.xlsm中多次修改DBP->DBx,因为它不起作用,而DBP的值也没有改变。以下工作令我非常惊讶:
1.将.xlsm保存为.xls 2.在DBP->DBx上使用.xls方法 3.遗憾的是,使用修改后的.xls文件时可能会出现一些错误,我必须将.xls保存为.xlsx并添加模块,然后保存为.xlsm