Рубрика «reverse engineering» - 14

От переводчика:
Основная цель перевода это попытка помочь тем программистам кто пишет статические распаковщики исполняемых файлов. Другими словами эта информация нацелена на практикующих reverse-engineer-ов. Под статичеческим распаковщиком понимаю программу которая поданный на вход упакованный или запротекченный исполняемый файл анализирует и создает на выходе файл, как будто бы тот создан каким-либо компилятором. Особенностью такого типа распаковщиков в том что он работает исключительно на знании структуры защиты или упаковки файла, т.е. без применения «сброса дампа», «востановления импорта» и др. типов «читерства».

При изучении упакованных файлов к примеру с помощью UPX, RlPack и др. часто встречаешься с кодом где делаются некоторые магические действиями с маш. инструкциями переходов байты 0xE8, 0xE9 и др. Этой магией является «фильтрация» и она направлена на улучшение степени сжатия исполняемого файла.

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

Ниже следует первод небольшого но крайне полезного текстового файла "%UPX_SOURCE%docfilter.txt". В этом пути под UPX_SOURCE подразумевается файловый путь до исходных кодов к UPX версии 3.91. Все что описано про UPX также применимо и к другим упаковщикам.

Читать полностью »

Дешевые электронные «свечи» в последнее время, кажется, повсюду. Я не обращал на них особого внимания, пока не заметил, что на самом деле в них используется особый светодиод — со встроенным «моргательным» контроллером. Теперь-то совсем другое дело: кому не нравятся таинственные светодиоды? Полчаса спустя я уже набрал охапку мерцающих светодиодов китайского производства.

Конечно, самый интересный вопрос — как они работают? Учитывая, что стоят они буквально по несколько центов за штуку, там внутри не может быть какой-то дорогой электроники. В связи с этим возникает еще один вопрос: правда ли эти светодиоды хуже, чем многочисленные «свечи» на микроконтроллерах, схем которых полно в интернете?
Читать полностью »

Часто приходиться слышать о том, что сильные и богатые корпорации вроде Google, Facebook или LG следят за каждым пуком несчастных пользователей. И исследовав некоторое из их software, я должен признать что таки да — они следят. Шпионят, гады.

Вот намедни я исследовал самый свежий (на момент написания этой статьи) официальный iOS-клиент Twitter версии 5.13.1. Мне, кроме всего прочего, было интересно посмотреть на траффик между клиентом и сервером. Поскольку клиент Twitter использует certificate pinning, его траффик довольно трудно перехватить с помощью Fiddler2 и подобных программ. Поэтому я написал define-команду для GDB, который цепляется на точку останова в [NSURLConnection start] и дампит в консоль интересные мне поля NSURLConnection непосредственно перед вызовом этого самого start. Такой нехитрый в общем-то фокус позволяет видеть что именно программа посылает на сервер ещё до того как это «что именно» будет зашифровано для дальнейше передачи по HTTPs.

И знаете что я увидел? Оказывается клиент Twitter, кроме своих обычных запросов (регистрация пользователя, авторизация, твит и т.п.) часто… нет, не так… очень часто посылает на сервер POST запросы на некий загадочный URL https://api.twitter.com/1.1/jot/client_event. Эти загадочные запросы отсылались на сервер почти по любому поводу. Я запустил клиент — запрос пошел! Я нажал кнопку «Sign in» (ещё не залогинился, просто кнопку жмакнул) — запрос пошел! Вылез экран логина, поле «Username» получило фокус — запрос пошел! Я свернул клиент — запрос пошел!.. Я конечно удивился и полез разбираться. Читать полностью »

image
Глядя на серию постов о тридцати строчном javascript программировании, тоже захотелось что-нибудь написать, правда не в 30 строк, но потратив минимум времени, just for fun. Был скачан установщик классической Grand Theft Auto для Windows, а т.к. эта GTA работает только в стандартных разрешениях с соотношением сторон 4:3, я решил написать плагин, который бы запускал её в родном разрешении моего монитора(1920x1080).
Читать полностью »

Всем добра.

В прошлый раз я остановился на том, что внедрил Arial в игру и был доволен.
image

Сразу стали видны минусы, шрифт не вписывается в стиль игры.
Появились новые заморочки:

  • внедрить красивый русский шрифт, стилизованный под оригинальный,
  • разобраться с пропуском почти всех видео в dosbox.

Инструменты: IDA, dosbox + debugger, winhex.
Читать полностью »

Всем добра!

Основанная на одноименной новелле Харлана Эллисона (Harlan Ellison) игра I Have No Mouth, and I Must Scream является одним из самых мрачных квестов всех времен. Давящая атмосфера не отпускает до самой развязки.

Недалекое будущее. Три сверхдержавы, США, Россия и Китай, каждая стремясь превзойти соперниц, создали суперкомпьютеры для ведения войн. Но они просчитались. Объединившись в единое целое, называющее себя AM, три суперкомпьютера, использовав мощь, данную им людьми, стерли человечество с лица земли. В живых компьютер оставляет только пятерых, которым предстоит послужить ему игрушками для бесконечных пыток.

В прошлый раз я описывал 8-битный шрифт, а в этот раз удалось разобрать 1-битный.
Оба варианта шрифтов не зашифрованы и не сжаты, это сильно упростило задачу.

Инструменты: IDA, dosbox + debugger, winhex, GBS.

КДПВ
image
Читать полностью »

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

Как-то раз, читая музыкальные форумы, я наткнулся на тему с обсуждением саунд дизайна в фильме Обливион. Людей интересовал процесс создания звуков дронов. Так как ответов по существу, спустя несколько недель, в той теме так и не появилось, а в официальном видео была одна вода, я решил попробовать найти ответ самостоятельно, применив методы обратной разработки.

В качестве референса была выбрана первая сцена с участием дрона (на 12-й минуте фильма), с которой можно ознакомиться на Ютюбе. После нескольких часов работы я смог получить следующий результат:


Читать полностью »

Как я писал фикс широкоэкранных разрешений для FlatOut
Не так давно я занимался написанием фиксов для нескольких старых игр, чтобы исправить искажение картинки и интерфейса на широкоформатных мониторах. Попросили взглянуть на FlatOut, вот и появилась идея заодно написать об этом.

Читать полностью »

Ищем коды уровней в Prehistorik 2
В игре Prehistorik 2 не предусмотрены сейвы, но на каждом уровне есть (болтается в воздухе в некотором месте уровня) код уровня. Есть два режима прохождения, Beginner и Expert, код также определяет режим. При старте игры можно начать с первого уровня, а можно ввести код и попасть сразу на соответствующий уровень. На одном и том же компьютере с неизменным окружением коды не меняются, но на разных компьютерах коды, вообще говоря, разные, так что коды, найденные при прохождении и тщательно выписанные на бумажку, станут совершенно бесполезны в другом окружении. Поэтому вместо бумажки лучше иметь программу, которая пишет коды для конкретного окружения. Готовый результат: genpass.com, представляет из себя DOS-программу, которая должна запускаться в том же окружении, что и игра. Альтернативный вариант попасть на нужный уровень из экрана ввода кода: ввести три кода ADDE C0DE F00D либо DEAD C0DE F00D, каждый из трёх кодов сам по себе неверен, но при вводе их в таком порядке четвёртый код — номер уровня от 1 до 10, плюс 10 для режима Expert, приводит сразу на запрошенный уровень.

Под катом — процесс исследования. Требуется знание ассемблера x86 хотя бы на уровне «читаю со словарём».

Читать полностью »

Вступление

Добрый всем, хочу рассказать про тёплую и ламповую стратегию детства — Противостояние. Игра была выпущена в 1996-98 гг нашей Российской фирмой Дока.
Игра — стратегия в реальном времени про вторую мировую войну. Спустя много лет я решил сперва пройти её и записать прохождение, а затем постараться по максимуму продлить удовольствие от игры, распаковывая ресурсы и пытаясь понять игровую логику.

Под катом я опишу процесс извлечения музыки, графики и немножко не дотяну до редактора карт.
Так же в описании будут отсылки на 8-битную палитру цветов, псевдоархивы, RLE-сжатие и чуток HEX-редактора. В самом коде я подсмотрел только алгоритм декодирования изображений, сжатый RLE.

image
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js