Как посмотреть исходный код программы?
Я хочу подправить исходный код, ничего серьезного, только вывод нескольких строк. Программа написана скорее всего на С++. Мне использовать отладчик? Или как-то открыть в IDE? Просто я не хочу запускать программу, хочу просто поковыряться в коде. И может посоветуете какой нибудь? P.S. Сам файл — .exe
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, иконки, картинки, таблицы ресурсо-строк).
- Если извесно чем создан код — думаю есть специальные утилиты способные его раскрыть (они платные и малодоступные).
Опять-же, это при условии что нету паковщика кода (тогда нужно сначала применить депаковщик), шифровальщика/самомодифицирующегося кода. Если не разбит обфускатором так что не распутать. Чем больше код — тем сложнее разобраться.
чем можно открыть .exe файл, чтобы посмотреть исходный код?
Хм.. .Сначала, с вашего позволения, пара вопросов. А что такое пинч? И как, посмотрев исходный код программы, можно определить, кто его прислал?
Что Вы подразумеваете под «исходными кодами»? Если просто набор байт, то в любом шестнадцатеричном редакторе (он же Hex редактор) , например WinHex, HexWorkShop и т. д. Так же есть плагины для far и TotalCommander. Если именно исх. код, то смотрите ниже.
Теперь по Вашему вопросу.
Код можно попробовать восстановить с помощью дизассемблеров, т. е. программ, как раз и предназначенных для перевода из exe в asm. Перевести в код любого из языков высокого уровня (C, paskal, basic и т. д. ) невозможно 100%. Однако, даже с использованием дизассемблера asm код будет сильно избыточен. Для уменьшения избыточности и для повышения четкости кода существуют так называемые «интерактивные дизассемблеры». Условно, их действие можно описать так. Человек не умеющий читать (дизассемблер) идет по дорожке (программе) и доходит до развилки на которой стоит указатель «влево-деревня Кодево 50м, вправо деревня Кодево 15км» и останавливается (ставит указатель на «развилочный код») и спрашивает, куда ему идти. Мы говорим естественно налево. И так до конца, пока не пройдет всю программу.
В свете вашего вопроса, я могу с большой долей уверенности Вам сказать, что Вам этого сейчас не одолеть. Не зная ассемблера, пытаться что то дизассемблировать бессмысленно IMHO.
Наиболее популярным программным обеспечением для даного формата является программа Microsoft Windows 7 (для ОС Windows) и программа Xamarin Mono (для ОС Mac OS) — данные программы гарантированно открывают эти файлы. Ниже вы найдете полный каталог программ, открывающих формат EXE для операционной системы Windows, Mac OS, Linux.
Исполняемый файл EXE является приложением Windows либо DOS систем. Такой тип файла может включать в себя самораспаковывающиеся архивы. Имеют невероятно широкое распространение.
Стоит отметить, что в операционных системах Windows, открыть файл .exe можно посредством двойного клика левой клавиши мыши. В прочих платформах Linux или Mac OS запустить рассматриваемое расширение возможно при помощи предварительно установленных на компьютер эмуляторов, к примеру VMware Workstation.
Формат .exe так же поддаётся редактированию, для этого необходимо воспользоваться утилитой на подобии Resource Hacker. Среди пользователей распространены случаи нарушения ассоциации файлов по типам, когда множество ярлыков в формате EXE могут иметь одинаковый внешний вид. При такой ситуации можно воспользоваться приложением Unassociate File Types, способным корректно восстановить ассоциации.
Расширение может являться сценарием программного обеспечения для активации процесса инициализации остальных файлов определенного разработчика в целях последующего исправного запуска той или иной утилиты. Вместе с расширением .exe может содержаться и справочная информация, способствующая соответствующему поиску и загрузке дополнительных компонентов.
Информация в расширении необходима для формирования надлежащей среды Microsoft DOS и системах Виндоус. Если открыть exe файлы как самораспаковывающийся архив, можно отметить факт того, что установка хранимого контента будет произведена в предварительно заданную директорию.
Как узнать исходный код программы?
Есть файл с простой программой, мне надо узнать его исходный код. как это сделать?
Как модифицировать исходный код программы
Здравствуйте,доброго времени суток. Задали мне задачу с которой я не могу справится. Если можете.
Исходный код программы!
привет всем, ребята , я начинающий программист С++ , учу уже 3-й месяц, делаю всякие задания из.
Как при запуска программы из командной строки узнать код возврата?
int main() < return 0; >Как при запуска этой программы из командной строки узнать код.
Как получить исходный код *.exe или отредактировать его исполняемый код?
Собственно возможно ли декомпилить его так, чтобы можно было потом обратно скомпилировать? Или.
Главное что он правильный
Добавлено через 46 секунд
PS:Вспомниаю слова оператора из первой Матрицы .
Тематические курсы и обучение профессиям онлайн Профессия Разработчик на C++ (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
Бедный автор программы.
Добавлено через 15 секунд
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
Как открыть исходный код картинки в C++
Здравствуйте! Помогите пожалуйста с интересным вопросом) Я хотел бы открыть через C++ файл и.
Не могу додуматься как написать исходный код
Пользователь в водит 3-ри числа, а программа выводит наибольшее. Пример: вводим 365, выводит 6.
Как объединить исходный код с визуальным оформлением?
Короче решил написать наипростейшую программу. Вводится число, вводится делитель, нажимается кнопка.
имеется исходный код программы. как его запустить?
Как конвертивровать apk файл если имеется exe, jar и исходный код программы?
Как конвертивровать apk файл если имеется exe, jar и исходный код программы?
Имеется исходный код программы на VB. Можно ли автоматически построить блок-схему?
Прежде всего, интересует возможность автоматического построения блок-схем на основе имеющегося.
Как получить исходный код *.exe или отредактировать его исполняемый код?
Собственно возможно ли декомпилить его так, чтобы можно было потом обратно скомпилировать? Или.
Тематические курсы и обучение профессиям онлайн Профессия С#-разработчик (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.
С помощью какой программы его можно запустить на исполнение код на Си?
У меня есть код программы написанный на С С помощью какой программы его можно запустить на.
Имеется сайт в GitLab, как его запустить локально через какой нибудь фреймворк?
Добрый день. Имеется сайт в GitLab и нужно его запустить локально через какой нибудь фреймворк.
Как узнать исходный код программы?
Я не смог найти подобного ответа на форуме, поэтому спрашиваю здесь. Как открыть файл.ехе, не в том.
Как модифицировать исходный код программы
Здравствуйте,доброго времени суток. Задали мне задачу с которой я не могу справится. Если можете.
Просмотр кода программы
Извините за тупой вопрос. Я в программировании я профан, поэтому задам его максимально просто, чтобы вы поняли.
Программист создал программу на каком-то языке (любом). Скомпилировал и получился файл с программой. Этот файл программист дает пользователям.
Пользователь может имея один этот файл посмотреть код программы, внести изменения?
Про дизассемблер я слышал, но из описания в википедии не ясно, можно ли допустим перевести программу на машинный код, а потом этот код переделать в тот, на котором была написана программа?
Анализ кода программы на ошибки
Подскажите что-нибудь по теме нахождения ошибок в тексте программы (языка Паскаль скорее всего). С.
Просмотр кода программы
Здравствуйте. Подскажите пожалуйста, если у меня есть программа, могу ли я каким-то образом узнать.
Просмотр кода программы
Как посмотреть код готовой программы? Как то пару раз открыл код файла l2.exe Но забыл как это.
Просмотр кода программы на C++ Builder
Вопрос такой: Кто-то писал программу на C++builder, скинул мне папочку со всеми файлами которые.
Начнем с того, что «файлы с программой» (имея в виду исполняемый модуль) бывают разные.
Если программа скомпилирована в так называемый машинный код («native code»), то в подавляющем большинстве случаев точно восстановить исходный код невозможно. Возможно — восстановить приближенно; но, во-первых, нет гарантии, что такой приближенный код вообще скомпилируется (за исключением совсем-совсем простых программ, типа «Hello, World!»), и во-вторых, нет абсолютно никакой гарантии, что это приближенный код не будет содержать ошибок. Ну и трудоемкость такого восстановления из машинного кода такова, что экономически более выгодно просто написать аналогичную программу с нуля. Конечно, существуют соответствующие инструменты для реверсинга (исследования и обратного восстановления кода), нннооо.
Если программа скомпилирована в так называемый байт-код, исполняемый виртуальной машиной, то возможны два варианта: либо это некоторая стандартная исполняющая машина (типа .NET или Java), либо — совершенно уникальная исполняющая машина собственной разработки. В первом случае, возможно получить почти 100%-но работающий исходный код; возможно, в него потребуется внести незначительные правки. И для этого существуют соответствующие инструменты. Конечно, если над кодом поработал обфускатор, то восстановить исходный код будет сильно сложнее, но тем не менее возможно. А вот во втором случае дело труба — без изучения алгоритма работы виртуальной машины восстановить исходный код невозможно, а само это изучение — весьма трудоемкий процесс.
Ну и конечно же, создать программу, машинный код которой никак не просмотреть, можно. Однако, это потребует известных трудозатрат и времени. А вот стоит ли овчинка выделки.
. CheshireCat дал ответ, но мне стало жалко всего мною написанного, поэтому всё же опубликую, может, поможет чем-то.
Нельзя. Вот представьте, Вам говорят: «Сделай так, как предписано Нормативным Документом РФ и Всея Человечества. » — но сам этот документ Вам не дают. Что Вы будете делать? Скажете, что незнание закона не освобождает от ответственности? А компьютеру что делать, если Вы ему не можете предоставить четкого описания того, что ему делать надо?
Это я к тому веду, что некоторый код ему всё же надо дать. Всегда.
Пример: под Windows весь код программы содержится в файле *.exe. Другой пример: весь код веб-программы содержится в *.js. Думаю, суть ясна.
Откуда Ваш вопрос возник о представлении программы и дезассемблировании? Полагаю, он исходит из двух тезисов, которые, полагаю, Вам окажутся очевидными:
1. Крайне затруднительно писать большую программу на низкоуровневом языке. Сейчас в машинных кодах, ровно как и на asm никто не пишет весь проект, пользуются C/C++/Pascal/D/. ибо так легче. Ровно по той же причине возникли CoffeScript, Dart и иже с ними, на которых пишутся большие сайты просто потому, что на них писать проще, чем на чистом JavaScript. Ровно по той же причине кроме Java существуют другие языки под JVM. Но результат всегда один и тот же: всякая Windows-программа будет exe, всякая JVM-программа будет в своём формате, всякое html-css-js приложение будет компилироваться в js. По-другому не будет.
2. Люди не хотят, чтоб их продукты воровали. Здесь exe-приложения занимают выгодную позицию, потому что скомпилированную программу дешифровать практически нереально. Для js есть обфускаторы; jvm-приложения, полагаю, тоже обладают чем-то подобным.
Говоря формально, любой может открыть в текстовом редакторе exe-файл и его изменить. Реально это невозможно. Проще написать с нуля программу на нормальном языке, чем разбираться в скомпилированном.
Помимо этого здесь действует принцип «Неуловимого Джо»: для некоторой программы оцените количество крупных компаний, которые были б готовы потратить время (
месяц-год) и деньги (
10-1000 тыс.долл.) для её декомпозиции. Я на вскидку могу назвать лишь единицы, начиная со Скайпа. 99% программистов не пишут такие программы.
Я надеюсь, что объяснил понятно.
Как Вы правильно выразились, «машинный язык» есть 0 и 1. 0 или 1 это один бит, в байте группы по 8 цифр, стало быть.
В то же время есть понятие кодировки (см. вики) для того, чтобы прдставлять текст в виде тех же самых 0 и 1, по байту на символ (грубо говоря).
Как правило, символы с кодами 0..16 — управляющие, 48..57 — цифры и т.п.
А что есть машинные коды? Это тоже таблица соответствия между числом и коммандой. Если таблица говорит, что 0x11 — это сложение, то всякое сложение будет кодироваться именно как 0x11.
Вообще это не только программ касается, а вообще любой не-текстовой информации.
Так вот блокнот открывает текстовый файл. Поэтому большую часть символов он «глотает», потому что они расцениваются как служебные, а остальные отображаются как некоторые символы. Поэтому и скопировать не получится. В этом смысле лучше пользоваться Notepad++.