2016-03-15 755 views

回答

6

我從來沒有成功地恢復與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,那麼代碼很可能是不可恢復的。

+0

這工作完美! @florentbr非常感謝你! – denfromufa

+0

實際上其中一個模塊沒有提取,雖然notepad.exe在隨機字符之間顯示了一些代碼。 – denfromufa

+1

該模塊可能已損壞而無法解壓縮和恢復。欲瞭解更多信息:http://www.wordarticles.com/Articles/Formats/StreamCompression.php –

相關問題