В AutoCAD нашли «осиротевшие» VBA-проекты в файлах DWG
"Осиротевшие" VBA-проекты обнаружили в файлах AutoCAD
Исследователь Дидье Стивенс обнаружил "осиротевшие" VBA-проекты в файлах формата DWG. Эти проекты содержатся внутри OLE-файлов, которые встраиваются в DWG. Ранее код VBA хранился в OLE-файлах, доступных по указателю в заголовке DWG. Теперь найдены файлы, где указатель равен нулю, но OLE-файл с VBA-проектом присутствует.
VBA-проекты хранятся в OLE-файлах внутри DWG
VBA-код встраивается в файлы AutoCAD DWG как OLE-объект. Для его извлечения можно использовать поиск по всем вложенным OLE-файлам или следовать указателю в заголовке DWG. Указатель находится по смещению 0x24 в заголовке файла. Он ссылается на 16-байтный заголовок, содержащий длину вложенного файла. Инструмент autocad.py помогает найти этот указатель. Если указатель равен нулю, вложенный OLE-файл отсутствует.
"Осиротевшие" VBA-проекты не выполняются в AutoCAD
Исследователь обнаружил два DWG-файла, где указатель на VBA-проект равен нулю, однако OLE-файл с проектом все же присутствует. Такой VBA-проект считается "осиротевшим". AutoCAD не видит "осиротевшие" проекты, поэтому их VBA-код не выполняется при открытии файла. Причина появления "осиротевших" проектов неизвестна. Команда AutoLISP (dictremove (namedobjdict) "ACAD_VBA") удаляет VBA-проект из DWG, возможно, очищая указатель, но оставляя OLE-файл.
Проверка наличия "осиротевших" VBA-проектов
При анализе DWG-файлов с помощью oledump.py следует проверять наличие "осиротевших" VBA-проектов. Необходимо убедиться, что указатель по смещению 0x24 не равен нулю, или использовать скрипт autocad.py. Стандартная установка AutoCAD не поддерживает VBA; для работы с VBA требуется отдельная установка. "Осиротевшие" проекты не представляют угрозы, так как не могут быть выполнены.
Опубликовано в канале 14 октября, 12:38
Каждый материал сайта выходит в канале в тот же момент.
Источник