Pull to refresh

Comments 19

Нужно было взять OSystem от ScummVM, на ней на разный платформах, в том числе для Андроида есть всяческие оптимизации рендернига.
Спасибо за подсказку, обязательно гляну для общего развития.
UFO just landed and posted this here
Хотелось более сжато и наглядно рассказать о результатах декомпиляции, процесс поначалу нереально скучен и представляет собой многочасовое смотрение в псевдо-си код в попытках отыскать закономерности, ориентируясь на куски отладочных сообщений, сейчас по прошествии нескольких лет, мне вообще он кажется не стоящим потраченного времени.
Ничего гипер-сложного. Просто занудно. Из инструментов понадобится декомпилятор и очень желательно отладчик. Декомпилятор лучше всего брать IDA. Из нюансов, что его практически нереально самому купить — стоит дорого, а тем более с плагином Hexrays, который очень сильно облегчает код, т.к. позволяет смотреть сразу не в ассемблерный листинг, а в си-подобный псевдокод, правда, нужно его немного изначально настроить, но это несложно. Отладчик можно любой начиная от OllyDbg до SoftIce. Он позволит изучить то как идут вызовы функций и сразу перескакивать к интересным кускам кода, тем более, что точки останова можно устанавливать не только по адресам обращений, но и по условиям вроде «если в ячейку такую-то записывается значение вида такого-то». А потом можно открывать декомпилятор и смотреть в нем что же это за код был. Кстати, в отладчике минимальные функции декомпиляции то же есть — он отображает код в виде ассемблерных инструкций. Получается нагляднее, чем просто смотреть в машинные коды.
Далее очень быстро из листинга вычленяются строковые константы, отладочные выводы, стандартные функции (вроде memcpy — тут дизассемблеру помогает встроенная в него база стандартных сигнатур библиотечных функций, правда, memcpy можно самому угадать про тривиальному, «классическому» коду этой функции), импорты (это функции, которые вызываются из внешних библиотек — DLLек). Когда это сделано, то можно потихоньку, кропотливо восстанавливать алгоритм работы программы.
Учтите, что иногда с наскока результат не получается и приходится изобретать способ как узнать как работает программа. Поэтому зацикливаться на одном инструменте не стоит. Можно ставить эксперименты — портить или изменять файлы данных и ресурсов и смотреть как себя поведет программа. При этом она может быть переключиться на какие-то другие ветки исполнения, что даст дополнительную информацию для анализа.

Еще один метод анализа работы программы заключается в использовании снифферов (начиная от утилит фирмы sysinternals и кончая самопалом). Они перехватывают системные вызовы и пишут их в файл протокола. Обычно они более полезны для анализа вредоносных программ или, например, чтобы найти где хранятся настройки какой-либо программы для переноса ее на другой компьютер. Но и для разбора алгоритма работы они тоже могут пригодиться.
That's beautiful.jpg
теперь осталось дождаться пенсии
UFO just landed and posted this here
UFO just landed and posted this here
Очень надеюсь, что когда-нибудь портируют Космических рейджеров на Android.
Рейнджеров уже, наверное, не портируют, но сейчас активно пилят игру по мотивам рейнджеров и тоже в космосе =) Называется, VoidExpanse — кому интересно идите на оф. сайт и изучайте.
По мотивам видел браузерку (far7), в принципе терпимо.
Sign up to leave a comment.

Articles