Декомпилятор
Декомпиля́тор — это программа, транслирующая исполняемый модуль (полученный на выходе компилятора) в относительно эквивалентный исходный код на языке программирования высокого уровня.
Декомпиля́ция — процесс воссоздания исходного кода декомпилятором.
Декомпиляция, в частности, используется при обратной разработке программ.
Удачность декомпиляции зависит от объема информации, представленной в декомпилируемом коде; байт-код, используемый большинством виртуальных машин (таких как Java Virtual Machine или .NET Framework Common Language Runtime) часто содержит обширные метаданные, делающие декомпиляцию вполне выполнимой, в то время как машинный код более скуден и сложен в декомпиляции. В частности трудночитаемыми представляются вызовы подпрограмм или функций с косвенными адресами.
Если известно на каком языке была написана декомпилируемая программа, то в первую очередь дизассемблируются и анализируются библиотеки времени исполнения (runtime library) компилятора с этого языка, так как в основном компиляция программы сводится к вызовам с различными параметрами процедур из этих библиотек. Кроме того, многие компиляторы позволяют увидеть, в какой ассемблерный код превращаются операторы программы после компиляции. Эти конструкции становятся шаблонами для декомпилятора, поэтому процесс декомпиляции в некотором смысле похож на распознавание в машинном коде конечного набора подобных шаблонов. Легче всего распознаются вызовы и возврат из процедур. Они служат границами для восстановления операторов процедуры.
Некоторые компиляторы и инструменты используемые после компиляции создают обфусцированный код, с целью затруднить декомпиляцию.
Примеры декомпиляторов
- .NET Reflector
- Delphi Decompiler
- JAD — JAva Decompiler
- VB Decompiler
- dotPeek — бесплатный .NET декомпилятор
- В СССР декомпиляторы с языков PL/M-80 и Фортран-80 разрабатывались Н. А. Надольским в лаборатории Э. М. Пройдакова в ИПУ АН (1983—1984 гг).
См. также
- Категория:Дизассемблеры
- Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
Что значит декомпилировать файл и как декомпилируются файлы exe
Декомпиляция — это процесс восстановления исходного кода программы из машинного кода. Декомпилятор — это программа, которая может совершить процесс декомпиляции. Декомпилятор может быть разным:
- декомпилятор exe;
- декомпилятор с;
- декомпилятор ассемблера;
- и др.
Декомпиляция — это любимый процесс хакеров, хотя в некоторых случаях этот процесс помогает и с хорошими намерениями. Пока звучит как непонятная «каша», но давайте разбираться во всем по порядку.
Компиляция и декомпиляция — это противоположные процессы
Все мы знаем, что программирование может вестись на множестве языков. Всего языков насчитываю т тысячи, наиболее популярных несколько десятков, но их не понимает ни один компьютер. Компьютер понимает только свой собственный машинный язык, который состоит из единиц и нулей. Для того чтобы компьютер понял, что написал программист , необходим а компиляция.
Компиляция — это процесс преобразования программы в двоичный код. Двоичный код — это низкоуровневый машинный код, который понимает «железо». Код , написанный разработчиком , — это код высокого уровня, который понимает разработчик и интерпретаторы с компиляторами. Не будем углубляться глубоко в эту тематику, потому что есть языки компилируемые, есть интерпретируемые, есть «нейтральные», у которых код компилируется не в машинный код, а в собственный байт-код. Сейчас не об этом.
Итак, компиляция — это «перевод» программ, написанных разработчиками , на понятный компьютеру машинный язык. Этот процесс считается необратимым. Поэтому полностью восстановить исходный код программы после ее компиляции не может ни одна программа. Хотя сам такой процесс существует, и называется он декомпиляция.
Декомпиляция — это обратный процесс компиляции, также его называют «обратная разработка» или «реверс-инженерия». Суть ее сводится к простому — восстановить исходный код программы. Причем «хорошего» в этом процессе мало. Очень редко декомпиляцию применяют в добрых целях, например, чтобы восстановить исходники. Декомпи ля ция не восстанавливает исходники, а лишь предоставляет общую и запутанную структуру, в которой бывает очень трудно разобраться. Причем при декомпиляции прослеживается важная зависимость — чем сложнее и больше программа, тем менее точным будет конечный результат. Плю с и ногда разработчики применя ю т метод обфу ск аци и ( запутывания) исходного кода, тогда после декомпиляции такой программы исходный код практически не читаем.
Так для чего тогда нужна декомпиляция? Получить двоичный код программы может любой, а получить ее исходники — это уже проблема. Но бывают случаи, когда без исходников невозможно осуществить какое-либо действие с программой, например:
- полностью скопировать программу или какой-то отдельный ее функционал;
- взломать программ у б ез понимания ее структуры и архитектуры;
- внедрить вирус в программ у б ез понимания того, как построена программа;
- чтобы «обойти» лицензию или вообще отключить проверку лицензии;
- и др.
В основном декомпиляция нужна для «серых» целей, поэтому реверс-инженерия в некоторых странах наказуема законом. А декомпиляция — это важная часть реверс-инженерии, хотя очень часто эти два понятия считают идентичными.
Для того чтобы декомпиляция была более-менее успешной , важно знать , на каком языке написана программа или какой файл нужно декомпилировать ; от этого будет зависеть , какой инструмент нужно применять, например , декомпилятор «ехе» и декомпилятор «С» — это будут две разные программы. Есть , конечно , «общие» декомпиляторы, которые работают сразу со множеством языков, но результаты еще менее точны, чем у специальных декомпиляторов.
Сегодня мы рассмотрим , какой можно использовать декомпилятор, чтобы декомпилировать файл «ехе».
Декомпилятор ехе
Как мы знаем, ехе-файлы применяются в операционной системе Windows. В самой Виндовс по умолчанию не установлен «декомпилятор ехе», поэтому придется использовать программы «со стороны», которые могут помочь в решении этой задачи. Не будем задаваться вопросом, для чего вам это нужно. Нужно — значит , нужно.
Декомпиляторы ехе-файлов:
- VB Decompiler. Это самый популярны й декомпилятор ехе. Он ориентирован на декомпиляцию ехе-файлов, которые были разработаны при помощи языка программирования Visual Basic. Полностью бесплатный декомпилятор ехе.
- EMS Source Rescuer. Это тоже бесплатная программа, но она ориентирована на ехе-файлы, которые были созданы при помощи языков программирования Delphi или С++.
- ReFox. На нем отлично проходит декомпиляция ехе, если декомпилируемый файл был создан при помощи Visual FoxPro или FoxBase. Условно-бесплатная программ а с небольшим бесплатным периодом, далее придется платить.
- DeDe. Отличный декомпилятор ехе, но работает только с языком программирования Delphi.
- DnSpy. Это очень мощный инструмен т д ля «потрошения» программ и файлов exe. Декомпилирует программы на С# и Visual Basic. Помимо декомпилятора , несет в себе еще множество других инструментов: отладчик, НЕХ-редактор, редактор сборки и др.
- IDA Pro. Это профессиональный комплекс инструментов для полноценной реверс-инженерии. Среди прочих инструментов легко найти декомпилятор ехе. Однако у этой программы есть один минус — она очень дорогая с неадекватно завышенными ценами. Поэтому выхода два: на официальном сайте попробовать бесплатную демо-версию и решить свою проблему или тщательно поискать слитую в свободный доступ нужную версию программы — такие тоже имеются. Есть и третий выход — купить лицензию, но тогда будьте готовы заплатить за нее от 900 и до 4000$.
Заключение
Чтобы правильно подобрать декомпилятор для ехе-файлов, нужно знать , на каком языке написан желанный файл. Только в этом случае можно получить более-менее адекватный исходный код программы. Если вы не знаете, на каком языке написан ехе, тогда нужно будет пропустить ваш файл через несколько декомпиляторов , и тогда один из них выдаст вам искомый результат.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Декомпиляция
Декомпиля́тор — это программа, транслирующая исполняемый модуль (полученный на выходе компилятора) в относительно эквивалентный исходный код на языке программирования высокого уровня. Для сравнения, дизассемблер транслирует исполняемый модуль программы в текст на языке ассемблера.
Декомпиля́ция — процесс воссоздания исходного кода декомпилятором.
Удачность декомпиляции зависит от объема информации, представленной в декомпилируемом коде; байт-код, используемый большинством виртуальных машин (таких как JVM для машинный код более скуден и сложен в декомпиляции.
Если известно на каком языке была написана декомпилируемая программа, то в первую очередь дизассемблируются и анализируются библиотеки времени исполнения (run-time library) компилятора с этого языка, так как в основном компиляция программы сводится к вызовам с различными параметрами процедур из этих библиотек. Кроме того, многие компиляторы позволяют увидеть, в какой ассемблерный код превращаются операторы программы после компиляции. Эти конструкции становятся шаблонами для декомпилятора, поэтому процесс декомпиляции в некотором смысле похож на распознавание в машинном коде конечного набора подобных шаблонов. Легче всего распознаются вызовы и возврат из процедур. Они служат границами для восстановления операторов процедуры. В СССР декомпиляторы с языков PL/M-80 и Фортран-80 разрабатывались Н.А. Надольским в лаборатории Э.М. Пройдакова в ИПУ АН (1983—1984 гг).
Декомпиляция, в частности, используется при обратной разработке программ.
См. также
Wikimedia Foundation . 2010 .
При подготовке материала использовались источники:
https://dic.academic.ru/dic.nsf/ruwiki/55456
https://codernet.ru/articles/drugoe/chto_znachit_dekompilirovat_fajl_i_kak_dekompiliruyutsya_fajlyi_exe/
https://dic.academic.ru/dic.nsf/ruwiki/890887