как читать код vba из шестнадцатеричного потока, извлеченного из vbaProject.бин?

у меня поврежден Excel vbaproject.bin извлеченные из .xlam надстройки. Как я могу читать модули с кодом vba, извлеченным из этого файла bin в виде шестнадцатеричных потоков? Я использую oletools, подробнее в этой теме:

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

1 ответов


мне так и не удалось восстановить код VBA с помощью oletools. Однако у меня был некоторый успех с 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.закром." Вы также можете извлечь каждый модуль, присутствующий в " xl\vbaProject.bin\VBA\", если oledump не может прочитать vbaProject.бункер.

затем выполните эту команду, чтобы отобразить все модули в vbaProject.бин:

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, то код, скорее всего, не подлежит восстановлению.