Автор: Сергей Чубченко. Дата публикации: 09.10.2026
Визуальная реконструкция форм WPF из BAML и расширенный анализ интерфейсов в VB Decompiler v26.5
Рады сообщить о выпуске VB Decompiler версии 26.5. Главная возможность этого релиза — визуальная реконструкция интерфейсов WPF в скомпилированных .NET-приложениях. Теперь VB Decompiler может восстанавливать окна, страницы и пользовательские элементы управления из ресурсов скомпилированной разметки XAML (BAML) и показывать их структуру в виде формы, избавляя исследователя от необходимости вручную разбирать данные ресурсов.
Версия 26.5 также существенно расширяет существующие средства просмотра форм Windows Forms и Visual Basic 5.0/6.0, улучшает реконструкцию Select Case в VB Native Code, поддерживает больше функций библиотек времени выполнения VB5 и VB6 и завершает масштабное обновление терминологии в 22 локализациях интерфейса.
Визуальная реконструкция форм WPF из скомпилированного BAML
Приложения WPF обычно хранят описание интерфейса в виде ресурсов скомпилированной разметки XAML, называемых BAML. В них сохраняется значительная часть сведений об окнах и элементах управления приложения, однако разбирать будущий интерфейс непосредственно по скомпилированным структурам долго и неудобно.
VB Decompiler v26.5 читает такие ресурсы и восстанавливает визуальное представление окон, страниц и пользовательских элементов управления WPF. Распространённые элементы отображаются в ожидаемых местах: кнопки, надписи, поля ввода, флажки, переключатели, раскрывающиеся и обычные списки, изображения. Исследователь сразу получает общее представление об интерфейсе и может быстрее понять назначение и внутреннюю организацию незнакомого .NET-приложения.
Окно WPF, восстановленное непосредственно из BAML-ресурсов скомпилированного приложения.
Реконструкция реальной компоновки WPF
Интерфейсы WPF редко состоят из элементов, размещённых по фиксированным координатам. Их внешний вид определяется контейнерами компоновки и правилами изменения размеров и выравнивания каждого элемента. Поэтому новый движок реконструкции понимает основные системы компоновки WPF:
Grid, включая строки и столбцы фиксированного размера, Auto и пропорционального размера (*).
StackPanel с горизонтальной и вертикальной ориентацией.
DockPanel с учётом направления стыковки отдельных элементов.
Canvas для элементов интерфейса с явно заданным положением.
Вложенные контейнеры, сочетающие несколько способов компоновки в одном окне.
При реконструкции учитываются явно заданные размеры, внешние и внутренние отступы, выравнивание, ориентация, стыковка, а также объединение строк и столбцов Grid. Без этих сведений даже правильно распознанные элементы управления не позволили бы восстановить реальную структуру исходной формы.
Вложенная компоновка реального WPF-приложения: элементы размещены согласно сохранённым правилам размеров и выравнивания.
Меню, вкладки, деревья, списки и сложные элементы интерфейса
Средство просмотра WPF не ограничивается простыми элементами ввода. Версия 26.5 восстанавливает и те структуры интерфейса, которые часто лучше всего раскрывают порядок работы с программой:
элементы с вкладками, группы и разворачиваемые панели;
главные меню с исходной иерархией, вложенными пунктами и разделителями;
строки состояния и встроенные в них панели;
элементы ListView с заголовками столбцов и поддерживаемыми статически заданными данными;
элементы TreeView со статически заданными узлами;
статически заданные пункты раскрывающихся списков;
упрощённые представления ленточных интерфейсов, областей навигации и закрепляемых панелей.
Даже если сложный интерфейс, зависящий от конкретной библиотеки, невозможно воспроизвести во всех деталях, восстановленная иерархия всё равно показывает, какие компоненты навигации и представления данных присутствовали в исходном приложении.
Восстановленный интерфейс WPF, сочетающий меню, дерево, вкладки, группы элементов управления и средства представления данных.
Восстановленные свойства, изображения и пользовательские элементы управления
Когда в скомпилированных ресурсах имеются необходимые данные, VB Decompiler восстанавливает имена элементов управления, видимый текст и заголовки, всплывающие подсказки, параметры шрифта, цвета фона, состояния доступности и видимости. Встроенные изображения и фоны форм загружаются как часть реконструированного интерфейса, включая прозрачность PNG и степень непрозрачности фоновых изображений.
Приложения могут использовать собственные либо сторонние элементы WPF, недоступные средству просмотра. VB Decompiler не скрывает такие элементы, а выводит замещающие области с указанием исходных типов WPF. Исследователь видит место неподдерживаемого элемента и понимает, какой тип следует изучить отдельно.
Встроенная графика, прозрачность и фон формы сохраняются в восстановленном интерфейсе WPF.
Практическая реконструкция, а не снимок экрана
WPF поддерживает огромное разнообразие шаблонов, стилей, привязок данных, пользовательских элементов и динамически создаваемых интерфейсов. Поэтому реконструкция является приближённой, а не попиксельно точной; особенно сложные или формируемые во время выполнения компоновки могут отображаться частично. Задача средства просмотра — восстановить полезное представление о внешнем виде и структуре формы по скомпилированному приложению, и в большинстве случаев оно предоставляет именно такой контекст.
Прямой переход от элементов WPF к обработчикам их событий пока недоступен, поскольку модель событий WPF существенно отличается от Windows Forms. В текущей версии средство просмотра WPF сосредоточено на восстановлении внешнего вида и структурной организации интерфейса.
Расширенная реконструкция Windows Forms и форм VB6
Движок визуальной реконструкции .NET Windows Forms, появившийся в версии 26.4, также получил существенное расширение совместимости:
полная поддержка иерархии меню, включая контекстные меню;
щелчок по пункту меню в визуальном представлении теперь открывает соответствующее событие Click;
поддержка пользовательских событий Windows Forms, отображаемых в списке с префиксом @, и более точное сопоставление стандартных событий;
правильная обработка MinimumSize без замены значения ClientSize;
поддержка логических свойств ресурсов и корректно экранированных кавычек в текстовых свойствах;
наследование окружающих значений ForeColor и BackColor, разбор цветов из Color.FromArgb и числовых битовых масок FontStyle;
правильный учёт порядка наложения элементов .NET, благодаря которому небольшие элементы не скрываются за крупными при отсутствии явно заданного контейнера.
Расширенное средство просмотра Windows Forms восстанавливает иерархию меню и показывает стандартные и пользовательские события.
Теперь также поддерживаются объекты VB6 SSTab, MSComctlLib.StatusBar, MSComctlLib.ListView, MSComctlLib.ProgressBar и MSComctlLib.TreeView, а там, где это применимо, — их аналоги в .NET. Индикаторы выполнения могут отображаться как самостоятельные элементы VB6 и как части строки состояния .NET.
Сложная форма VB6 с новыми поддерживаемыми элементами, строкой состояния и индикатором выполнения.
Улучшенная декомпиляция VB Native Code
Версия 26.5 заметно улучшает реконструкцию блоков Select Case в Visual Basic Native Code. Кроме того, расширена и исправлена эмуляция функций среды выполнения, через которые компилятор Visual Basic реализует высокоуровневые операции языка.
Блок Select Case, восстановленный улучшенным движком декомпиляции из скомпилированного VB Native Code.
Для msvbvm60.dll улучшена обработка rtcVarBstrFromByte, __vbaVarIdiv, __vbaR8Str и __vbaR4Str, а также исправлена обработка __vbaObjIs и __vbaFileSeek.
Добавлена поддержка функций msvbvm50.dll: __vbaAryRebase1Var, __vbaChkstk, __vbaNew, __vbaStrI2 и __vbaStrI4. Исправлена обработка rtcCurrentDir, rtcIRR, rtcMIRR, rtcR8ValFromBstr, rtDecFromVar, __vbaFreeObj, __vbaAryCopy, __vbaFileLock, __vbaFileSeek, __vbaLateMemSt, __vbaLateMemStAd, __vbaNextEachCollVar и __vbaVarIndexStore.
Исправлены ещё две редко встречающиеся проблемы движка: теперь правильно обрабатываются индексы VTable в таблицах методов Native Code и одномерные массивы, у которых число ячеек совпадает с максимальным целым значением.
Добавлены недостающие переводы функций аналитики, трассировки, переименования, поиска процедур и AI Helper. Исправлены термины реверс-инжиниринга, повреждённые строки и параметры сообщений; новые тексты сохранены в прежних ограничениях по длине, чтобы не обрезаться в существующих элементах интерфейса.
Версия уже доступна
VB Decompiler v26.5 расширяет визуальный анализ приложений от Windows Forms и классических форм VB до скомпилированных интерфейсов WPF и одновременно продолжает совершенствовать движок Native Code и повседневную работу исследователей. Новую версию можно скачать на странице загрузки. Владельцы лицензий с действующей подпиской на обновления могут установить её в рамках своей текущей лицензии.