我有一个从 .xlam
插件中提取出的损坏的 Excel vbaproject.bin
文件。如何以HEX流的形式读取从该bin文件中提取出的带有vba代码的模块?我正在使用 oletools
,更多细节请参见此线程:
https://bitbucket.org/decalage/oletools/issues/38/extracted-vba-hex-files-from-vbaprojectbin
我试图使用oletools恢复VBA代码,但并没有成功。不过,我使用了oledump,有一些成功的经验:
http://blog.didierstevens.com/programs/oledump-py/
对于处理受损工作簿,我发现oledump更适用。如果你想试试,可以下载oledump.py:
https://github.com/DidierStevens/DidierStevensSuite/raw/master/oledump.py
你还需要安装依赖模块“olefile”:
C:\temp>pip install olefile
接下来,使用7zip打开您的工作簿并提取“xl\vbaProject.bin”。 如果oledump无法读取vbaProject.bin,则还可以提取“xl\vbaProject.bin\VBA\”中存在的每个模块。
然后执行此命令以显示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代码,那么这段代码很可能是无法恢复的。