Автор: Сергей Чубченко. Дата публикации: 01.07.2026
Рады сообщить о выпуске VB Decompiler версии 26.4. В этом релизе появилась функция, которая является особым поводом для гордости и не имеет аналогов: полностью статическая визуальная реконструкция форм Windows Forms внутри .NET-сборок, выполняемая целиком собственным движком без загрузки среды выполнения .NET. Кроме того, добавлена визуальная реконструкция декомпилированных меню для приложений Visual Basic 5.0 и 6.0. Вместе с этим версия приносит полноценную навигацию с клавиатуры и мыши для реверс-инженеров, более гибкое определение адреса и расширенную поддержку обфусцированных метаданных .NET.
При анализе .NET-приложения одна из самых трудоёмких задач — понять, как в действительности выглядит форма. До сих пор приходилось читать метод
Декомпилятор теперь обнаруживает формы Windows Forms внутри классов, анализируя их метод
Реконструкция справляется и с насыщенными, реальными интерфейсами, а не только с простыми диалогами. Сложные формы с множеством сгруппированных элементов управления, группами опций и встроенными областями изображений компонуются за один проход.
Визуальная реконструкция — это не просто статичная картинка. Представление формы полностью интерактивно и напрямую связано с декомпилированным кодом, превращаясь в элементы навигации для анализа:
Это позволяет исследовать .NET-приложение так, как его задумывал разработчик — от интерфейса к поведению, а не от сырого кода наружу. Для аналитиков и специалистов по анализу вредоносного ПО, работающих с приложениями на C# и Visual Basic .NET, это по-настоящему востребованная возможность, недоступная на данный момент ни в одном другом инструменте.
Все изображения, размещённые на восстановленных формах, можно извлечь. С помощью плагина FRX Viewer вы можете экспортировать каждое изображение, встроенное в форму, включая иконки и растровые изображения, используемые на элементах управления и фонах. Это полезно как для восстановления ресурсов, так и для документирования интерфейса приложения в ходе анализа. Исходный код плагина доступен на GitHub.
Компоновка формы — лишь часть интерфейса приложения; другая часть — его меню. В версии 26.4 добавлена визуальная реконструкция декомпилированных меню, так что теперь можно точно увидеть, как выглядело меню каждой декомпилированной формы для пользователя.
Опытные реверс-инженеры "живут" на горячих клавишах. В некоторых популярных дизассемблерах и отладчиках это реализовано просто, поскольку их интерфейс по сути представляет собой обычный текст. У VB Decompiler интерфейс богаче — с деревом, окнами кода и редактируемыми полями ввода, поэтому мы разработали контекстно-зависимую систему горячих клавиш: каждая клавиша обрабатывается в зависимости от того, что сейчас в фокусе, и горячие клавиши не мешают обычному вводу текста в полях.
В окне декомпилированного кода теперь доступны следующие горячие клавиши:
В дереве классов, модулей и функций:
Одна и та же клавиша может нести один и тот же смысл в разных контекстах: нажатие X в дереве ищет ссылки на функцию, а нажатие X в коде — ссылки на глобальную переменную. Действие следует за сфокусированным окном, ровно так, как этого ожидает аналитик.
История навигации теперь связана и с боковыми кнопками, имеющимися на большинстве мышей. Кнопки «назад» и «вперёд» перемещают к предыдущей и следующей декомпилированной функции в истории переходов, повторяя действие экранных стрелок навигации. Это небольшое дополнение делает перемещение по цепочке вызовов естественным и позволяет не отрывать руку от мыши во время анализа.
Команда «Trace to this address» стала менее требовательной к точности. Раньше она срабатывала, только если щёлкнуть точно по метке
Этот релиз продолжает укреплять устойчивость .NET-декомпилятора к обфускации:
Визуальная реконструкция форм .NET и новый workflow на горячих клавишах в VB Decompiler v26.4
Рады сообщить о выпуске VB Decompiler версии 26.4. В этом релизе появилась функция, которая является особым поводом для гордости и не имеет аналогов: полностью статическая визуальная реконструкция форм Windows Forms внутри .NET-сборок, выполняемая целиком собственным движком без загрузки среды выполнения .NET. Кроме того, добавлена визуальная реконструкция декомпилированных меню для приложений Visual Basic 5.0 и 6.0. Вместе с этим версия приносит полноценную навигацию с клавиатуры и мыши для реверс-инженеров, более гибкое определение адреса и расширенную поддержку обфусцированных метаданных .NET.
Визуальная реконструкция форм .NET-сборок
При анализе .NET-приложения одна из самых трудоёмких задач — понять, как в действительности выглядит форма. До сих пор приходилось читать метод
InitializeComponent строка за строкой и собирать компоновку в голове. VB Decompiler v26.4 полностью меняет этот подход.
Декомпилятор теперь обнаруживает формы Windows Forms внутри классов, анализируя их метод
InitializeComponent, и восстанавливает визуальное представление каждой формы, показывая её близко к тому, как её видит конечный пользователь. Поддерживается большой набор стандартных элементов управления, включая метки, кнопки, текстовые поля, панели, комбо-боксы, радио кнопки, чекбоксы и другие.
- .NET не требуется: это ключевой момент. VB Decompiler не использует .NET, его среду выполнения или какие-либо его классы для этой работы. Разбор и отрисовка форм — полностью собственный код VB Decompiler, который работает даже в системе, где .NET Framework не установлен вовсе.
- Статическая эмуляция: поскольку форма восстанавливается через статический анализ, а не реальное выполнение, отдельные элементы могут не поддерживаться или отображаться несколько иначе. На практике же около 90% форм отображаются достоверно, давая немедленную и точную картину интерфейса.
- Полная поддержка изображений: изображения, размещённые на элементах управления, фонах и других поверхностях, также отрисовываются, включая иконки, PNG, JPG и другие форматы.
- WPF: на данном этапе поддерживаются только Windows Forms. WPF пока не поддерживается.
Реконструкция справляется и с насыщенными, реальными интерфейсами, а не только с простыми диалогами. Сложные формы с множеством сгруппированных элементов управления, группами опций и встроенными областями изображений компонуются за один проход.
От формы напрямую к коду
Визуальная реконструкция — это не просто статичная картинка. Представление формы полностью интерактивно и напрямую связано с декомпилированным кодом, превращаясь в элементы навигации для анализа:
- Клик для просмотра событий: щёлкните по любому элементу управления на восстановленной форме или выберите его в списке объектов. Боковая панель покажет события, принадлежащие именно этому элементу.
- Двойной клик для перехода к коду: двойной щелчок по событию переносит вас прямо к декомпилированному коду соответствующего обработчика. Не нужно вручную искать в листинге метод, стоящий за кнопкой или текстовым полем.
Это позволяет исследовать .NET-приложение так, как его задумывал разработчик — от интерфейса к поведению, а не от сырого кода наружу. Для аналитиков и специалистов по анализу вредоносного ПО, работающих с приложениями на C# и Visual Basic .NET, это по-настоящему востребованная возможность, недоступная на данный момент ни в одном другом инструменте.
Экспорт изображений форм через плагин FRX Viewer
Все изображения, размещённые на восстановленных формах, можно извлечь. С помощью плагина FRX Viewer вы можете экспортировать каждое изображение, встроенное в форму, включая иконки и растровые изображения, используемые на элементах управления и фонах. Это полезно как для восстановления ресурсов, так и для документирования интерфейса приложения в ходе анализа. Исходный код плагина доступен на GitHub.
Визуальная реконструкция декомпилированных меню
Компоновка формы — лишь часть интерфейса приложения; другая часть — его меню. В версии 26.4 добавлена визуальная реконструкция декомпилированных меню, так что теперь можно точно увидеть, как выглядело меню каждой декомпилированной формы для пользователя.
- Полная поддержка Visual Basic 5.0 и 6.0: реконструкция меню работает для приложений VB5 и VB6 независимо от типа компиляции. Полностью поддерживаются как P-Code, так и Native Code, без разницы в результате.
- Меню для каждой формы: меню отображается в заголовке формы, давая целостную картину каждого окна — его элементов управления и структуры меню вместе.
- .NET-формы: для .NET-форм реконструкция меню на данный момент поддерживается лишь частично и будет расширена в будущих версиях.
Полноценный workflow с клавиатуры и мыши для реверс-инженеров
Опытные реверс-инженеры "живут" на горячих клавишах. В некоторых популярных дизассемблерах и отладчиках это реализовано просто, поскольку их интерфейс по сути представляет собой обычный текст. У VB Decompiler интерфейс богаче — с деревом, окнами кода и редактируемыми полями ввода, поэтому мы разработали контекстно-зависимую систему горячих клавиш: каждая клавиша обрабатывается в зависимости от того, что сейчас в фокусе, и горячие клавиши не мешают обычному вводу текста в полях.
В окне декомпилированного кода теперь доступны следующие горячие клавиши:
- N — Переименовать переменную под курсором.
- X — Найти ссылки на глобальную переменную под курсором.
- D — Скопировать текущий код в окно дизассемблера, получив смешанное представление декомпилированного и дизассемблированного кода.
- F4 — Запустить трассировку до адреса в текущей строке.
- Ctrl+Shift+Z — Отменить переименование переменной под курсором (откат именно переименования, независимо от отмены редактирования текста).
В дереве классов, модулей и функций:
- X — Найти ссылки на выбранную функцию в вызовах из других функций.
- G — Перейти к разделу по его пути в дереве.
- Ctrl+C — Скопировать полный путь выбранного узла в дереве (например,
Project -> Modules -> Product.Core.IO.Ntfs -> FileSystem -> AlternateDataStreamExists(file, streamName)), который затем можно вставить в поле «Jump to the section» для мгновенного перехода. - Space или Insert — Пометить или снять пометку с элемента в дереве.
Одна и та же клавиша может нести один и тот же смысл в разных контекстах: нажатие X в дереве ищет ссылки на функцию, а нажатие X в коде — ссылки на глобальную переменную. Действие следует за сфокусированным окном, ровно так, как этого ожидает аналитик.
Навигация вперёд/назад боковыми кнопками мыши
История навигации теперь связана и с боковыми кнопками, имеющимися на большинстве мышей. Кнопки «назад» и «вперёд» перемещают к предыдущей и следующей декомпилированной функции в истории переходов, повторяя действие экранных стрелок навигации. Это небольшое дополнение делает перемещение по цепочке вызовов естественным и позволяет не отрывать руку от мыши во время анализа.
Более гибкое определение адреса в команде «Trace to this address»
Команда «Trace to this address» стала менее требовательной к точности. Раньше она срабатывала, только если щёлкнуть точно по метке
loc_. Теперь команда анализирует начало текущей строки, отбрасывает ведущие пробелы и определяет виртуальный адрес: если это метка loc_, за которой следует адрес, трассировка запускается автоматически. На практике это означает, что можно щёлкнуть в любом месте строки, а не строго по метке, и трассировщик всё равно определит нужный адрес.
Расширенная поддержка обфусцированных метаданных .NET
Этот релиз продолжает укреплять устойчивость .NET-декомпилятора к обфускации:
- Таблица FieldPtr: добавлена поддержка таблицы
FieldPtrв .NET, которая часто встречается при анализе обфусцированных .NET-приложений. - Большие индексы аргументов: добавлена поддержка аргументов процедур .NET с индексами, превышающими 32-битное знаковое целое — конструкция, встречающаяся только в обфусцированном коде.
Исправления ошибок
- Огромные обфусцированные процедуры .NET: исправлена обработка чрезвычайно больших обфусцированных процедур .NET.
- Обфусцированные имена объектов в P-Code: исправлена декомпиляция методов P-Code с обфусцированными именами объектов, которая ранее могла приводить к зависанию декомпилятора.
- Инструкция IL «callvirt»: исправлен случай, когда инструкция IL
callvirtмогла декомпилироваться некорректно, если номер записи в таблице был равен 255. - Плагин FRX Viewer: исправлена проблема, из-за которой плагин не загружался корректно, если предыдущий открытый файл не содержал изображений и была попытка запуска плагина. Исходный код исправленной версии плагина также доступен на GitHub.
(C) Сергей Чубченко, разработчик VB Decompiler
* Visual Basic, Visual Studio и Windows являются зарегистрированными товарными знаками корпорации Microsoft.