Профессиональные решения

для защиты Windows приложений

и восстановления исходного кода
Автор: Сергей Чубченко. Дата публикации: 01.07.2026

Визуальная реконструкция форм .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 пока не поддерживается.

VB Decompiler визуально восстанавливает форму .NET Windows Forms без установленного .NET Framework

Реконструкция справляется и с насыщенными, реальными интерфейсами, а не только с простыми диалогами. Сложные формы с множеством сгруппированных элементов управления, группами опций и встроенными областями изображений компонуются за один проход.

Сложная форма .NET Windows Forms с множеством элементов управления, восстановленная VB Decompiler

От формы напрямую к коду


Визуальная реконструкция — это не просто статичная картинка. Представление формы полностью интерактивно и напрямую связано с декомпилированным кодом, превращаясь в элементы навигации для анализа:
  • Клик для просмотра событий: щёлкните по любому элементу управления на восстановленной форме или выберите его в списке объектов. Боковая панель покажет события, принадлежащие именно этому элементу.
  • Двойной клик для перехода к коду: двойной щелчок по событию переносит вас прямо к декомпилированному коду соответствующего обработчика. Не нужно вручную искать в листинге метод, стоящий за кнопкой или текстовым полем.

Это позволяет исследовать .NET-приложение так, как его задумывал разработчик — от интерфейса к поведению, а не от сырого кода наружу. Для аналитиков и специалистов по анализу вредоносного ПО, работающих с приложениями на C# и Visual Basic .NET, это по-настоящему востребованная возможность, недоступная на данный момент ни в одном другом инструменте.

События формы .NET Windows Forms, декомпилированные VB Decompiler

Экспорт изображений форм через плагин FRX Viewer


Все изображения, размещённые на восстановленных формах, можно извлечь. С помощью плагина FRX Viewer вы можете экспортировать каждое изображение, встроенное в форму, включая иконки и растровые изображения, используемые на элементах управления и фонах. Это полезно как для восстановления ресурсов, так и для документирования интерфейса приложения в ходе анализа. Исходный код плагина доступен на GitHub.

Визуальная реконструкция декомпилированных меню


Компоновка формы — лишь часть интерфейса приложения; другая часть — его меню. В версии 26.4 добавлена визуальная реконструкция декомпилированных меню, так что теперь можно точно увидеть, как выглядело меню каждой декомпилированной формы для пользователя.
  • Полная поддержка Visual Basic 5.0 и 6.0: реконструкция меню работает для приложений VB5 и VB6 независимо от типа компиляции. Полностью поддерживаются как P-Code, так и Native Code, без разницы в результате.
  • Меню для каждой формы: меню отображается в заголовке формы, давая целостную картину каждого окна — его элементов управления и структуры меню вместе.
  • .NET-формы: для .NET-форм реконструкция меню на данный момент поддерживается лишь частично и будет расширена в будущих версиях.

VB Decompiler визуально восстанавливает меню декомпилированной формы Visual Basic 6.0

Полноценный 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 в коде — ссылки на глобальную переменную. Действие следует за сфокусированным окном, ровно так, как этого ожидает аналитик.

Горячие клавиши VB Decompiler

Навигация вперёд/назад боковыми кнопками мыши


История навигации теперь связана и с боковыми кнопками, имеющимися на большинстве мышей. Кнопки «назад» и «вперёд» перемещают к предыдущей и следующей декомпилированной функции в истории переходов, повторяя действие экранных стрелок навигации. Это небольшое дополнение делает перемещение по цепочке вызовов естественным и позволяет не отрывать руку от мыши во время анализа.

Более гибкое определение адреса в команде «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.