Как стать автором
Обновить

Комментарии 40

Отличное резюме вышло, желаю удачи :)

забавно)

автор хороший джун! жаль мы сейчас никого не ищем.

25 лет назад я тоже был джуном и тоже реверсил все что можно, попутно делая полиморфы. в свое время даже с Руссиновичем над одним проектом работал.

Интересно, чем вы сейчас занимаетесь, в смысле, какие технологии крутите? Спрашиваю, потому что, как по мне, автор на полноценного миддла тянет, как минимум. И знание алгоритмов, паттернов, понимание оптимизации, с матаном неплохо. А синтаксис и семантика c++ в привычку войдет максимум за месяц упорной работы над проектом.

Спрашиваю, потому что, как по мне, автор на полноценного миддла тянет, как минимум.

Это совсем не каждый лид сможет, что уж.

Ну у Лида задачи другие, ему такое и не надо особо.

А автор конечно молодец, терпенья ему не отнять. Это очень хорошее качество.

автор хороший джун

Школяр, чё уж, опускать так опускать! Автор в одиночку проделал сильнейшую работу, и показал, что может добывать для геймдев компании деньги, в одиночку создавая переиздания старых игр.

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

дык про "джуна" это наоборот похвала была (sic!)
автор ведь сам в последней строке написал про просьбу в личку ("Джун нужен кому?")

Жесть, если автор джун, то мне в ближайшем будущем вообще не стоит мечтать сменить стек на С++. Мой уровень и уровень автора вообще несопоставимы. А я надеялся, что сам уже почти джун :-)

Автор, безусловно, молодец. Статья любопытная и он много чего проделал.

Но при чём тут уровень в C++?

Проделана просто фантастическая работа. Моё почтение!

Касательно вопроса в статье, у меня терпелки не хватает. Я занимался реверсом, при чём более аппаратно-программным. Но понял, что эт не моё.

Опрос на реверс тут появился совершенно случайно. Я промахнулся по кнопке и добавил опрос, который уже никак не удалить. Админы хабра в курсе дела, если что.

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

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

Интересно, а у разработчиков исходники не сохранились? Столько трудов пропадает, имею ввиду исходники программ, игр, утилит.

На Github есть репозитории с некоторыми исходниками игр
Например videogamepreservation (или даже от самих разработчиков), но зачастую цифровое наследие программ (и игр) бывает ещё кому то принадлежит и не известна реакция этих правообладателей и на такое исследование бинарного их состояния. (могут, например, заблочить игру при публикации её на публичных игровых площадках по разным причинам)
Спасибо за статью и некоторые выводы по техникам используемым при создании игр 90-х годов в рамках 8МБ памяти и процессора 486. :)

P.S. Теже Need For Speed 1, Quake 1 успешно тоже работали и в таких ограничениях по памяти
на процессорах уровня P1 (Pentium 1 — 100МГц), а сейчас, зачастую у микроконтроллеров большие частоты и возможностей по выводу картинки игры на LCD экран.
(по сравнимым возможностям с девайсами уровня КПК из 200x годов)
НЛО прилетело и опубликовало эту надпись здесь

Мы сделали встраиваемую систему (терминал на RPi) - у которой вообще весь UI был на HTML+JS. Потому что скорость разработки UI - раз в 5 выше чем на любой другой технологии, плюс возможность его как угодно кастомизировать под заказчика или какие-то события.

Процессор у малинки несопоставимо мощнее чем тот на комментарий которого вы ответили, поэтому затраты ресурсов на поддержку ui у вас знначительно ниже чем профит от быстрой разработки

У того, на чей комментарий я отвечал - UI только раздается самой "железкой", а у нас и браузер на ней же работал.

стоило в нем включить HTTPS/TLS

Сопроцессор просится в такие задачи. Как и для сенсорного экрана при использовании 8-битного МК, в экран может быть встроен процессор в тысячи раз мощнее и взаимодействовать с МК по простому API пересылая пару параметров.

Отличный тотал идиот гайд! Спасибо, почитал с удовольствием, хоть и не реверсер.

Возможно, что такой джун нам нужен. Как раз со знаниями x86, ассемблера, ну и c/c++ заодно. Вы в каком городе? Кидайте резюме в личку, попробую поговорить с HR.

В процессе чтения вспомнил про Dungeon Keeper 1-й. Но к сожалению там EA вцепился мёртвой хваткой и ремастера мы не увидим.

Если у вас не так и нет библиотечных функций. Вероятно стоит попробовать открыть файл с другими настройками, например как MS-DOS executable или выбрать другой тип процессора, например 486й.
Для той версии IDA, которой Вы пользовались (и для более поздних) достаточно использовать тип процессора «MetaPC (disassemble all opcodes)». Все остальные варианты для 86 процессоров в настоящее время практически являются архаизмами, этакими историческими и архитектурными памятниками этапов развития как процессоров, так и самой ИДЫ. Авторы их оставляют в описании большей частью «до кучи», чтоб списки выбора были «побольше».
Единственным вариантом применения этих «процессорных модулей» может являться случай, когда Вы желаете «сократить» число обрабатываемых опкодов, а не расширение, которое представлено в MetaPC. Но можете нарваться на ошибки в «старых» модулях, MetaPC-то регулярно обновляется и подправляется.
MASM не поддерживает такую запись unicode текста, поэтому по каждой такой записи правой кнопкой мыши — Undefine.
А кто сказал, что это unicode-текст? Похоже Вы переходили на более новую версию ИДЫ и потребовалось автоматическое преобразование. А вот при автоматическом преобразовании в формат «7.0» из предыдущих версий, ИДА и выкидывает такое представление для строк.
Там же только ASCII символы в строках. Тогда уж используйте «U», а затем «A».
Правда, в примере могут быть реально не строки, но это отдельная песня!

в наше время это был уровень джуна, да. хоть минусяторам это и не нравится;)

Реверс никогда не был уровнем джуна. Джуны в нортоне панельки искали как включать.

Мы в университете реверсили всё подряд. В основном исследуя способы защиты приложений. Так вот, с тех пор прошло 20 лет, а я себя до сих пор программистом не считаю, хотя и работаю в смежной области.)))

Вы забыли добавить, что с "Руссиновичем над одним проектом работали"

Да что там скромничать. Руссинович учился у него. Недолго правда - не потянул салага

Было интересно, спасибо Вам!

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

Автор сделал на славу.

Спасибо за статью. Приходилось заниматься патчингом 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++ код, после чего игра будет работать на любой платформе.

Автору спасибо за статью. Во первых отличные игры — гоняю первую и вторую часть на ДосБоксе.
А ещё, как тут написал один комментатор — доходчиво описан метод реверса — мне хоть сейчас это не надо, но иметь понятие в теме полезно. За одно понять, как в прошлом всё оптимизировали.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации