Программы для декомпиляции dll
VB Decompiler представляет собой самое современное и функциональное средство для декомпиляции программ (EXE, DLL, OCX), написанных на Visual Basic 5.0 и 6.0, анализа кода, редактирования строковых и бинарных данных. Как известно, программы, разработанные на Visual Basic'е могут быть скомпилированы либо в интерпретируемый P-Code, либо в выполняемый процессором Native Code.
Так как P-Code представляет собой высокоуровневые команды, то появляется реальная возможность восстановить из этого кода исходный (за исключением безвозвратно утерянных при компиляции имен переменных, непубличных функций, пользовательских типов и т.д. - их восстановить к сожалению не удастся). VB Decompiler восстанавливает большую часть из 1400 команд P-Code и позволяет восстановить до исходного состояния около 85% кода. Это значительно упрощает задачу анализа алгоритмов исследуемой программы и восстановление ее исходного кода.
Если программа была откомпилирована в Native Code, то полученный файл будет содержать оптимизированный машинный ассемблерный код. Его эмуляция и восстановление алгоритма также поддерживается в VB Decompiler, но ввиду полного отсутствия каких либо зацепок в машинном коде - восстановление кода возможно лишь частично и средний процент восстановленного кода обычно порядка 70%. Это средние значения. Естественно, какие то процедуры получится восстановить почти полностью, в каких то уровень восстановления будет мал. В VB Decompiler входит полноценный эмулятор ассемблерного кода, который виртуально выполняет каждую функцию и на основе полученных данных восстанавливает алгоритм. В максимальной лицензии поддерживается функция трассировки ассемблерного кода на эмуляторе, что позволяет анализировать код без его запуска. В VB Decompiler также входит современный дизассемблер, поддерживающий x86/x86-64 инструкции включая MMX, SSE, SSE2 и многие другие. Это позволяет максимально точно дизассемблировать код программы. Используемый анализатор кода отследит все сложные конструкции, такие как For . Next, Select Case, параметры вызовов API функций и все ссылки на строки в дизассемблированном коде.
В общем VB Decompiler идеальное средство для анализа программ в антивирусных лабораториях, а также максимально функционален в случае потери исходных кодов и необходимости частично восстановить проект.
Программы для защиты программного обеспечения
DotFix NiceProtect
DotFix NiceProtect представляет собой защиту для Вашего программного обеспечения с возможностями виртуализации кода, обфускации служебных данных и упаковки конечного проекта. Защита устанавливается на уже откомпилированные Windows приложения и не требует модернизации исходного кода.
Ни для кого не секрет, что любые лицензионные проверки в коде могут быть найдены крэкером и взломаны. Чтобы этого избежать требуется комплексный подход. DotFix NiceProtect поддерживает все современные средства защиты, а также кое что уникальное, не имеющее аналогов.
Из общепринятых возможностей стоит отметить: антиотладку (не дает запустить программу под отладчиком), анти-трассировку (не дает пошагово выполнять программу в отладчике), мутацию и виртуализацию кода (защищает критичный код), защиту секции кода (с восстановлением при запуске), а также сжатие конечного защищенного файла (чтобы снизить влияние защиты на разрастание размера конечного файла).
Несмотря на столь широкие возможности продукта, в DotFix NiceProtect есть также уникальный функционал, не имеющий аналогов у конкурентов: обфускация служебных данных для Delphi, Free Pascal (Lazarus) и Visual Basic приложений. При активации обфускатора - все имена форм, модулей, классов, а также входящих в них элементов управления, событий и процедур будут заменены на мусорные, что значительно усложнит поиск нужной формы и функции взломщиком. Даже в случае снятия остальных частей защиты! Данный функционал поддерживает все версии Delphi начиная с Delphi 5 и заканчивая Delphi 10 Seattle и Delphi 10.1 Berlin, Free Pascal, а также Visual Basic 5.0 и 6.0 приложения.
В итоге мы рады представить Вам отличный инструмент для защиты кода, который рекомендуется использовать во всех программных продуктах.
DotFix LiteProtect
Для желающих внести изменения в защищаемую программу на этапе обработки, в программу встроен скриптовый язык DotFix Script, на котором можно легко реализовать любые дополнительные возможности защиты программ. Данный язык документирован и имеет примеры использования в папке scripts.
DotFix LiteProtect имеет встроенный анализатор компилятора/упаковщика EXE файлов. С его помощью можно определить на чем написана или чем защищена та или иная программа.
[закачек: 9563]
[размер: 1.3 Mb]
VB AntiCrack
VB AntiCrack предназначен для усложнения взлома программ, написанных на Visual Basic 5.0 и 6.0. Ключевой возможностью является скрытие от глаз взломщика всех строковых данных, используемых в Вашей программе Это существенно усложнит поиск нужного кода и взлом.
Продукт совместим со всеми сторонними защитами кода (включая нашу разработку DotFix NiceProtect), так как работает на уровне исходного кода программы. Полностью поддерживаются практически любые файлы проектов VBP. VB AntiCrack сам находит все входящие в Ваш продукт формы, модули, классы и т.д. и защищает все строки в них. Вам нужно лишь сделать Backup оригинального проекта.
VB AntiCrack будет отличным дополнением к любому виртуализатору и обфускатору кода, так как в области защиты всех строк они бессильны.
Дизассемблеры и декомпиляторы исполняемых файлов
В комментариях к статьям меня часто спрашивают где взять тот или иной инструмент, используемый в исследовании. По возможности я всегда указываю ссылки, но теперь настало время самых мощных инструментов, а именно дизассемблеров и декомпиляторов исполняемых файлов. Сразу уточню терминологию. Дизассемблирование - преобразование программы из двоичного кода к ее ассемблерному представлению. Декомпиляция - процесс воссоздания исходного кода программы.
Скриншот программы dnSpy
Скриншот программы IDA Pro Advanced
IDA Pro (сокращение от Interactive DisAssembler) - один из моих основных инструментов для реверс-инжиниринга и разбора файлов. Это интерактивный дизассемблер и отладчик с поддержкой множества форматов исполняемых файлов для большого числа процессоров и операционных систем. Чтобы перечислить все его возможности потребуется целая книга. Но даже тут возможности IDA не заканчиваются. Плагин Hex-Rays для IDA Pro позволяет декомплировать ассемблерный листинг в более-менее человекопонятный псевдокод, по синтаксису похожий на C. В некоторых случаях это значительно облегчает работу. Просто так приобрести IDA Pro частным лицам практически невозможно, и дело не только в непомерной цене, а в том, что автор придерживается абсолютно неадекватной политики в плане продаж. К счастью, несколько последних версий этого замечательного дизассемблера, несмотря на все трудности, были успешно слиты в свободный доступ. Это IDA Pro Advanced 6.8, последняя доступная версия, которая работает с 32-битными системами, а также IDA Pro Advanced 7.0 и IDA Pro Advanced 7.2 для 64-битных систем. Если по каким-то причинам вы не можете использовать варез, то на офсайте есть бесплатные демо-версии с урезанным функционалом.
Скриншот программы Interactive Delphi Reconstructor
IDR (Interactive Delphi Reconstructor) - бесплатный декомпилятор исполняемых файлов и динамических библиотек. В отличие от IDA Pro, этот декомпилятор создан специально для разбора файлов, написанных на языке Delphi. Сейчас проект прекратил развитие, если какие изменения и вносятся, то исключительно косметические. Исходники для доработки открыты. Лично я пользуюсь стабильным комплектом Interactive Delphi Reconstructor 2.6.0.1.
Скриншот программы VB Decompiler Pro
Еще один специализированный декомпилятор - VB Decompiler Pro. Он работает с программами (EXE, DLL, OCX), написанными на Visual Basic. В случае, если приложение собрано в p-code, декомпилятор может разобрать его практически до исходного кода. Но даже если приложение скомпилировано в native code, в этом случае VB Decompiler анализирует и восстанавливает довольно много инструкций, чтобы насколько это возможно приблизить ассемблерный код к исходному. Это сильно упростит задачу анализа алгоритмов исследуемой программы. Честные граждане могут воспользоваться бесплатной Lite-версией с офсайта, для любителей полных версий софта есть релиз VB Decompiler Pro 10.0. Антивирусы могут ругаться на активатор, но тут вы уже сами решайте что делать.
Конечно, это далеко не полный список инструментов для дизассемблирования и декомпиляции, который есть в свободном доступе. Например, та же набирающая популярность Ghidra от АНБ может составить конкуренцию IDA Pro с Hex-Rays. Но я в этой статье перечислил лишь те программы, которыми пользуюсь сам и которые упоминаются в статьях на этом сайте.
Программы для декомпиляции скриптов Python
Python - это один из наиболее популярных современных языков программирования. Его поддерживают в качестве скриптового языка различные программы, на нем написано огромное количество различных модулей, плагинов и тому подобное. Исходные тексты на Python можно компилировать в файлы с расширением .pyc, после компиляции они превращаются в нечитаемые бинарные данные. Это далеко не текстовый файл, поэтому, чтобы внести изменения или изучить алгоритм работы такого скрипта, потребуется привести его к исходному виду, то есть декомпилировать. Как ни странно, при всей популярности языка Python, инструментов для реверсинга .pyc-файлов создано не так уж и много.
Все декомпиляторы для Python, которые я встречал, написаны на нем же самом. С одной стороны, это облегчает понимание их работы, дает возможность доработки. Но с другой стороны, ничего не будет работать "из коробки", для запуска потребуется немало напрячься. Все перечисленные в статье инструменты представляют собой оболочки для автоматизации работы с готовыми декомпиляторами.
Скриншот программы Easy Python Decompiler
Easy Python Decompiler 1.3.2
Скриншот программы PjOrion
Ren'Py
Unrpyc - декомпилятор для скриптов, созданных в игровом движке Ren'Py. Они хоть и пишутся на Python, но имеют свой внутренний формат и после компиляции не поддаются анализу обычными средствами. Декомпилятор работает из командной строки и требует наличие установленного Python.
Скриншот программы Py2Exe Binary Editor
Py2Exe Binary Editor не совсем относится к декомпиляторам, но используется как вспомогательная утилита для извлечения всех компонентов из исполняемых файлов, созданных при помощи py2exe. С помощью Py2Exe Binary Editor можно легко извлечь Python-скрипт для дальнейшего анализа. Как и сам py2exe, редактор работает только со 2-й версией Python.
Py2Exe Binary Editor 0.1
На этом заканчивается и без того скромный список декомпиляторов для Python. Если у вас есть что-нибудь для этих же задач, то большая просьба поделиться. Особенно интересуют рабочие декомпиляторы для Python 3.x.
Методика восстановления исходного кода
Как часто у Вы бывало такое, когда теряются исходники одной из разработок без возможности восстановления? Вот бы перевести EXE файл обратно в исходный код, да? Но знакомые либо не могут ничем помочь, либо называют данную идею полнейшим бредом. Конечно, того что Вы написал в своей программе с точностью до байта уже не восстановить, но частично восстановить исходный код из EXE все же можно. Об этом и пойдет речь в данной статье.
Dede by DaFixer
Если Вы используете Win32dasm в качестве ддизассемблера (о ужас) - программа может экспортировать данные в понятный ему формат. Вообще весьма позитивный продукт. Плюс ко всему программа может сгенерировать исходник, который можно открыть в Delphi. Главный минус - DeDe не может выдергивать из EXE компоненты используемые в программе, потому в исходнике будет множество нераспознанных типов данных.
SourceRescuer
Еще один декомпилятор Delphi, но попроще. Может восстанавливать только формы и генерировать заголовок pas файлов. Главное отличие от DeDe - работает мгновенно и имеет более эргономичный интерфейс. Чтож, одной программе дано иметь крутой интерфейс, другой - большие возможности. тут ничего не поделаешь. Из главных особенностей программы можно выделить то, что она генерирует шаблон исходника не только в формате Delphi, но и в формате C++ Builder. Думаю эта фишка не лишняя, так как после компиляции билдерские программы от дельфевых мало чем отличаются, а вот декомпилировать их только как Delphi код - не всегда разумно. Программа эта распространяется в друх видах: GUI и консольном и требует покупки лицензии.
REC by Giampiero Caprino
Полное название - the Reverse Engineering Compiler. Программа предназначена для декомпиляции файлов, написанных на языках использующих С++. Так как C++ очень мощный язык, который не приемлит виртуальных машин и огромных GUI библиотек, то можно сделать очень логичный вывод, что избыточной информации он в EXE практически не вставляет. Отсюда имейте ввиду, что данный декомпилятор всего лишь пытается распознать C++ код, а по большей части как бы конвертирует код с ассемблера на C++. Не удивляйтесь, если увидите в исходнике что нибудь типа:
Это нормально. И поверте, лучше уж исследовать это, чем:
Хотя кому как. Некоторые знают ассемблер даже лучше чем ненормативную лексику.
Смею еще Вас предупредить, что программа пока работает не очень стабильно, по крайней мере версия 1.4. Потому остается только пожелать проекту его дальнейшее развитие, так как программа нужная и думаю пригодится не только исследователям, но и разработчикам.
DJ Java Decompiler
А это уже декомпилятор Java классов. Довольно удобен и прост в использовании. открываешь в нем класс и уже созерцаешь исходник. Имеется довольно мощная подсветка синтаксиса, поиск и настройки. Также есть браузер классов и объектов. В общем довольно мощный и интересный декомпилятор. Жаль только EXE файлы написанные на Java не декомпилирует.
ReFox by Jan Brebera
Со слов людей, работающих на FoxPro - довольно мощный декомпилятор кода, напинанного на фоксе. Причем версия фоксы не критична - декомпилятор берет и Dos и Windows версии. Декомпилятор поддерживает не только стандартные, но и закриптованные фоксой модули. Даже если код был скомпилирован под Macintosh - декомпилятор возмется его декомпилировать и даже портирует выходной вариант под DOS/Windows. В общем, если Вы долго разрабатывали экономическую программу для своего отдела 20 лет назад и ненароком держали исходники на стареньком винте, который приказал долго жить - скачайте ReFox - он сочтет за честь восстановить Ваш код.
Декомпиляторы Visual Basic’а
Я не зря решил их все объединить под общим заголовком. Во первых их очень много, во вторых все декомпиляторы разделяются по возможностям на три типа: декомпиляторы форм, редакторы форм и декомпиляторы кода. Также есть декомпиляторы, сочетающие в себе несколько возможностей - о них мы поговорим в самом конце. А сейчас представлю тебе все три типа декомпиляторов.
Один из самых стабильных декомпиляторов форм. Хотя, больше ничем и не примечателен. Объявления API функций делает без параметров, от чего пользы мало, код не декомпилирует вообще. Имеет довольно подробную документацию и просит за свое использование немало зеленых президентов. В общем, если Вам не жалко денег и нужно декомпилировать только элементы интерфейса - можно использовать.
VB Editor by HEXMAN
Абсолютно бесплатный редактор форм и лежащих на них объектах. Если Вы занимаетесь русификацией программ, но не можете ничего поделать с программами, написанными на VB (Restorator тут бессиллен) - смело используйте данную утилиту. Она просто рай для локализаторов интерфейса. Программа имеет двухязычный интесфейс (Французский и Английский), причем по дефолту почему-то грузится Французский. Причем поможет и сгенерировать форму, на основе сделанных изменений, так что вполне подойдет и как альтернатива уже упомянутого выше VBRezQ.
VBReFormer by Sylvain Bruyere
Еще одна работа французских программистов. Эта программа несколько помощнее предыдущей. Помимо просмотра и изменения форм предоставляет также возможность извлечь из EXE всякие изображения, которые обычно лежат в frx файлах. Trial версия позволяет только просматривать результаты. При этом не только запрещается сохранять результат, но и вообще программа постоянно обнуляет буфер обмена дабы исключить и возможность копирования. Отсюда прежде чем запускать данную утилиту - убедитесь, что в буфере нет нужных и еще не сохраненных данных. Помимо всего прочего программа предоставляет для обзора некоторые данные из заголовка EXE файла, потому адрес точки входа в программу и Image Base можно узнать прямо не отходя от VBReFormer’а. Еще один плюс софтины - она умеет распознавать используемые в декомпилируемой программе ActiveX файлы и позволяет просмотреть некоторые их свойства и методы. Жаль только что не использует эту информацию при генерации форм - там все ActiveX’ы выглядят немного убого, без свойств и присвоенных им данных. При желании эта тулза может обыскать весь Ваш жесткий диск в поисках программ, написанных на VB. Зачем это нужно - не знаю, наверное для тестирования возможностей программы на разных EXE’шниках.
Еще один декомпилятор. Пытается декомпилировать и формы и p-code, но представляет всю эту информацию в таком убогом виде на экран, что ничего понять невозможно неподготовленному человеку. Также как и предыдущая утилита - умеет извлекать графику из программ. Пытается декомпилировать p-code, правда пока декомпилирует только методы, а с передаваемыми в них параметрами туго. В общем, если довести интерфейс до ума - вполне нормальный продукт бы получился наверное, но автору судя по всему лень этим заниматься.
exdec by josephco
Наверное самый известный на момент написания статьи декомпилятор пикода. Как говорится старенький, но рабочий. Возможность у программы всего одна - декомпилить p-code в том виде в каком он есть. То есть того кода который писал программист на VB Вы не увидите, а вот то что сгенерил компилятор - да, причем в довольно читабельном для профессионала виде. В комплекте с программой идут примеры и небольшой туториал. Туториал поможет хотя бы немного понять, что значит вся эта декомпилированная гора псевдокода и как ее читать, потому если Вы разбираетесь с P-Code’ом впервые - очень советую обратить на этот туториал внимание.
Почти полный аналог exdec, только написанный китайскими разработчиками. Результат своей работы не только выводит на экран, но и сохраняет в файле ParseVB.txt. На случай падения программы (а такое частенько случается) - этот файл здоровски помогает.
p32Dasm by DARKER
Лучшая альтернатива exdec’у и VBParser’у. Программа в отличии от двух предыдущих написана на VB (exdec и VBParser написаны на C++) и динамично развивается последнее время. Имеет подсветку синтаксиса, калькулятор адресов, умеет декомпилировать с определенного смещения в файле, а также подобно дизассемблерам способна представить все строки и функции используемые в программе удобным списком с возможностью мгновенно перейти на выбранную позицию. Главный недостаток - относительная нестабильность работы и медленная скорость, в остальном же программа стоит того, чтобы ее посмотреть. Распространяется бесплатно.
VBDE by iorior
Довольно неплохой декомпилятор, причем бесплатный. Декомпилит формы (правда без ActiveX’ов, если они присутствуют). Выдает адреса на все процедуры, а если это возможно, то выводит не только адрес процедуры, но и ее имя, что значительно упрощает анализ. Пытается декомпилировать Native Code, хотя в большинстве случаев кроме операторов сложения, вычитания и вывода MessageBox'а - ничего декомпилировать не может. Несмотря на это программа довольно удобная и стабильная, потому рекомендую всегда иметь под рукой.
Semi VB Decompiler by vbgamer45
Довольно интересный проект. До недавнего времени распространялся в исходниках на VB, а теперь стал коммерческим. Несмотря на некоторые баги в работе, бесплатная версия может довольно многое. Декомпилируются формы, содержащаяся в них графика и названия процедур. Также определяются используемые в программе API функции. Помимо этого, предоставляется информация из EXE заголовков. Есть даже попытки декомпилировать P-Code. Так что продукт создает довольно приятное впечатление. Огромный респект автору за открытость исходного кода - думаю многим полезно будет в них заглянуть, чтобы понять, как декомпилируется VB код. Честности ради скажу - исходник этот жутко неоптимизированно написан, и порой смотря на некоторые участки кода хочется плакать, хотя этот код и выполняет свои функции. Но повторюсь - это бесплатно, а бесплатное не обсуждается.
VB Decompiler by DotFix Software
Вот мы и дошли до моего декомпилятора Visual Basic. При его создании я пытался внести как можно больше возможностей, при этом не загромождая интерфейс тем, что никогда не пригодится. В итоге имеем декомпилятор форм, с поддержкой ActiveX’ов лежащих на них, декомпилятор P-Code’а (причем если в бесплатной Lite вресии он напоминает p32Dasm’овский, то в коммерческой версии программа восстанавливает более 85% исходного кода, что часто помогает востанновить нужные потерянные куски), декомпилятор Native Code (да да - полное дизассемблирование, а также восстановление до 60% исходных инструкций) и декомпилятор ссылок на API (при этом они записываются уже в объявленном виде со всем списком параметров). Ясное дело, что подсветка синтаксиса тоже есть и она имеет очень высокую скорость обработки текста. Для каждого модуля с кодом свой список встречающихся там строк с возможностью мгновненно перейти на участок кода, где используется выделенная строка. Присутствует также и поиск, помогающий найти нужный код в активном окне. Резульат своей работы программа может сохранить, причем вместе с кодом и формами сохраняются и frx файлы с графикой и корректно прописываются ссылки на эти графические объекты в формах. В общем, если Вам требуется наиболее современное и продвинутое средство для частичной, но максимально возможной декомпиляции Native Code и P-Code - предлагаю рассмотреть приобретение коммерческой лицензии на VB Decompiler Pro. Если же декомпиляция в понятный VB код не нужна, а достаточно дизассемблирования Native Code и P-Code - вполне можете ограничиться бесплатной Lite версией VB Decompiler.
Как видим - декомпиляторов полно и их недостатка не наблюдается. При этом резко чувствуется грань между профессиональными и любительскими разработками. Причем эта грань очень велика и в качестве и в цене. Несмотря на это в большинстве случаев можно обойтись бесплатными разработками. Удачи!
Так как p-code представляет собой высокоуровневые команды, то появляется реальная возможность восстановить из этого кода исходный (правда имена переменных и некоторых функций само собой восстановить не удастся). VB Decompiler восстанавливает исходный код из псевдокода максимально близко к оригинальному, поэтому его при некоторых доработках реально довести до компилируемого.
Если программа была откомпилирована в native code, то о полном восстановлении исходника из машинных инструкций не может быть и речи. Но VB Decompiler и здесь поможет анализировать программу. В него встроен мощный дизассемблер и эмулятор команд, позволяющий насколько это возможно приблизить ассемблерный код к исходному. Естественно из-за сложности обработки всякого рода оптимизаций тут не обходится без ошибок сворачивания и вывода неверных инструкций, но для анализа данный метод декомпиляции и свертывания максимально полезен.
VB Decompiler также декомпилирует все Формы и UserControl'ы, расположенные в файле. Для технических нужд декомпилятор помимо прочего отображает смещения каждого контрола на формах.
В общем VB Decompiler идеальное средство для анализа программ и идеально подходит в случае потери исходных кодов и необходимости частично восстановить проект.
VB Decompiler представлен Lite, Personal Educational Home, Business, Business with Tracing Features и Business with Analytic Features версиями
Трассировка кода отдельных процедур и функций в Visual Basic 5.0/6.0 приложениях, скомпилированных в Native Code и P-Code. Код не запускается на процессоре, а исполняется эмулятором.
Генерация Аналитического отчета, содержащего детальную информацию об активности декомпилируемой программы на компьютере пользователя. Аналитик получает полный отчет об участках (процедурах и функциях) программы, производящих те или иные манипуляции с файлами, реестром, окнами, процессами, а также использующие служебнгые функции Visual Basic для вызовов функций по имени (CallByName) и прямого доступа к адресам памяти (VarPtr).
Minimum System Requirements (for v8.4 or older): Pentium 166, 32Mb RAM, Windows 95/98/ME/2k/XP/2003/Vista/2008/7/8/8.1/10
Minimum System Requirements (for v9.0 or later): 1,3 Ghz x86 processor, 1Gb RAM, Windows XP/2003/Vista/2008/7/8/8.1/10
Screenshots of VB Decompiler Pro:
* Microsoft, Windows, and Visual Basic are registered trademarks of Microsoft Corporation.
Читайте также: