tôi không bao giờ thành công trong việc khôi phục mã VBA với oletools. Tuy nhiên tôi đã có một số thành công với oledump:
http://blog.didierstevens.com/programs/oledump-py/
tôi thấy nó phù hợp hơn để làm việc với một tập tin lỗi. Vì vậy, nếu bạn muốn cung cấp cho nó một thử, tải oledump.py:
https://github.com/DidierStevens/DidierStevensSuite/raw/master/oledump.py
Bạn cũng cần phải cài đặt các module phụ thuộc "olefile":
C:\temp>pip install olefile
Tiếp theo, mở bảng tính của bạn với 7zip và giải nén "xl \ vbaProject.bin". Bạn cũng có thể trích xuất từng mô-đun có trong "xl \ vbaProject.bin \ VBA \" nếu oledump không thể đọc vbaProject.bin.
Sau đó thực hiện lệnh này để hiển thị tất cả các module trong vbaProject.bin:
C:\temp>python oledump.py --vbadecompresscorrupt C:\temp\vbaProject.bin
Và để hiển thị các mã từ một mô-đun, thêm -s tiếp theo là số mô-đun:
C:\temp>python oledump.py --vbadecompresscorrupt -s 3 C:\temp\vbaProject.bin
Nếu đọc vbaProject.bin không thành công, hãy trích xuất mô-đun được nhắm mục tiêu bằng 7zip và thử đọc trực tiếp:
C:\temp>python oledump.py -r -v --vbadecompresscorrupt C:\temp\Module1
C:\temp>python oledump.py -r -v --vbadecompresscorrupt C:\temp\ThisWorkbook
Bây giờ, nếu tại thời điểm này bạn chưa thấy một dòng VBA, thì mã này có lẽ là không thể khôi phục.
Nguồn
2016-03-18 08:14:59
Điều này hoạt động hoàn hảo! @florentbr cảm ơn bạn rất nhiều! – denfromufa
thực sự là một trong các mô-đun đã không trích xuất, mặc dù notepad.exe hiển thị một số mã giữa các ký tự ngẫu nhiên. – denfromufa
Mô-đun có thể quá bị hỏng để được giải nén và phục hồi. Để biết thêm thông tin: http://www.wordarticles.com/Articles/Formats/StreamCompression.php –