如何读取从vbaProject.bin提取的hexstream的vba代码?

我有一个损坏的Excel vbaproject.bin.xlam加载项中提取。 我怎样才能读取从这个bin文件提取的VBA代码作为hexstream的模块? 我正在使用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.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,那么代码很可能是不可恢复的。