如何从vbaProject.bin中提取的十六进制流中读取vba代码?

den*_*ufa 8 com excel hex vba ole

我有一个vbaproject.bin.xlam加载项中提取的损坏的Excel .如何从这个bin文件中提取的vba代码作为HEX流读取模块?我正在使用oletools,在这个帖子中有更多细节:

https://bitbucket.org/decalage/oletools/issues/38/extracted-vba-hex-files-from-vbaprojectbin

Flo*_* B. 9

我从未成功用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
Run Code Online (Sandbox Code Playgroud)

接下来,使用7zip打开工作簿并解压缩"xl\_vbaProject.bin".如果oledump无法读取vbaProject.bin,您还可以提取"xl\_vbaProject.bin\VBA \"中的每个模块.

然后执行此命令以显示vbaProject.bin中的所有模块:

C:\temp>python oledump.py --vbadecompresscorrupt  C:\temp\vbaProject.bin
Run Code Online (Sandbox Code Playgroud)

要显示模块中的代码,请添加-s,后跟模块编号:

C:\temp>python oledump.py --vbadecompresscorrupt -s 3  C:\temp\vbaProject.bin
Run Code Online (Sandbox Code Playgroud)

如果读取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
Run Code Online (Sandbox Code Playgroud)

现在,如果此时您还没有看到一行VBA,那么代码很可能无法恢复.