【问题标题】:Excel VBA Password via Hex Editor通过十六进制编辑器的 Excel VBA 密码
【发布时间】:2014-05-05 00:30:34
【问题描述】:

我过去曾多次使用“十六进制编辑器将 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= 和 GC= 值,设法让它在旧的 Windows 机器 (XP/Excel 2007) 上工作编辑器然后将其保存在 .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)

【问题讨论】:

  • 不是 StackOverflow 问题。也许适合superuser.com
  • 我在 StackOverflow 上询问的原因是因为在 StackOverflow 中可以找到有关此主题的许多有用信息。如果 Excel 中的 VBA 项目的情况发生了变化,我认为问题和后续答案出现在 SO 中是有意义的,因为有这么多相关的问题。如果它不能留在这里,那么我可以应付,但我确实认为它被问到(并在这里回答)是有价值的
  • FWIW 我在尝试 DPx 方法时遇到了同样的问题。
  • 浏览,这个作品,一起打开运行,受文件保护。 Đức Thanh Nguyễn - Thank you

标签: vba excel hex-editors


【解决方案1】:

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

有人制作了一个有效的 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 部分,设置一个简单的密码(例如“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 代码的密码 将只是宏(如我在这里展示的示例)。

【讨论】:

  • 这比“神圣的银行转账”效果更好,Peter Poppoff 牧师承诺我会收到。谢谢。
  • 我会支持 LucasSeveryn 和 Ricko 的 cmets。截至 2015 年 3 月,它需要两者,并且上面列出的博客上的文档尚未更新来执行此操作(即除非您更新它以编辑 GC,否则它将无法工作)。另外 - 这不适用于 Excel 2011(适用于 Mac)。
  • 我有两个问题:1) 这也适用于 XLSB 吗? 2) 0(零) 是什么意思?十六进制值 30 或十六进制值 00(记住,我们使用的是十六进制编辑器)?
【解决方案2】:

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

DPB="DBD9775A4B774B77B4894C77DFE8FE6D2CCEB951E8045C2AB7CA507D8F3AC7E3A7F59012A2" GC="BAB816BBF4BCF4BCF4"

密码将是“测试”

【讨论】:

  • 感谢 Ricko 的提示 - 你说得对。如果不复制 GC,IT 将无法工作。我完全按照您在此处添加的内容进行了复制,它在 Excel 2007 上很有用。
  • 这还能用吗?我试图改变我的 GC 和 DPB,但是有两个问题...... 1. bin 文件中的两个值的大小不同,所以输入这些需要改变文件大小。 2、DPB值不以“结尾,而是以它开头……看起来是这样的:Name="VBAProject"..HelpContextID="0"..VersionCompatible32="393222000"..CMG="5250FEAE54B254B251B751B7"..DPB="A4A60800084F254F25B0DB50250596D1EDAC....‚.......„...
  • 如果粘贴的值比现有值短,用零填补空白
【解决方案3】:
  1. 使用十六进制编辑器打开 xls 文件。
  2. 搜索DPB
  3. DPB 替换为DPx
  4. 保存文件。
  5. 在 Excel 中打开文件。
  6. 如果您收到任何消息框,请单击“是”。
  7. 从 VBA 项目属性设置新密码。
  8. 关闭并再次打开文件,然后输入新密码以取消保护。

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 2012-02-14
      • 2014-01-22
      • 1970-01-01
      • 2012-02-12
      • 2011-06-10
      • 2016-04-17
      • 2011-11-20
      • 2012-09-23
      相关资源
      最近更新 更多