Как посмотреть исходный код программы?
Я хочу подправить исходный код, ничего серьезного, только вывод нескольких строк. Программа написана скорее всего на С++. Мне использовать отладчик? Или как-то открыть в 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. Лично моё мнение — раскрывается-взламывается всё, но на это нужно потратить много-много времени. Возможно год и более (зависит от опыта и инструментов, в свободном доступе хороших инструментов нету).
От жёсткого диска на антресолях до Ransomware: как утекает исходный код игр
В начале июня компания EA сообщила о том, что её серверы взломали хакеры, похитившие 780 ГБ данных, в том числе исходный код игры FIFA 21 и движка Frostbite. Мы решили вспомнить, как на протяжении многих лет утекал в руки хакеров и широкой публики код различных игровых проектов.
Ultimate Mortal Kombat 3
Рекламные материалы порта игры для 3DO. На изображениях использованы скриншоты из версий для Sega Saturn и SNES
В своё время Mortal Kombat 3 получил огромную популярность, поэтому позже была выпущена его дополненная версия под названием «Ultimate Mortal Kombat 3» (UMK3), которую портировали на множество консолей, в том числе на Genesis, Sega Saturn и SNES. Разрабатывался и порт для Panasonic 3DO, но почти завершённый проект был остановлен (вероятно, из-за падения популярности консоли).
В 2010 году пользователь bitrate с форумов AssemblerGames каким-то образом получил диски с исходным кодом и графическими ресурсами порта UMK3 для 3DO. Он поделился с пользователями форума рипнутой графикой, однако исходный код никому не показывал.

Движок Dark Engine (Thief, Thief II, System Shock 2)

В 2006 году моддер игр для Dreamcast под ником game_player_s приобрёл онлайн комплект разработки Dreamcast, надеясь найти на его жёстком диске что-нибудь интересное, однако выяснил, что для подключения комплекта к PC требуется очень редкий адаптер. Спустя три с лишним года он всё-таки нашёл этот адаптер, но тот оказался сломанным. Ему всё-таки удалось изучить жёсткий диск и он нашёл там множество материалов Looking Glass 1996-2000 годов, в том числе и незавершённые порты Thief II и System Shock 2 для Dreamcast. Ещё через пару месяцев он решил проверить содержимое сумки, в которой к нему прибыл devkit. Внутри обнаружился CD с исходным кодом Dark Engine — движка, на котором разрабатывались Thief, Thief II и System Shock 2. Эта находка стала настоящим подарком для сообщества любителей игр компании Looking Glass, благодаря которой с тех пор фанатами было выпущено несколько важных апдейтов игр на движке Dark Engine.
Turok: Dinosaur Hunter

В феврале 2017 года на eBay выставили на продажу за $ 2551,99 компьютер Silicon Graphics Indy с исходным кодом версии игры для Nintendo 64. Продавец приобрёл эту машину на распродаже имущества компании Acclaim Entertainment после её ликвидации. Покупатель не хотел раскрывать исходный код игры, опасаясь юридического преследования, однако 27 августа 2018 года некий анонимный источник опубликовал его. Кроме кода, на жёстком диске компьютера был архив со всеми графическими ресурсами и моделями (в качестве носителей в Nintendo 64 использовались картриджи размером до 64 МБ, поэтому многие данные приходилось упаковывать). Код алгоритма распаковки тоже присутствовал в исходниках, поэтому с ней проблем не возникло. Выяснилось, что для создания игровых 3D-моделей использовалась программа 3D Studio (ещё до того, как она получила приставку MAX).

Star Wars Galaxies

В 2003 году Lucas Arts выпустила MMORPG Star Wars Galaxies, несмотря на критику получившую достаточно большую известность (число подписчиков доходило до 250 тысяч игроков). Спустя два года разработчики выпустили обновление, сильно упростившее боёвку и уменьшившую количество профессий, после чего количество пользователей значительно снизилось. Тем не менее, у игры оставались преданные поклонники. В 2011 году было объявлено о том, что проект закрывается в связи с выпуском новой MMORPG в мире «Звёздных войн» Star Wars: The Old Republic. Фанаты SWG, пытаясь сохранить жизнь любимой игры, начали писать эмуляторы серверов. Среди подобных проектов нам интересен один, который является не совсем эмулятором.
Сначала все проекты развивались обычным для фанатских инициатив образом — программисты работали с официальными серверами как с «чёрными ящиками», пытаясь добиться в эмуляторе максимально схожего поведения. Однако в 2013 году от одного из фанатских серверов откололась группа, с которой вышел на связь неизвестный сотрудник компании Sony Online Entertainment (разработчика игры). Этому отчаянному анониму удалось украсть исходный код Star Wars Galaxies в версии 2010 года. Там было практически всё: игровой сервер, клиент, инструменты. Новая группа создала проект SWG Reveniens. Спустя какое-то время из-за трений внутри группы исходный код утёк в открытый доступ. Юридически его использование подпадает под уголовную ответственность и поначалу фанаты опасались санкций Sony Online Entertainment и Lucas Arts, однако теперь проект развивается централизованно и имеет свою страницу на GitHub под названием SWG Source. Сегодня любой может поднять свой сервер Star Wars Galaxies, для этого достаточно только Oracle VirtualBox.
Home Alone 2: Lost in New York

В 2016 году архивист, историк и разработчик видеоигр Фрэнк Сифалди (Frank Cifaldi) обнаружил на старом жёстком диске исходный код версии игры для NES. По его информации, код игры основан на коде других игр по мультсериалу «Симпсоны», тоже разработанным студией Imagineering.
Пользователи форума nesdev изучили выложенные Сифалди материалы и обнаружили там код, документацию и несколько файлов EXE, среди которых были ассемблер процессора 6502, программы для сжатия текста, графический редактор и различные конвертеры. Одному из пользователей удалось частично скомпилировать образ картриджа NES, демонстрирующий экран заставки игры. В коде встречаются забавные комментарии:

«Ниже представлен альтернативный способ выполнения longcall. Примечание: Генри сказал поместить его сюда, но я (Марк Б.) не считаю, что это сработает. Увы, он выше меня по должности.»
Ransomware-атака на серверы CDPR
9 февраля этого года CD Projekt Red сообщила об утечке данных, которые позже были выставлены на аукцион хакерского форума Exploit. Среди похищенной информации были исходный код движка Red Engine, игр The Witcher 3: Wild Hunt, Thronebreaker: The Witcher Tales и выпущенной незадолго до этого Cyberpunk 2077, а также некие внутренние документы компании.

Начальная цена составляла 1 миллион долларов, а в результате торгов лот ушёл за 7 миллионов.
Заключение
Исходный код игр покидает стены компании-разработчика разными путями — иногда по доброй воле создателей, иногда случайно. Бывает, что этому способствуют злоумышленники. В целом, обществу следует стремиться к балансу между интересами частных компаний и сохранением исторического наследия, которое зачастую пропадает из-за убийственной комбинации — защиты авторских прав и пренебрежения прошлым. Нам остаётся только догадываться, сколько игр ушло от нас безвозвратно из-за смены владельцев франшиз, пожаров и банальной очистки винчестеров под новые проекты. Поэтому стоит отдать честь тем людям, которые стремятся бережно собирать и архивировать эту часть истории цифровой культуры человечества. Среди них упомянутый в статье Фрэнк Сифалди, ставший основателем Video Game History Foundation и спасший от забвения множество игр, и Джейсон Скотт, выложивший в Internet Archive и на GitHub исходный код таких игр, как Zork (1977 год), Stargate (1981 год), NBA Jam (1993 год) и Pinball Fantasies (1994 год).
На правах рекламы
Аренда Windows сервера на любом тарифе начиная с 2 vCPU, 4 ГБ ОЗУ и 20 ГБ хранилища. Создайте собственный сервер в пару кликов, максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.
Исходный код игры: что это такое и как можно его заполучить?
![]()
Исходный код игры — это тот самый код, который пишет программист, чтобы игра заработала. Он может быть написан на любом удобном программисту языке программирования.
Для тех , кто не знае т, я зыки программирования нужны для человека, а не для компьютера. С их помощью программист пишет программы, которые удобно читать и понимать человеку. Поэтом у в основно м п рограммисты стараются писать код качественно, компактно и красиво для своего же удобства. А компьютеру совершенно не важна красота исходного кода, потому что он понимает только свой машинный язык, который состоит из единиц и нулей. Большинство написанных программистом программ компилируется в машинный язык, который человеку очень сложно понять.
Так происходит и с кодом игр. Программист пишет игр у н а известном ему языке и выпускает ее в широкое пользование. Исходный код игры обычно закрыт, а пользователям игры доступен лишь машинный код игры, который достаточно сложно понять. Можно ли с машинного кода получить исходный код? В принципе , можно, но это очень трудная и кропотливая работа с применением различных инструментов и подходов к анализу получаемых результатов. Для такого комплекса проводимых работ придуман даже свой термин — реверс-инженеринг ( реверсная инженерия или обратное программирование ) . Само действие по конвертации кода из машинного в код языка программирования называется декомпиляцией. И это действие является обязательной частью реверс-инженер ии .
Исходный код игры
Нужно понимать, что реверсная инженерия не дает стопроцентный результат. Полученный код с применением инструментов для реверса не будет кодом , идентичным исходному, но может быть очень похожим на него. Настоящий исходный код игры может быть доступен только в том случае, если разработчик опубликует его в открытом доступе.
Иногда разработчики используют такую практику — публикуют исходники игры в открытом доступе, чтобы каждый, кто смыслит в программировании, смог внести свою лепту в развитие игры. При этом авторское право сохраняется за разработчиками игры и регулируется соответствующими лицензиями и документацией.
Но большинство игр распространяются по другому сценарию. Когда программист пишет игру, он закрывает исходный код от посторонних глаз и затем распространяет игру в виде скомпилированного файла. Скомпилированные файлы могут содержать как двоичный машинный код, так и объектный код или код из ассемблерных команд.
Например , вы скачиваете файл игры с «ехе»-расширением, чтобы установить такую игру к себе на компьютер с операционной системой Windows. Если вы попытаетесь открыть такой файл для просмотра его кода, то максимум , что вы там обнаружите , — это объектный код, который состоит из «смеси» цифр и букв в 16-битовой системе исчисления. Полностью восстановить из объектного кода исходный не представляется возможным, только его частичное восстановление, чтобы можно было «уловить» алгоритмы и логику в игре.
В общем, нужно понимать простую вещь : в основном игры пишутся на компилируемых языках. А это значит, что код игры должен пройти процесс компиляции, для того чтобы его мог «понять» компьютер. А компиляция — это односторонний процесс, который всегда происходит только в одном направлении. Это означает, что обратное программирование — это всего лишь попытка воссоздать исходный код игры.
Исходный код игры: для чего закрывать и для чего его хочется заполучить
- с закрытым исходным кодом;
- с открытым исходным кодом.
Для чего нужен исходный код игры
Чуть выше мы уже обсудили, что иногда и сходный код нужен, чтобы клонировать игру. Но бывают более мелкие «нужды», например , хочется написать какой-либо мод или даже чит к игре. В этих случаях вам необязательно искать весь исходный код. Иногда разработчики открывают код игры частично, чтобы «мододелы» могли писать моды. В некоторых ситуациях фанаты игры уже частично восстановили исходный код интересующей вас игры и выложили в сеть. Вы не поверите, но у огромного числа «закрытых» игр уже есть «реверсные» версии, которые находятся в открытом доступе.
В общем, по конкретной игре нужно искать наличие исходного кода. Если же вы просто хотите «поиграться» с исходным кодом какой-либо игры, то мож ете найти игры 90-х или 2000-х годов, у которых исходный код открыт , и экспериментируйте сколько душе угодно.
Заключение
Исходный код игры — это гарантия авторского права на игру. У кого исходники, тот и автор. Восстанавливать исходный код — это довольно сложное занятие, которое потребует от вас специальных знаний. А самое главное , что чем «больше» и сложнее игра, тем дольше и менее точным будет восстановленный исходный код игры.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Люди напишите пожалуйста подробно ! как узнать исходный код программ и игр ? Заранее благодарен .
Машинный код (ассемблер) — низкоуровневое программирование, там все очень подробно по операциям.. .
Следует узнать, на чем делали ту или иную программу.. . и к ней уже подобрать декомпилятор
АтаманГуру (3432) 12 лет назад
Я хочу научится делать игры и программировать . Для этого я хочу скачать несколько игр , открыть их код и понять головой но чтоб было не очень сложно ! как они делаются .
Eugene Bezyazykov Профи (575) тогда следует обратиться к автору игровой программы. или пока по-юзать простые (учебные) игровые программы, они есть в примерах готовых программ)) Шаг за шагом 🙂
Евгений ЛомегаОракул (68034) 12 лет назад
«Машинный код» (набор команд CPU) и язык программирования Asembler это совершенно разные вещи.
Подобное отождествление говорит о том что ты явно не в теме. Как говорится «слышал звон, да не знаю где он».
Исполняемый файл декомпилятором можно привести к ассемблерному коду, точнее сказать сопоставить определенную команду CPU с соответствующей конструкцией ЯП Assembler
Атаман Гуру (3432) И как же мне тогда узнать исходник ?
Алексей ФонарёвПрофи (581) 4 года назад
Остальные ответы
скачай декомпилятор
АтаманГуру (3432) 12 лет назад
Я скачал уже Иду 6 А она выдает мне 1 и 0 и я не знаю что дальше делать и как пользоваться
Сразу вопрос: ты их понять то сможешь?
Павел ВалетовУченик (129) 7 месяцев назад
ника. если создатель игры тебе его не вышлет. т. к. exe файл сохраняется уже в машинном коде, а не на языке программирования.
Дизассемблер смотри
АтаманГуру (3432) 12 лет назад
Я скачал уже Иду 6 А она выдает мне 1 и 0 и я не знаю что дальше делать и как пользоваться
bbk Знаток (421) h t t p:// www. idapro. ru/faq/ Тут посмотри. Но в любом случае нужно знание ассемблера, на более высокоуровневый код рассчитывать не приходится
Исходные коды некоторых программ, например, выпущенных под открытой лицензией GPL, размещаются добровольно разработчиком. Это делается для ускорения развития ПО, когда сотни профессионалов и любителей могут внести в код программы полезные изменения, нововведения и исправления.
Но не все разработчики (особенно это касается игростроения) делятся исходным кодом, и попытка его добыть или использовать в корыстных целях может обернутся судебным разбирательством.
что значит «узнать исходный код программ»?
Языки бывают двух типов:
ИНТЕРПРИТАТОРЫ (BASIC, JAVA, PHP) в них исходный код программы передается в специальную систему — интерпретатор который поочередно обрабатывает и выполняет каждую команду. В таких ЯП исходный код на виду.
КОМПИЛЯТОРЫ (СИ, Pascal. Delphi) здесь специальные программы -компиляторы преобразуют исходный код в команды CPU и помещают их в исполняемый (exe) файл. Код такой программы восстановит невозможно. Использование программ декомпиляторов (например, DeDe для Delphi) могут дать обшее представление об алгоритме программы.
АтаманГуру (3432) 12 лет назад
А как узнать код если игра написана на Flash ?
Евгений Ломега Оракул (68034) не знаю. с Flash не работал, только мечтаю заняться. Думаю там с этим должно быть проще
Анастасия ЖелезноваУченик (119) 3 года назад
Евгений, здравствуйте! А к какому языку относится Python?
Люди. 111 Как научиться управлять вертолетом за 5 минут. 777 Я уже скачал авиасимулятор и не знаю что делать.
1.Полный курс ассемблера.
2.Крис Касперски: Образ мышления: Дизасcемлер IDA.
3.Cушить сухари: нарушение авторских прав.
