Современные решения

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

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

Декомпиляция .NET приложений в C# код, темная тема и поддержка Mac M1 в VB Decompiler 12.1


Каждая новая версия декомпилятора по традиции несет в себе множество изменений. Но данный релиз - особенный! Он включает в себя несколько настолько существенных улучшений, что по факту можно говорить о данной версии, как о новом продукте. Итак, обо всем по порядку.

Старт эры декомпиляции .NET приложений в C# код

Многие наши клиенты любят VB Decompiler за поддержку декомпиляции не только Visual Basic 5.0 и 6.0 программ, но и дизассемблирования .NET приложений в MS IL код. VB Decompiler почти 20 лет развивает декомпиляцию как кода, скомпилированного в псевдокод P-Code с более 1000 команд и более 500 API врапперов, так и машинного ассемблерного кода (Native Code) с более 600 API врапперов и множеством оптимизаций компилятора. Помимо этого, с 2006 года ведется разработка .NET дизассемблера, который и ранее поддерживал как управляемый Managed код, так и машинный Unmanaged, причем и для 32х и для 64х битных CIL совместимых приложений. Но главная фишка всегда была в том, что декомпилятор не использовал .NET Framework от слова совсем. Никаких классов Reflection! Весь код декомпилятора писался и пишется с нуля и не использует никаких .NET библиотек. На сегодня - это единственный в мире .NET декомпилятор, который работает в любой системе, даже если в ней нет никаких .NET библиотек. Преимуществ у этого масса: нет необходимости искать и подбирать версии .NET, беспроблемная работа в Linux под Wine и в Mac OS через Parallels. Стойкойсть к глюкам при декомпиляции кода, обработанного тем или иным обфускатором. Более того, версии декомпилятора младше 8.5 даже были способны дизассемблировать .NET код под Windows 95! Но это уже скорее история.

C# decompilation via VB Decompiler

И вот, спустя 17 лет и множество подготовительной работы, я рад представить первый релиз декомпилятора IL кода в C# код! Декомпилятор поддерживает любые 32х и 64х битные .NET приложения. Абсолютно неважно, написаны они были на Visual C# .NET или на Visual Basic .NET или на любом другом CIL совместимом языке. Уже сейчас поддерживаются Try ... Catch блоки, конструкции Switch Case, заполнение массивов на стеке и большая часть опкодов байткода IL.

C# try catch decompilation via VB Decompiler

Так как это первая версия, есть и ограничения. Пока поддерживаются хоть и большинство, но не все IL команды. Нет разбора if .. then на циклы. Нет поддержки инициализации массивов через врапперы. Тем не менее, ключевые фишки декомпилятора уже работают. Для каждой строки кода указывается виртуальный адрес в памяти, код по которому можно сразу посмотреть во встроенном HEX редакторе и естественно внести изменения на бинарном уровне. Имеется возможность скопировать декомпилированный код в дизассемблированный для углубленного анализа файла. Поддерживаются функции аналитики для лицензий с такой поддержкой. В общем, все работает также, как и в случае декомпиляторов Visual Basic 6.0. И все это - внутри одного, единого, продукта! Уверен - вы непременно оцените это.

C# switch case decompilation via VB Decompiler

Поддержка Mac M1

Есть распространенное заблуждение, что Visual Basic приложения требуется декомпилировать только в Windows, так как они сами являются Windows приложениями. Тем не менее, сегодня масса аналитиков в антивирусных компаниях используют компьютеры Mac для анализа кода. И для автора продукта это тоже не является тайной. Поэтому было принято решение приобрести соответствующее железо и максимально адаптировать VB Decompiler к работе под Parallels в Mac M1 с учетом несовместимостей в эмуляции стандартных Windows API. Была проведена немалая работа по поиску различных несовместимостей и внесению доработок. И теперь, VB Decompiler прекрасно работает и под Mac M1!

VB Decompiler can be started on Mac M1

Темная тема

С каждым годом, все больше людей начинают использовать в работе темную тему в различных приложениях. Дисплеи становятся лучше, а зрение, увы, хуже. При этом, темная тема позволяет работать с продуктом с меньшим напряжением глаз в темное время суток.

VB Decompiler Dark Theme

В VB Decompiler используется множество самописных визуальных компонентов для лучшего опыта использования продукта. И добавить темную тему было тем еще квестом. Также, был полностью переработан код поддержки внешних тем (который, к слову, имеется с самых ранних версий продукта). И теперь, вместо нескольких настроек цветов и шрифта, имеется гибкий массивный блок настроек, позволяющий существенно изменить подсветку синтаксиса и внешний вид продукта.
Одним из существенных обновлений тем является возможность для каждой настройки шрифта задавать не один шрифт, а семейство и декомпилятор будет по очереди пытаться использовать тот или иной шрифт. Это особенно полезно, когда в Windows нужный шрифт есть, а в Mac или Linux возможно потребуется замена. Так вот, такая замена будет произведена из указанного в теме списка автоматически!

VB Decompiler Dark Theme 2

Если вдруг стандартные темы Вас чем-то не устроят, то всегда можно зайти в папку с VB Decompiler, подпапку "colors", открыть ini файл конфигурации нужной темы и поменять ее под себя. Описание всех настроек, как обычно, есть в документации к продукту.
Также одной из фишек является возможность поменять тему на лету, без перезапуска продукта, даже в случае ручного редактирования файлов темы в процессе работы декомпилятора. И еще одним приятным бонусом является то, что темная тема на 95% поддерживает консоли Steam Deck. Да, вы можете и на них использовать VB Decompiler!

VB Decompiler can be started on Steam Deck console

Обфускация Visual Basic 5.0/6.0 кода

Практически с первых версий декомпилятор поддерживает и обфускацию для защиты Visual Basic приложений от анализа под декомпилятором. Долгое время данный код не менялся. Но в версии 12.1 обфускация была существенно переработана для совместимости с большим числом редких вариаций данных. Также были внесены исправления совместимости.

Obfuscation for Visual Basic 5.0/6.0 applications

Подсветка слов под курсором

Одной из недавно добавленных и существенно доработанных в новой версии фишек декомпилятора, стала подсветка выделенных слов в декомпилированном коде. Работает это предельно просто. Вы щелкаете по слову в коде и все аналогичные слова также выделяются цветом. Цвет, к слову, можно менять в настройках темы. Помимо этого, если вы щелкните по адресу слева от кода и перейдете в окно дизассемблера - декомпилятор сразу перейдет на строку с этим адресом!

VB Decompiler highlight words under the cursor

Улучшение совместимости с Китайской локалью

Для автора VB Decompiler давно не секрет, что чисто юникодовые версии Windows имеют некоторые отличия в работе Ansi версий API функций. Большая часть этих исправлений давно были внесены. Но внезапно выяснилось, что в Китайских версиях Windows 10 и 11 с последними обновлениями появились новые серьезные ошибки в работе некоторых Ansi API функций. Наиболее неприятный момент касается того, что некоторые служебные символы пропадают из строк, делая строку меньше на соответствующее число байт. К сожалению, единственным способом устранить данные проблемы раз и навсегда, было решение полностью отказаться от использования AnsiString там, где в строках могли присутствовать служебные символы, что потребовало переработки существенной части кода.

VB Decompiler works fine on Chinese Windows

Резюме

Как видите, декомпилятор очень существенно преобразился. И, как и всегда, в VB Decompiler новая версия никогда не бывает парой-тройкой исправлений. Это всегда серьезное развитие продукта. И я надеюсь, каждый из Вас это видит и ценит. Как всегда, новая версия уже доступна для загрузки, если Ваша лицензия активна. Если Вы вдруг забыли обновить свою лицензию - сегодня для этого есть очень хороший повод! Благодарю за использование VB Decompiler, он развивается для Вас.

(C) Сергей Чубченко, разработчик VB Decompiler



* Visual Basic and Visual Studio are registered trademarks of Microsoft Corporation.





Комментарии

отсутствуют

Добавление комментария


Ваше имя (на форуме):

Ваш пароль (на форуме):

Комментарии могут добавлять только пользователи,
зарегистрированные на форуме данного сайта. Если Вы не
зарегистрированы, то сначала зарегистрируйтесь тут

Комментарий: