Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

GMSViewer

Coreldraw global macro storage (gms) files viewer

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

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. Конечно такое сработает не со всеми файлами. Макрос должен быть совместим на уровне исходного кода.

Ссылки

  1. [VBA Language Specification](https://learn.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal)
  2. [Compound File Binary File Format](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-cfb)
  3. [Office VBA File Format Structure](https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-ovba)
  4. [Office Forms Binary File Formats](https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-oforms)
  5. [Декомпилятор P-кода](https://github.com/bontchev/pcodedmp). Для декомпиляции GMS нужно предварительно удалить 18 байт заголовка.
  6. [vbastomp](https://vbastomp.com) - разная информация по инфицированию VBA-файлов