Декомпиляция — это процесс восстановления исходного кода программы из машинного кода. Декомпилятор — это программа, которая может совершить процесс декомпиляции. Декомпилятор может быть разным:
декомпилятор exe;
декомпилятор с;
декомпилятор ассемблера;
и др.
Декомпиляция — это любимый процесс хакеров, хотя в некоторых случаях этот процесс помогает и с хорошими намерениями. Пока звучит как непонятная «каша», но давайте разбираться во всем по порядку.
Компиляция и декомпиляция — это противоположные процессы
Все мы знаем, что программирование может вестись на множестве языков. Всего языков насчитывают тысячи, наиболее популярных несколько десятков, но их не понимает ни один компьютер. Компьютер понимает только свой собственный машинный язык, который состоит из единиц и нулей. Для того чтобы компьютер понял, что написал программист, необходима компиляция.
Компиляция — это процесс преобразования программы в двоичный код. Двоичный код — это низкоуровневый машинный код, который понимает «железо». Код, написанный разработчиком, — это код высокого уровня, который понимает разработчик и интерпретаторы с компиляторами. Не будем углубляться глубоко в эту тематику, потому что есть языки компилируемые, есть интерпретируемые, есть «нейтральные», у которых код компилируется не в машинный код, а в собственный байт-код. Сейчас не об этом.
Итак, компиляция — это «перевод» программ, написанных разработчиками, на понятный компьютеру машинный язык. Этот процесс считается необратимым. Поэтому полностью восстановить исходный код программы после ее компиляции не может ни одна программа. Хотя сам такой процесс существует, и называется он декомпиляция.
Декомпиляция — это обратный процесс компиляции, также его называют «обратная разработка» или «реверс-инженерия». Суть ее сводится к простому — восстановить исходный код программы. Причем «хорошего» в этом процессе мало. Очень редко декомпиляцию применяют в добрых целях, например, чтобы восстановить исходники. Декомпиляция не восстанавливает исходники, а лишь предоставляет общую и запутанную структуру, в которой бывает очень трудно разобраться. Причем при декомпиляции прослеживается важная зависимость — чем сложнее и больше программа, тем менее точным будет конечный результат. Плюс иногда разработчики применяют метод обфускации (запутывания) исходного кода, тогда после декомпиляции такой программы исходный код практически не читаем.
Так для чего тогда нужна декомпиляция? Получить двоичный код программы может любой, а получить ее исходники — это уже проблема. Но бывают случаи, когда без исходников невозможно осуществить какое-либо действие с программой, например:
полностью скопировать программу или какой-то отдельный ее функционал;
взломать программу без понимания ее структуры и архитектуры;
внедрить вирус в программу без понимания того, как построена программа;
чтобы «обойти» лицензию или вообще отключить проверку лицензии;
и др.
В основном декомпиляция нужна для «серых» целей, поэтому реверс-инженерия в некоторых странах наказуема законом. А декомпиляция — это важная часть реверс-инженерии, хотя очень часто эти два понятия считают идентичными.
Для того чтобы декомпиляция была более-менее успешной, важно знать, на каком языке написана программа или какой файл нужно декомпилировать; от этого будет зависеть, какой инструмент нужно применять, например, декомпилятор «ехе» и декомпилятор «С» — это будут две разные программы. Есть, конечно, «общие» декомпиляторы, которые работают сразу со множеством языков, но результаты еще менее точны, чем у специальных декомпиляторов.
Сегодня мы рассмотрим, какой можно использовать декомпилятор, чтобы декомпилировать файл «ехе».
Декомпилятор ехе
Как мы знаем, ехе-файлы применяются в операционной системе Windows. В самой Виндовс по умолчанию не установлен «декомпилятор ехе», поэтому придется использовать программы «со стороны», которые могут помочь в решении этой задачи. Не будем задаваться вопросом, для чего вам это нужно. Нужно — значит, нужно.
Декомпиляторы ехе-файлов:
VB Decompiler. Это самый популярный декомпилятор ехе. Он ориентирован на декомпиляцию ехе-файлов, которые были разработаны при помощи языка программирования Visual Basic. Полностью бесплатный декомпилятор ехе.
EMS Source Rescuer. Это тоже бесплатная программа, но она ориентирована на ехе-файлы, которые были созданы при помощи языков программирования Delphi или С++.
ReFox. На нем отлично проходит декомпиляция ехе, если декомпилируемый файл был создан при помощи Visual FoxPro или FoxBase. Условно-бесплатная программа с небольшим бесплатным периодом, далее придется платить.
DeDe. Отличный декомпилятор ехе, но работает только с языком программирования Delphi.
DnSpy. Это очень мощный инструмент для «потрошения» программ и файлов exe. Декомпилирует программы на С# и Visual Basic. Помимо декомпилятора, несет в себе еще множество других инструментов: отладчик, НЕХ-редактор, редактор сборки и др.
IDA Pro. Это профессиональный комплекс инструментов для полноценной реверс-инженерии. Среди прочих инструментов легко найти декомпилятор ехе. Однако у этой программы есть один минус — она очень дорогая с неадекватно завышенными ценами. Поэтому выхода два: на официальном сайте попробовать бесплатную демо-версию и решить свою проблему или тщательно поискать слитую в свободный доступ нужную версию программы — такие тоже имеются. Есть и третий выход — купить лицензию, но тогда будьте готовы заплатить за нее от 900 и до 4000$.
Заключение
Чтобы правильно подобрать декомпилятор для ехе-файлов, нужно знать, на каком языке написан желанный файл. Только в этом случае можно получить более-менее адекватный исходный код программы. Если вы не знаете, на каком языке написан ехе, тогда нужно будет пропустить ваш файл через несколько декомпиляторов, и тогда один из них выдаст вам искомый результат.
Другое