我从vbaproject.bin
加载项中提取了损坏的Excel .xlam
。如何从这个bin文件中提取的vba代码作为HEX流读取模块?我正在使用oletools
,在此主题中有更多详细信息:
https://bitbucket.org/decalage/oletools/issues/38/extracted-vba-hex-files-from-vbaprojectbin
答案 0 :(得分:8)
我从未成功恢复使用oletools的VBA代码。但是我在oledump上取得了一些成功:
http://blog.didierstevens.com/programs/oledump-py/
我发现它更适合使用损坏的工作簿。因此,如果您想尝试一下,请下载oledump.py:
https://github.com/DidierStevens/DidierStevensSuite/raw/master/oledump.py
您还需要安装模块依赖项" olefile" :
C:\temp>pip install olefile
接下来,使用7zip打开工作簿并解压缩" xl \ _vbaProject.bin"。 您还可以提取" xl \ vbaProject.bin \ VBA \"中存在的每个模块。如果oledump无法读取vbaProject.bin。
然后执行此命令以显示vbaProject.bin中的所有模块:
C:\temp>python oledump.py --vbadecompresscorrupt C:\temp\vbaProject.bin
要显示模块中的代码,请添加-s,后跟模块编号:
C:\temp>python oledump.py --vbadecompresscorrupt -s 3 C:\temp\vbaProject.bin
如果读取vbaProject.bin失败,请使用7zip解压缩目标模块并尝试直接读取它:
C:\temp>python oledump.py -r -v --vbadecompresscorrupt C:\temp\Module1
C:\temp>python oledump.py -r -v --vbadecompresscorrupt C:\temp\ThisWorkbook
现在,如果此时您还没有看到一行VBA,那么代码很可能无法恢复。