Как посмотреть код exe файла
Перейти к содержимому

Как посмотреть код exe файла

  • автор:

Как посмотреть исходный код программы?

Я хочу подправить исходный код, ничего серьезного, только вывод нескольких строк. Программа написана скорее всего на С++. Мне использовать отладчик? Или как-то открыть в IDE? Просто я не хочу запускать программу, хочу просто поковыряться в коде. И может посоветуете какой нибудь? P.S. Сам файл — .exe

Отслеживать
Anton Sorokin
задан 5 июл 2017 в 10:40
Anton Sorokin Anton Sorokin
6,998 6 6 золотых знаков 37 37 серебряных знаков 65 65 бронзовых знаков

Если подправить exe 32-битный и знаю ассемблер/ понимаю запись строк и других данных в двоичном коде — скачайте hiew.exe (можно как править надписи, так и код)

5 июл 2017 в 10:46
@nick_n_a А с notepad++ можно exeшники открывать? Или к .exe применять 2 комментарий?
5 июл 2017 в 10:52
А я думал у вас исходный код в наличии.
5 июл 2017 в 10:52
@nick_n_a Нет, есть только .exe файл и все.
5 июл 2017 в 11:10

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Исходный код раскрыть невозможно если для этого постарались обеспечить безопасность (особенно если это фирменная вещь).

Но есть способы полностью или частично раскрыть код.

  • IDA Pro — самый лучший из безплатных взломщиков, некоторые макросы возможно позволяют преобразовать код назад. Но не всегда. Особо хорошо раскрываются borland-продукты.
  • Hiew.Exe бесплатная утилита, очень маленькая, позволяет править код на языке ассемблера. Можно править текстовые и целые константы. Можно ею даже сделать «перевод» программы на другой язык, затереть имя фирмы и т.п.
  • Если есть PDB-файл, или подшита debug-info к файлу то код можно получить в среде разработки (если debug-info полная) редко можно использовать. Исходный код получить нельзя, но можно получить «номера строк и имена исходников», а так же имена/значения всех констант, локальных переменных, избежать «раздроблености функций» а так же получить классы с начинкой класса (почти все структуры кроме текста программы) что значительно упростит понимание работы программы. Для некоторых библиотек (dll) pdb-файлы можно скачать отдельно. Врядли уважающая себя фирма допустит утечку pdb своего стоящего продукта.
  • Debug info, существует DebugInfo-информация встроеная в exe. Если есть такая информация, и соответствующая утилита (Например на Borland Delphi собран, и он есть в наличии), то можно сделать аналогичное предыдущему пункту. Но врядли уважающая себя фирма допустит такую «глупую» ошибку (аналогично pdb).
  • Если файл написан на с# его можно почти полностью просмотреть в кодах с помощью disSharp (такие программы «подключают» в таблице импорта лишь mscorlib и всё). DisSharp плохо дизассемблирует некоторые части программы, но возможно его платная версия или платная версия подобных утилит раскрывает код лучше.
  • Если файл написан на FoхPro, clipper и других подобный байт-кодовых языках — он раскрывается спец-утилитами (Refox например).
  • Утилита exescope.exe ResourceHacker.exe и её-подобные утилиты позволяют смотреть шапку, подключенные библиотеки (по ним можно понять на чём писана программа) и редактировать ресурсы программы (ресурс-формы в.т.ч. delphi, иконки, картинки, таблицы ресурсо-строк).
  • Если извесно чем создан код — думаю есть специальные утилиты способные его раскрыть (они платные и малодоступные).

Опять-же, это при условии что нету паковщика кода (тогда нужно сначала применить депаковщик), шифровальщика/самомодифицирующегося кода. Если не разбит обфускатором так что не распутать. Чем больше код — тем сложнее разобраться.

P.S. Лично моё мнение — раскрывается-взламывается всё, но на это нужно потратить много-много времени. Возможно год и более (зависит от опыта и инструментов, в свободном доступе хороших инструментов нету).

Можно посмотреть код программы exe файла, если знаешь что он написана на языке C#?

Можно посмотреть код программы exe файла, если знаешь что он написана на языке си шарп? И есть где-нибудь сайт где выкладывают простые программы Windows-приложения созданные на языке си шарп?

Добавлено через 11 минут
Где выкладывают sln файлы

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Что можно почитать, если уже знаешь основы?
Что можно почитать,если уже знаешь основы? С основами,как я вижу,ничего толкового сделать нельзя.

Можно ли вернуть исходный код программы, если exe имеет отладочную информацию
Можно ли вернуть исходный код программы, если программа Debug и имеет отладочную информацию и была.

Как можно изменить код программы, если имеем только exe файл?
Вот, допустим, имеем exe файл с таким кодом begin var a,b,c:integer; a:=200; b:=300; c:=a+b;.

Можно ли посмотреть что в exe файле.
У меня есть только exe файл с программой на с++, можно как то просмотреть саму программу(текст)??

Как извлечь код программы из ехе файла?

Как вызвать запуск .ехе файла другой программы?
Запуск левой программы с под WForm

Можно ли как-нибудь из ехе-файла получить дизассемблированый код
Можно ли как нибудь из ехе файла получить дизассемблированый код на FASM\MASM?

Как узнать исходный код файла-ЕХЕ для Visual Basic 6.0?
Здравствуйте! Прошу помощи. Как узнать P-Code? Научите, пожалуйста, пользоваться компиляторами и.

Как средствами Delphi реализовать извлечение ехе файла при запуске ехе?
Здорова, народ. Как средствами Delphi реализовать извлечение ехе файла при запуске ехе? Заранее.

895 / 328 / 12
Регистрация: 29.01.2011
Сообщений: 1,679

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

Эксперт JavaЭксперт С++

8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709

na3ar1y, полностью получить исходный код — никак. Для этого используются дизассемблеры, но от них толку мало

Регистрация: 29.03.2010
Сообщений: 233

ну на самом деле все зависит от дизасма) если в ассемблере разбираться и использовать иду, то все очень даже легко.
а еще вроде есть хорошие тулзы, которые смогут восстановить даже не ассемблерный код, а прямо нормальный листинг (но только для конкретного компилятора)

Регистрация: 14.11.2010
Сообщений: 163
erthalion , а что за тулзы?? объясни пожалуйста )
Заблокирован

ЦитатаСообщение от na3ar1y Посмотреть сообщение

кто знает как извлечь код програми с ехе файла?? это возможно зделать?

иди изучай архитектуру ЭВМ долго и тщательно, паралельно практикуясь с асм. Только после того как твои мозги очистятся от текущего рака, тогда ты сможешь приступить к реверсингу и просветвлишься насчет того что такое «получить код из бинарника»

2342 / 498 / 22
Регистрация: 01.04.2009
Сообщений: 2,200

ЦитатаСообщение от unStatiK Посмотреть сообщение

иди изучай архитектуру ЭВМ долго и тщательно, паралельно практикуясь с асм. Только после того как твои мозги очистятся от текущего рака, тогда ты сможешь приступить к реверсингу и просветвлишься насчет того что такое «получить код из бинарника»

смешно, хоть и флуд.

na3ar1y, exe-файл — и есть код программы.
а то, что вы хотите получить называется листингом программы на каком-либо языке.
судя по разделу, вы хотите листинг программы на C++, или даже на Visual C++.
программы? способные выполнить ваше желание, называются декомпиляторами.
декомпиляторы для С++ — большая-большая редкость.
просто в силу того, что это язык достаточно низкого уровня, и в результате компиляции программы в exe-файл из очень-очень разных исходных листингов получаются практически идентичные исполнимые exe-файлы.

можете поискать, но скорее всего, ничего, удовлетворяющего вашим требованиям вы не найдете.

Заблокирован

ЦитатаСообщение от Patch Посмотреть сообщение

na3ar1y, exe-файл — и есть код программы.
а то, что вы хотите получить называется листингом программы на каком-либо языке.
судя по разделу, вы хотите листинг программы на C++, или даже на Visual C++.
программы? способные выполнить ваше желание, называются декомпиляторами.
декомпиляторы для С++ — большая-большая редкость.
просто в силу того, что это язык достаточно низкого уровня, и в результате компиляции программы в exe-файл из очень-очень разных исходных листингов получаются практически идентичные исполнимые exe-файлы.

можете поискать, но скорее всего, ничего, удовлетворяющего вашим требованиям вы не найдете.

ссылку на спеки ЯЗЫКА visual C++ можно предоставить, а то я что то видимо проспал.
«exe-файл — и есть код программы» . «в результате компиляции программы в exe-файл из очень-очень разных исходных листингов получаются практически идентичные исполнимые exe-файлы.» — а теперь выдыхните, соберитесь и расшифруйте сей высер гуманитария техническими терминами

Регистрация: 29.03.2010
Сообщений: 233
2342 / 498 / 22
Регистрация: 01.04.2009
Сообщений: 2,200

ЦитатаСообщение от unStatiK Посмотреть сообщение

Идиотом только и остается как смеятся, на большее они не способны.
ссылку на спеки ЯЗЫКА visual C++ можно предоставить, а то я что то видимо проспал.
«exe-файл — и есть код программы» . «в результате компиляции программы в exe-файл из очень-очень разных исходных листингов получаются практически идентичные исполнимые exe-файлы.» — а теперь выдыхните, соберитесь и расшифруйте сей высер гуманитария техническими терминами

кончай выдрючиваться.
троллинг никому не интересен.
а если правда не понял — поясняю:
1)автор хочет исходник для Студии; от бишь с шаблонами диалогов, дотнетом, и прочими финтифлюшками.
это специфические реализации С++, требующие специфического декомпилятора.
обычным декомпилятором С++ ты шаблоны ресурсов для Студии не получишь.
2)есть несколько вариантов реализации одного и того-же алгоритма.
например, простейший цикл.
можно написать
for(i=. ;;)<>
а можно руками:
lebel: i = . ;делаем чего-то;goto label
а в итоге компилятор сделает ИДЕНТИЧНЫЕ exe.
т.е., как правило, восстановить исходный листинг программы на С++ невозможно в принципе. но можно получить что-то похожее.
а в языках высокого уровня листинг как правило транслируется в код (и обратно) однозначно, без таких вариантов.

и хватит хамить.
я хоть в этом разделе уже и не модератор, но репу загадить могу по самый бан.

Заблокирован

ЦитатаСообщение от Patch Посмотреть сообщение

кончай выдрючиваться.
троллинг никому не интересен.
а если правда не понял — поясняю:
1)автор хочет исходник для Студии; от бишь с шаблонами диалогов, дотнетом, и прочими финтифлюшками.
это специфические реализации С++, требующие специфического декомпилятора.
обычным декомпилятором С++ ты шаблоны ресурсов для Студии не получишь.
2)есть несколько вариантов реализации одного и того-же алгоритма.
например, простейший цикл.
можно написать
for(i=. ;<>
а можно руками:
lebel: i = . ;делаем чего-то;goto label
а в итоге компилятор сделает ИДЕНТИЧНЫЕ exe.
т.е., как правило, восстановить исходный листинг программы на С++ невозможно в принципе. но можно получить что-то похожее.
а в языках высокого уровня листинг как правило транслируется в код (и обратно) однозначно, без таких вариантов.

и хватит хамить.
я хоть в этом разделе уже и не модератор, но репу загадить могу по самый бан.

ну вот сейчас вменяемое объяснение. это так сложно сразу нормально писать.
То что можно только повторить примерный листинг пользуясь диззасемблером/декомпилятором это и говорилось автору сразу, но он сам этого мало понимает в силу своих очень скудных познаний (да и интелектуальный потенциал этого индивида тоже вызывает сомнения)
>>1)автор хочет исходник для Студии; от бишь с шаблонами диалогов, ДОТНЕТОМ, и прочими финтифлюшками. это специфические реализации С++

с++ это не дотнет, дотнетовские проги просматриваются CLR просмоторщиками (который входит в состав студии)

Как отлаживать и профилировать любой EXE-файл с помощью Visual Studio

Вам когда-нибудь нужно было отлаживать или профилировать исполняемый файл (файл .exe), для которого у вас нет исходного кода или вы не можете его собрать? Тогда наименее известный тип проекта Visual Studio, проект EXE, для вас!

В Visual Studio вы можете открыть любой EXE-файл как «проект». Просто перейдите в Файл -> Открыть -> Проект/Решение и перейдите к файлу .exe . Как если бы это был файл .sln . Visual Studio откроет этот EXE-файл как проект. Эта функция существует уже давно. Она работает на всех поддерживаемых в настоящее время версиях Visual Studio, и документация по ней находится на странице Отладка приложения, которое не является частью решения Visual Studio.

Отладка

Как и в обычном проекте, вы можете начать отладку с помощью F5, которая запустит EXE и подключит отладчик. Если вы хотите отладить запуск, вы можете запустить с помощью F11, который запустит EXE и остановится на первой строке пользовательского кода. Оба эти параметра доступны в контекстном меню для проекта EXE в окне Solution Explorer, как показано ниже:

Для отладки понадобятся символы, файлы PDB, для EXE и любых DLL, которые нужно отладить. Visual Studio будет следовать тому же процессу и попытается получить символы также, как и при отладке обычного проекта. Поскольку маловероятно, что файлы PDB были распространены вместе с EXE-файлом, возможно, вы захотите найти их в сборке или, что еще лучше, на сервере символов. Дополнительную информацию и рекомендации по использованию символов можно найти в этом блоге.

Для эффективной отладки вам также понадобится исходный код, который использовался для сборки EXE, или даже для нескольких файлов, которые вас интересуют. Вам нужно найти эти файлы и открыть их в Visual Studio. Если исходный код не совпадает с исходным кодом, который был собран, EXE Visual Studio предупредит вас, когда вы попытаетесь вставить точку останова, и точка останова не будет привязана. Это поведение может быть изменено в окне Settings peek window. В окне просмотра параметров щелкните текст ссылки Must match source, а затем установите флажок, чтобы разрешить несоответствующий источник, как показано ниже. Конечно, с несоответствующим источником вы никогда не знаете, что произойдет, так что используйте это только на свой страх и риск.

Если EXE был собран с SourceLink, то информация об источнике будет включена в PDB, и Visual Studio попытается загрузить источник автоматически. Это действительно хорошая причина использовать SourceLink с вашими проектами. Даже если у вас есть локальный набор, у вас может не быть той версии, которая использовалась для сборки двоичного файла. SourceLink — ваш надежный способ убедиться, что правильный источник связан с правильным двоичным файлом.

Если вы не можете получить исходный код, у вас еще есть несколько вариантов:

  1. Используйте инструмент для декомпиляции сборок обратно в C#, который вы можете перекомпилировать в новую сборку, чтобы исправить старую.
    1. ILSpy — отличный выбор для этого, но есть и множество других хороших платных и бесплатных инструментов.
    1. Документ Source Not Found содержит ссылку на view disassembly. Имейте в виду, что если вы привыкли к отладке кода на C#, представление о разборке (view disassembly) является крайним средством.

    Профилирование

    Вы также можете использовать инструменты профилирования с EXE-файлом, запустив их из Отладка -> Профилирование производительности. На странице запуска инструментов профилирования вы можете выбрать, какие инструменты использовать против EXE. Дополнительную информацию о профилировании можно найти в этих документах ( https://docs.microsoft.com/en-us/visualstudio/profiling/profiling-feature-tour?view=vs-2019).

    Заключение

    Вот и все. Краткий обзор того, как вы можете использовать Visual Studio для отладки и профилирования приложений, которые вы не создаете и которые могут даже не иметь исходного кода. В следующий раз, когда вам понадобится отладить или профилировать EXE-файл, не забудьте, что вы можете открыть его как решение в Visual Studio!

    • Блог компании Microsoft
    • Visual Studio

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *