Рад представить очередное обновление VB Decompiler! Основные усилия при разработке этого релиза были направлены на удобство использования декомпилятора при анализе кода. Изменения назревали давно и на данный момент должны сильно повысить удобство при использовании продукта. Но обо всем по порядку.
Переходы между функциями
Несмотря на то, что данная возможность появилась еще в прошлой версии, мало кто о ней знает или использует на практике. Именно поэтому я хотел бы рассказать о ней подробнее. При анализе кода очень часто в той или иной функции идет вызов других функций или процедур. Раньше приходилось искать вызываемую функцию в дереве со списком модулей и процедур после чего переходить в нее для просмотра. Теперь все упростилось — достаточно дважды щелкнуть по имени вызываемой функции внутри кода. Декомпилятор сам отыщет нужную функцию и откроет для просмотра (ссылки пока не подсвечиваются). Возврат в предыдущую функцию сделать также просто: для этого служит горячая клавиша Esc. Также переход можно осуществить кнопками со стрелками, расположенными над деревом объектов.
HEX Редактор
В декомпилятор теперь встроен современный и удобный HEX редактор, позволяющий редактировать анализируемый файл как побайтно, так и использовать блочные копирования и вставки. Поддерживается отмена сделанных изменений (функции Undo и Redo), выделение и копирование блоков кода. В редакторе присутствует функция умного перехода по адресам. При этом адреса можно вводить как в виде Offset’ов, так и в виде виртуальных адресов VA. Допускается использование приставки «loc_» перед адресом. Единственное условие — адрес должен быть в HEX виде.
Новый формат главного окна
Существенным изменением в новой версии продукта является разделение главного экрана с кодом на вкладки. Во вкладке Disassembler теперь отображается код низкого уровня. Для проектов, откомпилированных в Native Code это код на языке ассемблера, для P-Code проектов это псевдокод VB. Также присутствует окно редактирования программы во встроенном HEX редакторе. При переходе в ту или иную функцию она автоматически обрабатывается и выводится во всех окнах, а в HEX редакторе делается переход на адрес начала функции.
Автоматический переход на начало объекта просмотра в HEX редакторе работает также и для форм. Для этого необходимо в настройках включить опцию Show offsets в разделе Forms.
Декомпиляция «If» конструкций в Native Code
Начиная с версии 9.4 декомпилятор поддерживает обработку If … Else … End If конструкций в проектах, откомпилированных в Native Code. Для включения режима обработки If конструкций необходимо в настройках активировать опцию Process If … End If blocks в разлеле Decompilation. При этом код подобный нижеследующему:
Private Sub Command1_Click()
sTest = Rnd
If sTest = «15» Then
MsgBox «Test complete», vbInformation, «Message header»
Else
MsgBox «Test fail», vbInformation, «Message header»
End If
End Sub
Будет представлен следующим образом:
Стоит заметить, что при отключении данной опции код будет представлен хоть и без обработки If блоков, но информативнее чем ранее. Начиная с версии 9.4 декомпилятор помечает адреса внутри кода, на которые идет переход — референсами, с указанием адреса, с которого идет обращение:
Поддержка увеличнных шрифтов в Windows
По многочисленным просьбам интерфейс VB Decompiler бы адаптирован для корректного отображения в операционных системах с включенным режимом увеличения шрифтов (125 и 150 процентов).
Автоматический выбор языка интерфейса
Инсталлятор был значительно переработан. Теперь в процессе установки декомпилятора определяется язык системы. Если он поддерживается программой, то задается по умолчанию интерфейсом продукта. Также предлагается возможность выбора языка интерфейса самостоятельно, прямо в процессе установки.
Многие переводы сделаны нашими клиентами из разных стран, поэтому в случае нахождения ошибок в переводе просьба писать нам на email.
Исправленна и улучшена поддержка плагинов
Начиная с версии 9.4 Plugins SDK был расширен рядом функций для доступа к дизассемблированному коду. Теперь имеется возможность считать как декомпилированный код той или иной функции так и дизассемблированный. Причем имеются функции для доступа к коду из активного окна программы (к коду функции, исследуемой пользователем в данный момент времени), а также к любой функции программы (если отключена опция Fast decompilation).
В дополнении к этому были исправлены недочеты, приводящие к ошибкам в плагинах при чтении возвращаемых декомпилятором данных. Теперь стабильность работы плагинов значительно увеличена!
Спешим напомнить. Уже не первый год действует акция: «Напиши полезный плагин и получи лицензию на VB Decompiler бесплатно». Если у Вас есть интересные идеи на тему плагинов — обязательно свяжитесь с нами. Если тема окажется интересной для нас, и Вы сможете ее реализовать в новом плагине, мы предоставим Вам лицензионную копию VB Decompiler.
Другие приятные улучшения
В новой версии продукта также были сделаны различные улучшения в плане юзабилити. Теперь при щелчке по функциям и процедурам в дереве объектов фокус автоматически перемещается на код, а выделенный элемент дерева продолжает подсвечиваться, информируя о выбранной функции.
При щелчке по любому элементу дерева правой кнопкой, вызывается меню, позволяющее скопировать путь внутри дерева. Данная функция очень полезна при работе в команде и необходимости объяснить, где размещен код.
Исправлено сохранение координат размещения окна декомпилятора. Теперь сохраняются не только линейные размеры окна но и его размещение на экране.
Еще одним приятным улучшением является фильтрация пустых папок внутри дерева объектов. Теперь если в программе нет форм, то папка Forms не будет выводиться. Тоже касается и папок UserControls и папки Project, если проект состоит только из модулей.