GMSViewer
Coreldraw global macro storage (gms) files viewer
- Active · last change 7-27-2025
- ★ 1 on GitHub
README
GMSViewer
Утилита для просмотра и редактирования файлов c расширением GMS (CorelDraw global macro storage).

Системные требования
Операционная система
Как использовать
Ассоциируйте файлы с расширением 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](https://learn.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal)
- [Compound File Binary File Format](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-cfb)
- [Office VBA File Format Structure](https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-ovba)
- [Office Forms Binary File Formats](https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-oforms)
- [Декомпилятор P-кода](https://github.com/bontchev/pcodedmp). Для декомпиляции GMS нужно предварительно удалить 18 байт заголовка.
- [vbastomp](https://vbastomp.com) - разная информация по инфицированию VBA-файлов

