Comments 40
Отличное резюме вышло, желаю удачи :)
забавно)
автор хороший джун! жаль мы сейчас никого не ищем.
25 лет назад я тоже был джуном и тоже реверсил все что можно, попутно делая полиморфы. в свое время даже с Руссиновичем над одним проектом работал.
Интересно, чем вы сейчас занимаетесь, в смысле, какие технологии крутите? Спрашиваю, потому что, как по мне, автор на полноценного миддла тянет, как минимум. И знание алгоритмов, паттернов, понимание оптимизации, с матаном неплохо. А синтаксис и семантика c++ в привычку войдет максимум за месяц упорной работы над проектом.
автор хороший джун
Школяр, чё уж, опускать так опускать! Автор в одиночку проделал сильнейшую работу, и показал, что может добывать для геймдев компании деньги, в одиночку создавая переиздания старых игр.
Возможно он и не станет никуда устраиваться, а откроет собственный бизнес по переизданиям, а вы его в джуны пихаете.
Жесть, если автор джун, то мне в ближайшем будущем вообще не стоит мечтать сменить стек на С++. Мой уровень и уровень автора вообще несопоставимы. А я надеялся, что сам уже почти джун :-)
Касательно вопроса в статье, у меня терпелки не хватает. Я занимался реверсом, при чём более аппаратно-программным. Но понял, что эт не моё.
А если это Watcom, то к нему же декомпиляторы были? Или они плохо работают?
Реверсить приходилось буквально пару раз за 15 лет карьеры. Один раз нужно было восстановить алгоритм вычисления контрольной суммы в протоколе общения с девайсом, разработчик которого уже не существует. Другой - когда приложение падало внутри чужой библиотеки, от которой не было исходников. Занятие увлекательное, но очень трудоемкое.
Интересно, а у разработчиков исходники не сохранились? Столько трудов пропадает, имею ввиду исходники программ, игр, утилит.
Например videogamepreservation (или даже от самих разработчиков), но зачастую цифровое наследие программ (и игр) бывает ещё кому то принадлежит и не известна реакция этих правообладателей и на такое исследование бинарного их состояния. (могут, например, заблочить игру при публикации её на публичных игровых площадках по разным причинам)
P.S. Теже Need For Speed 1, Quake 1 успешно тоже работали и в таких ограничениях по памяти
на процессорах уровня P1 (Pentium 1 — 100МГц), а сейчас, зачастую у микроконтроллеров большие частоты и возможностей по выводу картинки игры на LCD экран.
(по сравнимым возможностям с девайсами уровня КПК из 200x годов)
Мы сделали встраиваемую систему (терминал на RPi) - у которой вообще весь UI был на HTML+JS. Потому что скорость разработки UI - раз в 5 выше чем на любой другой технологии, плюс возможность его как угодно кастомизировать под заказчика или какие-то события.
стоило в нем включить HTTPS/TLS
Сопроцессор просится в такие задачи. Как и для сенсорного экрана при использовании 8-битного МК, в экран может быть встроен процессор в тысячи раз мощнее и взаимодействовать с МК по простому API пересылая пару параметров.
Отличный тотал идиот гайд! Спасибо, почитал с удовольствием, хоть и не реверсер.
В процессе чтения вспомнил про Dungeon Keeper 1-й. Но к сожалению там EA вцепился мёртвой хваткой и ремастера мы не увидим.
Для той версии IDA, которой Вы пользовались (и для более поздних) достаточно использовать тип процессора «MetaPC (disassemble all opcodes)». Все остальные варианты для 86 процессоров в настоящее время практически являются архаизмами, этакими историческими и архитектурными памятниками этапов развития как процессоров, так и самой ИДЫ. Авторы их оставляют в описании большей частью «до кучи», чтоб списки выбора были «побольше».
Единственным вариантом применения этих «процессорных модулей» может являться случай, когда Вы желаете «сократить» число обрабатываемых опкодов, а не расширение, которое представлено в MetaPC. Но можете нарваться на ошибки в «старых» модулях, MetaPC-то регулярно обновляется и подправляется.
А кто сказал, что это unicode-текст? Похоже Вы переходили на более новую версию ИДЫ и потребовалось автоматическое преобразование. А вот при автоматическом преобразовании в формат «7.0» из предыдущих версий, ИДА и выкидывает такое представление для строк.
Там же только ASCII символы в строках. Тогда уж используйте «U», а затем «A».
Правда, в примере могут быть реально не строки, но это отдельная песня!
в наше время это был уровень джуна, да. хоть минусяторам это и не нравится;)
Вы забыли добавить, что с "Руссиновичем над одним проектом работали"
Было интересно, спасибо Вам!
Порой читаешь такие статьи и диву даешься от того, насколько сам далёк от подобных вещей
Автор сделал на славу.
Спасибо за статью. Приходилось заниматься патчингом nes/snes образов на предмет изменения поведения игры, но это ни в какое сравнение не идет.
Класс, возможно автору понравится Brigador, он чуточку менее динамичный, но авторы явно вдохновлялись Бедламом.
>но для разового проекта, как этот, я гонял IDA у друга, чего и вам советую.
Это не тот друг, который всегда стесняется что-то спросить?)
А вообще напомнило творчество ураганных студенческих лет: https://web.archive.org/web/20051028032907/http://wasm.ru/article.php?article=coderip01
Прикольно. Я тоже люблю поковырять старые игрушки. Например, KURTAN смог исправить, в т.ч. чтобы не бегал как угорелый. Заменил код функции delay на код из TurboC 3.0, и немного оптимизировал.
https://www.old-games.ru/forum/threads/kurtan.61725/#post-1553544
Использую UASM, там можно компилировать бин код, ака шеллкод, который я вставил взамен старого. Заработало.
Ещё ковыряю XRayExtensions расширение движка XRay который в сталкере используется.
По сути получилось как с Syndicate Wars.
Плюс такого подхода - нужно сделать только обвязку и поправить проблемные места и всё будет работать. Достаточно быстро.
Минусы такого подхода - прибито гвоздями только к x86 архитектуре. И прямо используется оригинальный код, пусть и скомпилированный. Т.е. с правовой стороны достаточно плоховато.
В идеале же - следующий шаг постепенная замена каждой функции на C/C++ код, после чего игра будет работать на любой платформе.
А ещё, как тут написал один комментатор — доходчиво описан метод реверса — мне хоть сейчас это не надо, но иметь понятие в теме полезно. За одно понять, как в прошлом всё оптимизировали.
Как я портировал DOS игру