Обновить
128K+

Реверс-инжиниринг *

Расковырять и понять как работает

126,29
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Исследование чужого чита для FarCry 4

Время на прочтение3 мин
Охват и читатели13K
Не так давно приобрел игру FarCry 4 и она мне сразу очень понравилась. Со временем захотелось немного поковыряться во внутренностях этой игры и написать для нее чит.

Немного поковырявшись в игре при помощи отладчика, мне удалось без особого труда узнать, как сделать следующие функции: бесконечные патроны, стрельба без перезарядки, телепортация игрока, скорострельность, убрать отдачу. Так же узнал, как увеличить высоту прыжка игрока. Но вот когда я принялся искать, как сделать игрока бессмертным (мне казалось, что в этом ничего сложного не будет), возникли трудности.
Читать дальше →

Разбор форматов: звук в некоторых играх на Unreal Engine

Время на прочтение6 мин
Охват и читатели22K


Культура модификации игр зародилась ещё в древние времена. Самое раннее, что я помню, это Wolfenstein 3D (1992 год). Если не ошибаюсь, можно было рисовать свои карты, а потом и новых врагов, заменять текстуры и звуки. Главным препятствием в моддинге является разбор неизвестных форматов данных. Оставим моральные аспекты этого явления для других ресурсов, и остановимся на технических сложностях, которые могут возникнуть в этом нелегком деле.

У меня накопилось довольно много историй такого рода, от самых простых, типа разбора простейшего архива, где в одном файле хранятся много тысяч файлов игры, до замены 3D-моделей, исследования и написания нестандартных кодеков звука. Расскажу одну из них, средней сложности.

Допустим, у вас появилось желание заменить определённые фразы в игре, или вообще замахнуться на полную озвучку на каком-нибудь языке, для которого у разработчиков не хватило сил или ресурсов. Казалось бы, надо только записать звук, найти где он находится в игре, и заменить нужные файлы. Но не всегда это бывает просто, например, в последних играх из серии Batman: Arkham используется звуковой движок wwise, который уже довольно давно интегрирован в Unreal Engine.

Я уже не раз сталкивался с UE, но, как известно, коммерческие разработчики имеют возможность полностью менять любую часть кода движка, поэтому почти все игры получаются уникальными с точки зрения структур данных, и это всегда интересно поисследовать.
Читать дальше →

Trojan-Downloader.Win32.Cabby.cemx — Часть вторая — Функционал

Время на прочтение6 мин
Охват и читатели19K


В предыдущей части разобрали и сняли первый слой обороны зловреда. Сделали дамп процесса после расшифровки основного кода, сохранив его в отдельном исполняемом файле.
Настало время разобраться с логикой и смысловой нагрузкой самого Downloader'а.
Читать дальше →

Правим баг без исходных кодов

Время на прочтение9 мин
Охват и читатели39K
image

В предыдущей статье мы разобрали, как реверс-инжиниринг может помочь в получении каких-либо преимуществ перед остальными пользователями. Сегодня мы поговорим ещё об одном применении обратной разработки — исправлении багов в отсутствии исходных кодов приложения. Причин заниматься подобными вещами может быть целое море — разработка программы давным-давно заброшена, а её сорцы автор так и не предоставил общественности / разработка ведётся совершенно в другом русле, и авторам нет никакого дела до возникшего у вас бага / etc, но их объединяет общая цель — исправить сломанный функционал, который постоянно вам досаждает.

Что ж, ближе к делу. Есть такая широко известная в узких кругах программа под названием «Govorilka». Как объясняет её автор, это ничто иное, как «программа для чтения текстов голосом». По сути, так оно и есть. При помощи неё было озвучено множество популярных и не очень видео, рапространившихся по всей сети. Программа имеет консольную версию под названием «Govorilka_cp», которую удобно вызывать из своих собственных приложений, что, собственно, я и сделал в одном из своих проектов.

К сожалению, в процессе распространения моего софта был обнаружен довольно странный момент — на некоторых машинах говорилка падает абсолютно на любых фразах, причём падение было вызвано не моим взаимодействием с данной программой, а самой говорилкой. В попытках выяснить как можно больше деталей о происходящей ошибке я обнаружил, что на двух, казалось бы, совершенно одинаковых системах говорилка ведёт себя противоположным образом — на одной она стабильно работает без каких-либо ошибок, а на другой — падает на каждой переданной ей в качестве аргумента фразе. Эта ситуация мне изрядно поднадоела, и я решил во что бы то ни стало разобраться с данной проблемой.

Учитывая, что говорилка не обновлялась уже несколько лет, а сам автор оставил вот такое «послание» на своём сайте

image

, я понял, что надеяться мне не на кого, и решать проблему придётся самому.

Как протекал процесс, и что из этого вышло, читайте под катом (осторожно, много скриншотов).
Читать дальше →

Видео от пользователя: MacOS внутри ReactOS

Время на прочтение1 мин
Охват и читатели26K
image

Под катом спрятано видео, на котором один из пользователей нашего проекта демонстрирует работу приложений для MacOS внутри ReactOS при помощи Mini vMac.
Читать дальше →

Интервью о тестировании + скриншоты приложений, работающих в ReactOS, присланные тестерами

Время на прочтение1 мин
Охват и читатели43K

Рубрика «без комментариев». Ничего лишнего, просто свежие скриншоты.

image
Читать дальше →

Trojan-Downloader.Win32.Cabby.cemx — Часть первая — Распаковка

Время на прочтение12 мин
Охват и читатели36K
Привет, Хабр!

Скажу сразу: я не вирусный аналитик и не занимаюсь этой деятельностью профессионально. Работаю сетевым инженером в одной из компаний в группе компаний из трех букв. Так что прошу строго не судить и отнестись с пониманием.

Цель данной статьи — не экспресс анализ вредоносного ПО с целью написания отчета о высокоуровневой логике его работы, а погружение в реверс-инжиниринг с головой для повышения своих знаний и опыта. Поэтому пройдемся по всему алгоритму распаковки подробно.

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

Готов к конструктивной критике и буду рад вашим советам по оптимизации моих мыслей.

В недалеком прошлом в нашу компанию проник нашумевший CTB-Locker, что заинтересовало нашу службу информационной безопасности: почему не сработали антивирусы и фильтрация веб-трафика? Что конкретно делает данный зловред, хорошо описано на securelist. С этим все ясно и не имеет смысла проводить повторный анализ того, что и так неплохо описано.

С целью понимания причин инцидента рассмотрим именно вектор распространения данного зловреда.
Читать дальше →

Реверс-инжиниринг TL431, крайне распространенной микросхемы, о которой вы и не слышали

Время на прочтение14 мин
Охват и читатели117K
Кен, как и планировал, провёл реверс-инжиниринг микросхемы по фотографиям, сделанным BarsMonster. Барс в статье упомянул своё общение с Кеном, но этой переводимой статьи тогда еще не было.

Фото кристалла интересной, но малоизвестной, микросхемы TL431, используемой в блоках питания, даёт возможность разобраться в том, как аналоговые схемы реализуются в кремнии. Несмотря на то, что схема на фото выглядит как какой-то лабиринт, сама микросхема относительно проста, и может быть исследована без большого труда. В своей статье я попытаюсь объяснить каким образом транзисторы, резисторы и другие радиодетали запакованы в кремний для выполнения своих функций.


Фото кристалла TL431. Оригинал Zeptobars.
Читать дальше →

Как заработать очки, даже не запуская игру

Время на прочтение10 мин
Охват и читатели37K
image

Как-то вечером, сидя за компьютером, я наткнулся на одну инди-игру под названием «Shoot First» (игру можно скачать абсолютно бесплатно с сайта автора, а за донат любого размера вы получите специальную версию с двумя новыми видами оружия и ещё одним видом уровней). Геймплей её довольно незамысловат — игроку необходимо бегать по этажам в поисках прохода на следующий уровень, при необходимости собирая различные предметы (карты, ключи, etc) и попутно убивая встретившихся на его пути врагов. В общем, этакий action roguelike. Несмотря на кажущуюся простоту, игра меня довольно сильно зацепила, и я потратил не один час, пытаясь добраться как можно дальше и заработать как можно больше очков.

Кстати, об очках. После смерти персонажа и ввода имени игра отображает онлайн-таблицу рекордов:

image

Наигравшись вдоволь, я решил разобраться, как она устроена и попытаться обмануть игру, сказав, что я заработал нереальное кол-во очков.

Как протекал процесс, и что из этого вышло, читайте под катом (осторожно, много скриншотов).
Читать дальше →

Реверс-инжиниринг целочисленного деления на константу

Время на прочтение2 мин
Охват и читатели20K
Так бывает, что иногда реверсишь код, который занимается какой-то рутиной, не предполагающей каких-то серьезных вычислений и тут внезапно умножение на большую константу (поплачем, что на хабре нет хайлайтера для асма):

mov     edx, [ebp+end_of_buffer]
mov     eax, [ebp+src]
mov     ecx, edx
sub     ecx, eax
mov     edx, 80808081h
mov     eax, ecx
imul    edx
lea     eax, [edx+ecx]
mov     edx, eax
sar     edx, 7
mov     eax, ecx
sar     eax, 1Fh
sub     edx, eax
mov     eax, edx

Читать дальше →

Да какого, блин, хрена, D-Link⁈

Время на прочтение2 мин
Охват и читатели81K
Как уже писал в апдейте к посту про баг в HNAP DIR-890L, его нашли в начале года, в DIR-645, и выпустили патч. Сейчас D-Link выпустил патч и для DIR-890L.
Патчи для DIR-645 и DIR-890L одинаковые, поэтому я буду писать только про DIR-890L.

Хоть в предыдущем посте я рассматривал только выполнение команд, патч указывает на несколько дыр в безопасности, которые появились из-за использования strstr для валидации HNAP-заголовка SOAPAction:
  • Использование неаутентифицированных пользовательских данных в вызове system
  • Использование неаутентифицированных пользовательских данных в вызове sprintf
  • Неаутентифицированные пользователи могут выполнять привилегированные HNAP-запросы (такие, как смена пароля администратора)

Видите, D-Link признала все это в информации об уязвимости, и они ясно представляли все векторы атаки.
Итак, убрали ли они переполнение стека sprintf?

image
sprintf(cmd_buf, “sh %s%s.sh > /dev/console”, “/var/run”, SOAPAction);

Нет.
Читать дальше →

Заглянем за кулисы разработки: подборка исходных кодов классических игр

Время на прочтение10 мин
Охват и читатели90K
Обожаю заглядывать за кулисы. Мне интересно, как делаются вещи. Мне кажется, что большинству людей это тоже интересно.

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

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

Многие игры после выпуска исходников были улучшены и дополнены сообществом – я намеренно даю ссылки только на оригинальные исходники. Так что, если вас вдруг интересуют апгрейды – они могут существовать.

Многие игры были рассмотрены на сайте Fabien Sanglard. Если вам интересны подробности их работы, то пожалуйте к нему.

Можно заметить, что многие игры принадлежат id Software/Apogee. Совпадение? Не думаю. id славится открытостью и привычкой выпускать исходники. Старые коммерческие игры уже не имеют ценности и были бы потеряны – не лучше ли, чтобы кто-то учился чему-то полезному на их основе?

Итак, приступим (в хронологическом порядке):
Читать дальше →

Взламываем D-Link DIR-890L

Время на прочтение7 мин
Охват и читатели63K
Последние 6 месяцев, я был жутко занят и не следил за новыми хренями от D-Link. Чтобы немного поразвлечься, я зашел на их сайт, и меня поприветствовал этот кошмар:

Insane router
Самый безумный роутер D-Link DIR-890L за $300

Пожалуй, самым «безумным» в роутере является то, что он работает под управлением все той же забагованной прошивки, которую D-Link ставит в свои роутеры вот уже несколько лет…and the hits just keep on coming.
Читать дальше →

Ближайшие события

Исследуем результат работы php-транслятора

Время на прочтение17 мин
Охват и читатели26K
Здравствуйте. Думаю, что большинство веб-программистов знает, как работает php-интерпретатор.

Для тех, кто не знает:
Вначале, написанный нами код разбирается лексическим анализатором. Далее, полученные лексемы, передаются в синтаксический анализатор. Если синтаксический анализатор дал добро, то лексемы передаются транслятору, а он, в свою очередь, генерирует так называемые opcodes (operation codes). И только после этого, в дело вступает виртуальная машина PHP (та самая Zend Engine) которая и выполняет наш алгоритм из получившихся opcodes. Opcodes так же называют эдаким php-шным ассемблером.
Данная статья расскажет вам о том, какие opcodes и в каких случаях генерируются. Конечно, рассказать про все opcodes в рамках одной статьи не получится, но в данной статье будет рассмотрен конкретный пример и на его основе мы попытаемся разобраться что к чему у этих opcodes. На мой взгляд, самое главное, что вы узнаете прочитав статью, это то, как на самом деле происходит выполнение ваших исходных текстов и, возможно, это поможет вам в лучшем понимании языка php.

Советую вам налить себе чашечку капучино или просто зеленого чая, т.к. под катом листинги opcodes и php-кода…
Читать дальше →

Доклад Алексея Брагина на Russian Open Source Summit 2015

Время на прочтение2 мин
Охват и читатели4K
image16 марта 2015 года в Москве в очередной раз состоялся Russian Open Source Summit.

ROSS 2015 был призван осветить качественно новую роль Open Source как основного движителя развития современных информационных технологий в эпоху облаков, мобильности и социальных сетей. Только идеология Open Source сегодня позволяет реализовать на практике концепцию универсальной технологической платформы, обеспечивающей интероперабельность информационных систем и сервисов различных производителей. В качестве ярких примеров здесь можно привести Open Source проекты облачной операционной платформы OpenStack, программно-определяемых сетей (SDN), контейнерных технологий автоматизации развёртывания и управления приложениями в среде виртуализации (Docker, Rocket и др.).

В рамках мероприятия с докладом об опыте, полученном в процессе разработки ReactOS, выступил координатор проекта Алексей Брагин.
Читать дальше →

Исследование защиты игры Limbo. Кейген

Время на прочтение7 мин
Охват и читатели70K


Всем привет. Многие знают об этой замечательной игре — LIMBO! Вы даже наверняка покупали ее в Стиме, или качали с торрентов…
Я тоже ее купил когда-то (что и вам советую!), и прошел). Но, как всегда, мне было этого мало, и я, из спортивного интереса, решил изучить ее защиту. Так и появился кейген к игре LIMBO.
Читать дальше →

Исследование защиты PVS-Studio

Время на прочтение4 мин
Охват и читатели55K
PVS-Studio

Приветствую! Это мой первый пост на Хабре в принципе, но не первая статья о взломе ПО вообще, поэтому навык писать все с начала и по шагам, для начинающих крякеров, у меня есть. В данной статье я расскажу о том, как был отучен от триальности PVS-Studio.
Читать дальше →

Reverse Engineering ESP8266 — часть 2

Время на прочтение5 мин
Охват и читатели48K
Продолжаем исследование модуля ESP8266. В этот раз рассмотрим процесс загрузки прошивки для дизассемблирования.

Первая часть статьи здесь.


Содержание


  1. Введение
  2. Архитектура ESP8266
    • Карта памяти (адресного пространства)
    • Формат прошивки
    • Процесс запуска
  3. Инструменты
  4. Загрузка прошивки для исследования
  5. Ассемблер Xtensa
    • Регистры
    • Базовые операторы
    • Функции
    • Условные переходы
  6. Заключение
  7. Ссылки

Читать дальше →

Reverse Engineering ESP8266 — часть 1

Время на прочтение5 мин
Охват и читатели73K
Поддавшись общей волне энтузиазма относительно систем «Умный дом», а также имея профильное образование инженера АСУ ТП, с удовольствием занимаюсь данной темой в виде хобби. В этой статье поделюсь с вами своим опытом реверс-инжиниринга популярного модуля ESP8266.


Содержание


  1. Введение
  2. Архитектура ESP8266
  3. Инструменты
  4. Загрузка прошивки для исследования
    • ELF
    • Системная прошивка модуля
    • Пользовательская прошивка
  5. Ассемблер Xtensa
    • Регистры
    • Базовые операторы
    • Функции
    • Условные переходы
  6. Заключение
  7. Ссылки

Читать дальше →

Видео от пользователя: Windows 3.11 внутри ReactOS

Время на прочтение1 мин
Охват и читатели21K
40-летнему юбилею корпорации Microsoft посвящается.



На видео один из пользователей нашего проекта демонстрирует работу Windows 3.11 внутри ReactOS.