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

Blu*_*020 29 excel vba hex-editors excel-vba

我过去多次使用"十六进制编辑器将DPB修改为DPx"来绕过旧的Excel VBA项目(.xls)上的VBA项目安全性,所以我肯定知道如何做到并知道我能做到.

但是我昨天刚尝试这样做,发现它似乎不再起作用了.我尝试使用Excel 2011(Mac)和Excel 2003(Windows),在这两种情况下,我都有相同的行为;

打开VBA编辑器会显示一条消息,指出项目已损坏,项目将被删除.然后打开VBA编辑器,当然,所有VBA都从模块和工作表中删除.

我尝试过这种方法: 有没有办法破解Excel VBA项目的密码?(即创建一个包含已知密码的电子表格,然后在相关字段中复制)

但是发现在我的'虚拟'电子表格上创建的"GC"键的长度比我希望访问的电子表格上的"GC"键("目标")短.我曾在其他地方读到,在"目标"键较长的情况下,你可以将"虚拟"键填充到相同的长度,但在相反的情况下我无法找到说什么做.

所以 - 我的问题;

  • 是否有人知道是否已经应用了使"十六进制编辑器"方法无效的补丁?
  • 当虚拟键长于目标键时,任何人都可以帮忙做些什么吗?
  • 是否有其他人可以在此问题上提供任何更新的现场?

编辑 现在解决了这个问题(在某种程度上),我想我会在这里添加一个摘要.

HAVE NOT之所以能得到这个在Mac的Excel工作有关更改从filname.xlsm该文件fielname.zip 2011年的东西,然后再返回结果,其中的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)
Run Code Online (Sandbox Code Playgroud)

Mor*_*sho 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 /编辑

粘贴在博客上一篇文章中:

对于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代码的密码将只是宏(如我在此处显示的示例中所示).

  • 这比彼得·波波夫牧师承诺我会收到的“神圣银行转账”效果更好。谢谢。 (2认同)
  • 我有两个问题:1) 这是否也适用于 XLSB?2)**0(零)**是什么意思?十六进制值 *30* 或十六进制值 *00*(请记住,我们使用的是十六进制编辑器)? (2认同)

小智 16

新版本,现在您还有GC =尝试用这些替换DPB和GC

DPB ="DBD9775A4B774B77B4894C77DFE8FE6D2CCEB951E8045C2AB7CA507D8F3AC7E3A7F59012A2"GC ="BAB816BBF4BCF4BCF4"

密码将是"测试"

  • 如果粘贴的值比现有的值短,则用零填充空白 (3认同)
  • 这仍然有用吗?我试图改变我的GC和DPB,但有两个问题...... 1. bin文件中的两个值都是不同的大小然后给出,所以输入这些需要filesize进行更改.2. DPB值不以"结束,但从它开始...看起来像这样:`Name ="VBAProject".. HelpContextID ="0".. VersionCompatible32 ="393222000".. CMG ="5250FEAE54B254B251B751B7" ..DPB ="A4A60800084F254F25B0DB50250596D1EDAC ....,......."...` (2认同)

小智 13

  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/


Qbi*_*bik 6

如果你处理.xlsm文件而不是.xls你可以使用旧方法。我尝试使用方法进行多次修改,vbaProject.bin.xlsmDBP->DBx不起作用,也改变了值也DBP不起作用。所以我非常惊讶以下方法有效:
1. 另存.xlsm.xls.
2. 使用DBP->DBx上的方法.xls
3.不幸的是,使用修改后的.xls文件时可能会出现一些错误,我必须另存.xls.xlsx并添加模块,然后另存为.xlsm.