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

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

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

Декомпилятор, Дизассемблер, HEX редактор


Рад представить очередное обновление VB Decompiler! Основные усилия при разработке этого релиза были направлены на удобство использования декомпилятора при анализе кода. Изменения назревали давно и на данный момент должны сильно повысить удобство при использовании продукта. Но обо всем по порядку.



Переходы между функциями

Несмотря на то, что данная возможность появилась еще в прошлой версии, мало кто о ней знает или использует на практике. Именно поэтому я хотел бы рассказать о ней подробнее. При анализе кода очень часто в той или иной функции идет вызов других функций или процедур. Раньше приходилось искать вызываемую функцию в дереве со списком модулей и процедур после чего переходить в нее для просмотра. Теперь все упростилось - достаточно дважды щелкнуть по имени вызываемой функции внутри кода. Декомпилятор сам отыщет нужную функцию и откроет для просмотра (ссылки пока не подсвечиваются). Возврат в предыдущую функцию сделать также просто: для этого служит горячая клавиша Esc. Также переход можно осуществить кнопками со стрелками, расположенными над деревом объектов.



VB Decompiler Переходы между функциями

HEX Редактор

В декомпилятор теперь встроен современный и удобный HEX редактор, позволяющий редактировать анализируемый файл как побайтно, так и использовать блочные копирования и вставки. Поддерживается отмена сделанных изменений (функции Undo и Redo), выделение и копирование блоков кода. В редакторе присутствует функция умного перехода по адресам. При этом адреса можно вводить как в виде Offset'ов, так и в виде виртуальных адресов VA. Допускается использование приставки "loc_" перед адресом. Единственное условие - адрес должен быть в HEX виде.



VB Decompiler HEX Редактор

Новый формат главного окна

Существенным изменением в новой версии продукта является разделение главного экрана с кодом на вкладки. Во вкладке "Disassembler" теперь отображается код низкого уровня. Для проектов, откомпилированных в Native Code это код на языке ассемблера, для P-Code проектов это псевдокод VB. Также присутствует окно редактирования программы во встроенном HEX редакторе. При переходе в ту или иную функцию она автоматически обрабатывается и выводится во всех окнах, а в HEX редакторе делается переход на адрес начала функции. Автоматический переход на начало объекта просмотра в HEX редакторе работает также и для форм. Для этого необходимо в настройках включить опцию "Show offsets" в разделе "Forms".



VB Decompiler Новый формат главного окна

Декомпиляция "If" конструкций в Native Code

Начиная с версии 9.4 декомпилятор поддерживает обработку If ... Else ... End If конструкций в проектах, откомпилированных в Native Code. Для включения режима обработки If конструкций необходимо в настройках активировать опцию "Process If ... End If blocks" в разлеле "Decompilation". При этом код подобный нижеследующему:



Source code

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

Будет представлен следующим образом:



VB Decompiler Декомпиляция If конструкций в Native Code

Стоит заметить, что при отключении данной опции код будет представлен хоть и без обработки If блоков, но информативнее чем ранее. Начиная с версии 9.4 декомпилятор помечает адреса внутри кода, на которые идет переход - референсами, с указанием адреса, с которого идет обращение:



VB Decompiler Нет парсинга If конструкций в Native Code

Поддержка увеличенных шрифтов в Windows

По многочисленным просьбам интерфейс VBDecompiler бы адаптирован для корректного отображения в операционных системах с включенным режимом увеличения шрифтов (125 и 150 процентов).



Автоматический выбор языка интерфейса

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



VB Decompiler Автоматический выбор языка интерфейса

Исправленна и улучшена поддержка плагинов

Начиная с версии 9.4 Plugins SDK был расширен рядом функций для доступа к дизассемблированному коду. Теперь имеется возможность считать как декомпилированный код той или иной функции так и дизассемблированный. Причем имеются функции для доступа к коду из активного окна программы (к коду функции, исследуемой пользователем в данный момент времени), а также к любой функции программы (если отключена опция Fast decompilation).
В дополнении к этому были исправлены недочеты, приводящие к ошибкам в плагинах при чтении возвращаемых декомпилятором данных. Теперь стабильность работы плагинов значительно увеличена! Спешим напомнить. Уже не первый год действует акция: "Напиши полезный плагин и получи лицензию на VB Decompiler бесплатно". Если у Вас есть интересные идеи на тему плагинов - обязательно свяжитесь с нами. Если тема окажется интересной для нас, и Вы сможете ее реализовать в новом плагине, мы предоставим Вам лицензионную копию VB Decompiler.



Другие приятные улучшения

В новой версии продукта также были сделаны различные улучшения в плане юзабилити. Теперь при щелчке по функциям и процедурам в дереве объектов фокус автоматически перемещается на код, а выделенный элемент дерева продолжает подсвечиваться, информируя о выбранной функции.
При щелчке по любому элементу дерева правой кнопкой, вызывается меню, позволяющее скопировать путь внутри дерева. Данная функция очень полезна при работе в команде и необходимости объяснить, где размещен код. Исправлено сохранение координат размещения окна декомпилятора. Теперь сохраняются не только линейные размеры окна но и его размещение на экране.
Еще одним приятным улучшением является фильтрация пустых папок внутри дерева объектов. Теперь если в программе нет форм, то папка Forms не будет выводиться. Тоже касается и папок UserControls и папки Project, если проект состоит только из модулей.



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



* Visual Basic are registered trademarks of Microsoft Corporation.





Комментарии

отсутствуют

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


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

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

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

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