GMSViewer
Утилита для просмотра и редактирования файлов c расширением GMS (CorelDraw global macro storage).
Системные требования
Операционная системаWindows 2000 или выше
Как использовать
Ассоциируйте файлы с расширением gms с этой программой.
Что может
- Отображать исходный код модулей, а также потоки PROJECT, VBFrame и немного dir, остальные потоки отображаются в hex-виде.
- Редактировать код модулей и несжатый текст (PROJECT и VBFrame).
- Сохранять дамп потока в файл.
- Распаковывать сжатые данные из потока в файл.
- Удалять элементы дерева (не советую удалять что-либо кроме __SRP_XX потоков, при удалении модуля он не удаляется из dir).
- Перестравивать PROJECT. Это позволяет снять простую защиту в виде пароля или восстановить видимость скрытых модулей.
- Перестраивать dir поток, делая все модули доступными для редактирования. ВНИМАНИЕ - при перестройке будет удалена информация о справочных файлах (help context) и аргументы условной компиляции.
- Удалять ссылки на tlb и dll. В сочетании с опцией понижения версии это позволяет конвертировать простые gms из поздних версий CorelDraw в более ранние. Если gms использует типы данных из поздних версий, сконвертированный таким образом файл откроется в CorelDraw X3, но вы не сможете его скомпилировать.
- Удалять P-код. Удаляет P-код из модулей, очищет поток _VBA_PROJECT и удаляет _SRP_XX потоки. Это существенно уменьшает объём GMS, лечит инфицированные файлы.
- Понижать версию typeLib, заменяя содержимое потока "VBA Project Data". В сочетании с перестройкой dir потока позволяет открывать GMS в ранних версиях CorelDraw.
Пример понижения версии
Открываем файл
Jpg_Pdf_Export.gms, в диалоговом окне обработки высталяем все галочки и нажимаем "сохранить". Теперь этот макрос может работать с CorelDraw X3. Конечно такое сработает не со всеми файлами. Макрос должен быть совместим на уровне исходного кода.
Ссылки
- VBA Language Specification
- Compound File Binary File Format
- Office VBA File Format Structure
- Office Forms Binary File Formats
- Декомпилятор P-кода. Для декомпиляции GMS нужно предварительно удалить 18 байт заголовка.
- vbastomp - разная информация по инфицированию VBA-файлов