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

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

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

Новые возможности, развитие .NET декомпиляции и полностью переработанная документация в VB Decompiler 12.4


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

Поиск функций по имени внутри всего проекта

Я думаю ни для кого не секрет, как сложно анализировать огромный проект с сотнями классов, форм, и десятками, а то и сотнями процедур внутри каждого модуля. Порой, найдя нужный код, впоследствии мы помним только имя функции, в которой он был найден. Или нам нужно быстро перейти к той или иной процедуре, но мы не помним в каком она классе. Во всех этих случаях будет крайне полезно воспользоваться новой возможностью VB Decompiler. Для этого необходимо нажать комбинацию клавиш "Ctrl" + "T" или выбрать в меню "Tools" -> "Find procedure", а затем ввести имя искомой функции или процедуры для поиска. Вы также можете ввести только часть имени, и поиск все равно попытается найти нужные процедуры. Если процедур более одной, то будут представлены все найденные варианты, и Вы сможете переходить к ним двойным щелчком по имени в представленном списке.

Запрос на поиск функций в VB Decompiler

Поиск функций по имени в VB Decompiler

Поиск ссылок на функции для C# .NET и Visual Basic .NET

Начиная с версии 10.8, в VB Decompiler присутствует функционал поиска ссылок в коде на любую функцию в дереве объектов для Visual Basic 5.0 и 6.0 приложений. Начиная с текущей версии 12.4, данный функционал реализован и для приложений C# .NET и Visual Basic .NET. Достаточно в дереве объектов щелкнуть правой кнопкой мыши по любой функции или процедуре, выбрать пункт меню "Find references" и декомпимлятор произведет анализ всей программы на предмет вызовов выбранной функции в коде других процедур. Все найденные процедуры и функции, в которых вызывается искомая, будут выведены в виде списка и Вы сможете перейти по ним для анализа простым двойным щелчком.

Поиск ссылок на функцию в VB Decompiler

Найденные ссылки на функцию в VB Decompiler

Существенное улучшение декомпилятора .NET

Декомпиляция C# и Visual Basic .NET приложений продолжает развиваться. Теперь поддерживается преобразование условных переходов "goto" в условные блоки "if { }" включая вложенные. Это существенно улучшает читаемость кода. Также проведена большая работа над эвристическим анализом таких сравнений и декомпилятор теперь может объединять несколько условных сравнений в один "if { }", содержащий в себе набор из нескольких условий. Помимо этого, производится эвристический разбор основных вариантов конструкций "Operators.CompareString" и их преобразование в более понятные глазу сравнения. Все это приятно улучшает читаемость кода и делает его анализ более комфортным.

Обработка блоков C# If в VB Decompiler

Еще одна обработка блоков C# If в VB Decompiler

Эвристический анализ .NET кода теперь также нагляднее отображает "switch" конструкции. "goto" переходы анализаируются и часть преобразуется в "break", а технические переходы фильтруются. Также внесены улучшения в распознавание последнего звена "switch" для фильтрации лишних служебных команд компилятора и выравниваний.

Обработка блоков C# switch в VB Decompiler

Улучшен анализ блоков "try". Внесен ряд улучшений в разбор стека множественных "try" блоков и переходов на блок "finally".

Обработка блоков C# try в VB Decompiler

Полностью обновленная документация

Документация, это всегда больное место любого большого проекта, который постоянно развивается. Очень часто документация не успевает за ростом возможностей продукта и Вам приходится узнавать о нововведениях VB Decompiler из статей, подобных этой. Более того, множество информации в документации давно не обновлялось и к сожалению не отражало существенной части нового функционала продукта.
В версии 12.4 была проведена огромная работа над документацией. Все разделы были переписаны, причем сразу на четырех языках. Еще на трех языках были внесены только самые критичные изменения. И на одном появилась совсем новая документация, которой не было ранее. Итого, 4 из 18 языков, на которых присутствует документация VB Decompiler теперь актуализованы и еще 4 переработаны.

Так как документация фактически писалась заново, она готовилась в новом PDF формате с удобным оглавлением для быстрого перехода. Надеюсь, эта работа не прошла зря и Вам будет гораздо комфортнее изучать возможности VB Decompiler, узнавая о его функционале из единого источника.

Русская документация в VB Decompiler

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

А теперь немного о тех функциях, которые были добавлены в предыдущей версии VB Decompiler, но о которых подробных публикаций увы еще не было.

Переименование переменных

Вы давно просили, и эта просьба была услышана и реализована. Теперь вы можете переименовать любую переменную внутри любой функции или процедуры для более комфортного анализа кода. Для этого достаточно щелкнуть правой кнопкой мыши по любой переменной в коде, выбрать в контекстном меню "Rename variable" и ввести новое имя. Переменная будет переименована во всех частях данного кода. Также поддерживается откат изменений, для чего нужно в контекстном меню выбрать "Undo renaming". Декомпилятор анализирует каждое переименование и не позволит переименовать переменную в ключевое слово или другую существующую переменную, что избавит Вас от необходимости ручной проверки своих действий. Данный функционал на текущий момент реализован для Visual Basic 5.0 и 6.0 приложений, скомпилированных в P-Code и Native Code.

Переименование переменных 1 в VB Decompiler

Переименование переменных 2 в VB Decompiler

Переименование переменных 3 в VB Decompiler

Улучшения VB6 Native Code и P-Code декомпиляции

Начиная с версиии 12.3 декомпилятора, проведена большая работа по добавлению поддержки декомпиляции различных OLE объектов и их свойств и методов внутри длекомпилированного кода. Расширена поддержка декомпилируемых API из msvbvmXX.dll библиотек. Внесены различные исправления и улучшения в эмулятор машинного Native Code.

Улучшения VB6 Native Code и P-Code декомпиляции в VB Decompiler

Файлы локализации

В дополнение к переработанной документации, многие файлы локализации интерфейса были переработаны. Добавлена поддержка Персидской локализации. В итоге, на сегодняшний день, декомпилятор имеет локализацию на 24 языка, а также документацию на 18 языках, 4 из которых обновлены вместе с англоязычной версией до актуального состояния.

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

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



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





Комментарии

отсутствуют

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


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

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

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

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