Изменить размер шрифта
Текущее время: 18 июн 2025, 00:25

Subscribe to RSS headline updates from:
Powered by FeedBurner



Новая темаОтветить Страница 1 из 1   [ Сообщений: 9 ]
Автор Сообщение
 Заголовок сообщения: Дизассемблирование и декомпиляция программ(игр)
СообщениеДобавлено: 27 мар 2013, 22:07 
старожил
Аватара пользователя

Зарегистрирован: 30 июл 2010, 17:22
Сообщения: 304
Всем здравствуйте. Как вы знаете, я олдгеймер. У меня возникло желание декомпилировать или дизассемблировать некоторые старые игры. Хотелось бы знать насколько сложен этот процесс и что для этого нужно. Ну и примеры того, как это возможно сделать. Знаю что одного только исходного кода недостаточно потому что нужны еще новые текстуры, которые смогут хорошо отображаться на широких экранах с высоким разрешением. Ну и звуки с музыкой тоже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дизассемблирование и декомпиляция программ(игр)
СообщениеДобавлено: 27 мар 2013, 22:21 
Администратор
Аватара пользователя

Зарегистрирован: 27 фев 2009, 23:02
Сообщения: 16406
Откуда: Караганда
Без знаний ассемблера как такового этот процесс является невозможным. :-)

_________________
Изображение
Продажа электронных сигарет в Караганде.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дизассемблирование и декомпиляция программ(игр)
СообщениеДобавлено: 27 мар 2013, 22:24 
живу тут

Зарегистрирован: 15 янв 2011, 14:39
Сообщения: 1044
Откуда: Алматы
Да и со знанием думаю желания возиться с этим быстро отпадёт. Потратишь уйму времени не понятно на что.

_________________
Ubi


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дизассемблирование и декомпиляция программ(игр)
СообщениеДобавлено: 27 мар 2013, 22:47 
Первый Maus на деревне
Аватара пользователя

Зарегистрирован: 11 окт 2009, 23:27
Сообщения: 8110
Откуда: Königsberg in Preußen
Собственно, в теории все просто:
а) взял интересную старую игру
б) взял дизассемблер (в редких случаях, наверное, получится использовать декомпилятор)
в) получил код на ассемблере (или на С, паскале и т.п.)
г) просмотрел код, где надо поправил под новую винду
д) добавил новые тестуры и прочие объекты вместо старых, где нужно
е) скомпилировал

На практике же:
*в) получил код на типа-ассемблере (или на типа-С, типа-паскале и т.п.). Дело в том, что читабельность такого кода очень низкая. Немалую часть читабельности предоставляют коду правильно названные переменные и комментарии. Вы этого будете лишены напрочь. Плюс будет много левого кода, который прилепил компилятор в процессе оптимизации.
*г) дело это долгое и непростое. Программа всего лишь в 10кб экзешника в исходном коде будет занимать сотни/тысячи строк кода. что уж говорить о паре сотен килобайт? Добавим сюда нетривиальные решения, которые нередко встречались в старом коде. Добавим загрязненность кода из-за компилятора и декомпилятора.
*д) а вот фиг. Многие игры делаются на основе движков. Пусть не общедоступных, а самопальных, но все же. Да, это позволяет повысить читабельность кода. Только вот изменить движок, у которого в конструкции даже и близко не предполагается работа с определенными типа, зато есть хитрые оптимизации для работы с имевшимися - задача не тривиальная. С играми, где движков вовсе не было, дело еще хуже - там извращения на каждом шагу.

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

_________________
Изображение
Изображение
Группа нашего стрим-канала в ВК
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дизассемблирование и декомпиляция программ(игр)
СообщениеДобавлено: 27 мар 2013, 22:48 
старожил
Аватара пользователя

Зарегистрирован: 30 июл 2010, 17:22
Сообщения: 304
admin писал(а):
Без знаний ассемблера как такового этот процесс является невозможным. :-)

Это знание можно приобрести :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дизассемблирование и декомпиляция программ(игр)
СообщениеДобавлено: 27 мар 2013, 22:49 
старожил
Аватара пользователя

Зарегистрирован: 30 июл 2010, 17:22
Сообщения: 304
Уби писал(а):
Да и со знанием думаю желания возиться с этим быстро отпадёт. Потратишь уйму времени не понятно на что.

Тут зависит от того, как делать. Можно начать с простых игр такие как Диггер, Пакмэн и змейка. Понятное дело что дело в объеме кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дизассемблирование и декомпиляция программ(игр)
СообщениеДобавлено: 27 мар 2013, 23:01 
старожил
Аватара пользователя

Зарегистрирован: 30 июл 2010, 17:22
Сообщения: 304
Однако игру Open TTD сделали на C++ и при помощи Reverse Engineering. Тоже самое и с Gobliiins 1. Для обратной инженерии нужно знать архитектуру старого и нового железа, а также особенности ОС. Я то не просто на Windows и новое железо собрался переделывать игру, но и на Unix.
Да. Код будет в непонятном виде(для человека, но не машины) без комментариев и неосмысленных переменных.
Объем будет велик. Понятное дело, что может дажет человеческой жизни не хватить. :)
Для упрощения задачи можно из старой игры взять только часть кода. ИИ, скрипты, особенности геймплея и некоторые ресурсы. Все остальное можно программировать на C или Delphi 7 + некоторые вставки для ассемблера там, где требуется критическая производительность. По такому принципу выходят патчи для игр.
Текстуры, музыка и видео это уже дело дизайнеров, музыкантов и художников. :) Программист лишь все это привязывает к железу.
PS. На самом деле я все это знаю, просто тему подал в другом виде. Я не предлагаю конечный проект. Когда начну этим заниматься, я всех уведомлю. Но мне надо знать весь инструментарий, который потребуется и книжки, которые надо будет прочитать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дизассемблирование и декомпиляция программ(игр)
СообщениеДобавлено: 28 мар 2013, 02:01 
Первый Maus на деревне
Аватара пользователя

Зарегистрирован: 11 окт 2009, 23:27
Сообщения: 8110
Откуда: Königsberg in Preußen
Mysyk писал(а):
Однако игру Open TTD сделали на C++ и при помощи Reverse Engineering. Тоже самое и с Gobliiins 1.

Я и не говорил, что это сделать нельзя. Вопрос в том, насколько это имеет смысл. Если нескольким умным людям больше заняться нечем - почему бы и нет? ;)

Mysyk писал(а):
Я то не просто на Windows и новое железо собрался переделывать игру, но и на Unix.

На Unix вряд ли имеет смысл. На Linux лучше обратите внимание. :trollface:
На всякий случай, если вы не в курсе, Linux - не Unix. Юникс можно считать эдаким двоюродным дядей линукса, но отличий тоже немало, да и среди линуксов дистрибутивов разных полно. Которые нередко не дружат с софтом для другого дистрибутива. Можно писать под ядро и использовать только абсолютно стандартные вещи, но я сразу говорю - муторное это дело. Зато хорошо с кишками линукса разберетесь, так что польза будет.

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

Угу, только сначала надо весь этот код выделить в той куче, что вы получите от дизассемблера, да еще и на ассемблере. Кстати, вы в курсе, что нередко дизассемблер/декомпилятор дают код, которые не компилируется? Да-да. Приходится реально копать код и разбираться, что, где и как, чтобы понять, почему же оно не компилится и как это исправить. :)

Mysyk писал(а):
PS. На самом деле я все это знаю, просто тему подал в другом виде. Я не предлагаю конечный проект. Когда начну этим заниматься, я всех уведомлю. Но мне надо знать весь инструментарий, который потребуется и книжки, которые надо будет прочитать.

С инструментарием все просто. Спрашиваем гугл "декомпилятор delphi" (это если вы знаете, что программа на дельфи написана; можно, конечно, попробовать скормить экзешник всем декомпиляторам и понадеяться, что какой-то выдаст код). Но чаще декомпилятор не будет помогать и надо будет дизассемблер. Также у гугла спрашиваем про него и качаем.
Ну а книжки читайте по архитектуре и ассемблеру i286, i386, i486 и остальных процессоров. Это чтобы можно было понимать код. Чтобы написать новый надо будет искать отдельные статьи в инете про те моменты, которые вы в данный момент не знаете как реализовать. Книги тут не лучший выбор, т.к. часто в них слишком общая информация или вообще никак не затрагиваются нужные темы. Мне понравился сайт stackoverflow. Даже с моим никаким знанием инглиша там находятся ответы на 90% вопросов, особенно по работе с макосью и айосью.

_________________
Изображение
Изображение
Группа нашего стрим-канала в ВК
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Дизассемблирование и декомпиляция программ(игр)
СообщениеДобавлено: 28 мар 2013, 03:08 
старожил
Аватара пользователя

Зарегистрирован: 30 июл 2010, 17:22
Сообщения: 304
В любом случае надо будет начать с простеньких игр. :) Чтобы понять как это делается.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Новая темаОтветить Страница 1 из 1   [ Сообщений: 9 ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron


Powered by phpBB © 2000 - 2010 phpBB Group
Style by Daniel St. Jules of Gamexe.net | перевод websok.ru

Русская поддержка phpBB

Яндекс цитирования