Что значит декомпилировать файл и как декомпилируются файлы 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$.
Заключение
Чтобы правильно подобрать декомпилятор для ехе-файлов, нужно знать , на каком языке написан желанный файл. Только в этом случае можно получить более-менее адекватный исходный код программы. Если вы не знаете, на каком языке написан ехе, тогда нужно будет пропустить ваш файл через несколько декомпиляторов , и тогда один из них выдаст вам искомый результат.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Декомпиляция .exe в исходник
Написал прогу на работе и при переустановке системы потёр сам проект. Среда разработки VS2010. Проект C++/CLI Windows Forms. Попытки восстановить проект различными рекавери к успеху не привели, очевидно, что многие сектора были перезаписаны. Остался только сам релиз.
Копания в гугле привели к выводу, что можно дизассемблировать экзешник и из полученного кода получить нечто С-подобное, но толковых описаний процесса не нашёл. Всё в очень общих чертах и довольно старо.
Буду признателен за любую помощь или подсказку куда копать.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Декомпиляция скрипта оО
Есть длл нужно её декомпилировать и как то запустить исходный код в висуал студио 2010 Как можно.
Декомпиляция программы
Как декомпилировать программу? И как узнать на каком языке она написана?
Декомпиляция dll
Возможна ли декомпиляция dll’ки, защищенной Themida, если есть ThemidaSDK.h и Obfuscator.cpp, с.
Декомпиляция программы, поиск кодировки в полученном коде
Добрый день, Есть необходимость создать программу которая будет которая будет формировать отчеты.
6384 / 3992 / 1590
Регистрация: 09.05.2015
Сообщений: 9,359
Ставите IDA+Hex-Rays, и декомпилите (можно хоть каждую функцию по отдельности, или все сразу). Очень поможет наличие pdb файла. Но все равно код будет очень далек от исходника.
Регистрация: 26.10.2013
Сообщений: 118
Ставил IDA 7.0 + Hex-Rays, дизассемблировал экзешник. а вот что дальше делать не понимаю и мануал толковый найти не получается.
Вопрос мой даже, вероятно, стоит скорректировать: можно ли вообще получить на выхлопе нечто понятное именно для визуал студии?
Прога в принципе закончена, изменений логики, во всяком случае, серьёзных не будет. А вот правки внешнего вида интерфейса было бы неплохо иметь возможность сделать. В студии это удобнее.
6384 / 3992 / 1590
Регистрация: 09.05.2015
Сообщений: 9,359
Сообщение было отмечено Dozentos как решение
Решение
Я вот не обратил сначала внимания что у вас там С++/CLI, его же можно тем же dotPeek’ом (или ILSpy, JustDecompile, Reflector), декомпилировать в C# например. И потом скомпилировать VS обратно в exe.
Но это только если вы нативным кодом там не злоупотребляли.
3571 / 2826 / 450
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 22
Сообщение от Dozentos
можно ли вообще получить на выхлопе нечто понятное именно для визуал студии?
нет.
нативный код, даже после иды, не читаем.
сначала вы получите мнемонику ассемблера, потом hex rays переведёт её в С-подобный код.
его нужно переписывать.
ида даст вам представления о функциях, некоторые константы, и прочую мелочовку, и всё это нужно править ручками.
а т.к. у вас проект .net, то нужно воспользоваться советом Someone007 и попробовать его декомпилировать (а не дизассемблировать).
Регистрация: 26.10.2013
Сообщений: 118
Someone007, спасибо, совет достойный 1000 благодарностей! Jetbrains dotPeek выдал проект на шарпе, выглядящий практически, как «родной». Только такое впечатление, что код обфусцирован кучей символов юникода. Как следствие, 11539 ошибок компиляции вида:
Кликните здесь для просмотра всего текста
C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(7,7): ошибка CS1056: Непредвиденный знак "\u003C" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(7,37): ошибка CS1056: Непредвиденный знак "\u003E" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(78,21): ошибка CS1056: Непредвиденный знак "\u003C" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(78,33): ошибка CS1056: Непредвиденный знак "\u003E" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(78,54): ошибка CS1056: Непредвиденный знак "\u003C" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(78,66): ошибка CS1056: Непредвиденный знак "\u003E" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(82,9): ошибка CS1056: Непредвиденный знак "\u0024" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(82,24): ошибка CS1056: Непредвиденный знак "\u0024" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(82,30): ошибка CS1056: Непредвиденный знак "\u0024" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(82,36): ошибка CS1056: Непредвиденный знак "\u0024" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(82,47): ошибка CS1056: Непредвиденный знак "\u0040" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(83,26): ошибка CS1056: Непредвиденный знак "\u003C" C:\Users\ADMIN\Documents\Visual Studio 2010\Projects\ktu_analyser\ktu_analyser\f_view_tabel.cs(83,38): ошибка CS1056: Непредвиденный знак "\u003E"
Вы не в курсе, отчего сие? И нет ли способа с этим бороться, кроме как квадратно-гнездовым проходом по всем файлам вручную? Может какие настройки dotPeek’а нужно выставить или самой студии?
Чем декомпилировать .exe файл и изменить содержание?
Приветствую.
Есть .exe файл. Открываю его на маке и внутри вижу много файлов разных. Как я понимаю, в этих файлах скрипты разные написаны. Можно ли как-то открыть эти файлы так, чтобы они читались и чего-нибудь поменять внутри их так, чтобы потом можно было запустить и все работало с внесенными изменениями? Сейчас при открытии таких файлов в текстовом редакторы сплошное что-то непонятное.
- Вопрос задан более двух лет назад
- 4024 просмотра
Комментировать
Решения вопроса 0
Ответы на вопрос 2
.NET developer (open to job offers)
Большую роль играет язык программирования, на котором написан .ехе
Например декомпиляция .NET приложений возможна с помощью dotPeek. Но просто внести изменения в код и перекомпилировать все равно не получится, по факту приложение придется переписывать.
Ответ написан более двух лет назад
Нравится 1 4 комментария
weranda @weranda Автор вопроса
Поясните почему именно так? Это я о «придется переписывать».
weranda, потому что оно не «взлетит». Но Вы сможете брать куски кода и вставить в новый проект.
weranda @weranda Автор вопроса
BasiC2k, Про то и спрашиваю. Что там внутри происходит при изменении кода в файлах — могли бы чуть подробнее рассказать.
weranda, опишу декомпиляцию .NET приложений (Вам нужно разобраться на чём Ваше приложение).
Исполняемый файл скармливается dotPeek. В итоге Вы можете просмотреть имеющиеся в программе классы, увидеть их взаимодействие. Но диалоговые формы таким образом декомпилировать нельзя (или я не нашёл). В итоге по диалоговым формам нужно самостоятельно их воспроизводить.
Кроме того, декомпиляция проходит не всегда идеально. Как правило циклы, взаимодействие переменных после декомпиляции выглядят не очень человекопонятно.
Если исполняемый файл разработчиком был обсфуцирован, то задача усложняется ещё больше.
КАК ДЕКОМПИЛИРОВАТЬ EXE DLL C# | КАК УЗНАТЬ ИСХОДНЫЙ КОД ПРОГРАММЫ | ДЕКОМПИЛЯЦИЯ | C# ПЛЮШКИ
✅Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут!=) ✅Доступ к исходному коду и спонсорство https://www.patreon.com/SimpleCode ✅ https://donatepay.ru/don/SimpleCode ✅BTC кошелек: 12oYfJnvt76wjJbpvfhM41m6KPz6uz4LD4 ✅ Telegram канал https://t.me/SergeySimpleCode ✅dotpeek https://www.jetbrains.com/decompiler/ ✅СОЗДАНИЕ DLL C# | КАК ПОДКЛЮЧИТЬ DLL | C# ПЛЮШКИ https://bit.ly/2xp794e Уроки по программированию ✅Наша группа ВК https://vk.com/smplcode ✅Подписывайтесь на канал https://www.youtube.com/channel/UCtLKO1Cb2GVNrbU7Fi0pM0w
Показать больше
Войдите , чтобы оставлять комментарии