Reverse engineering

Содержание:

Naive attempt #2: runtime function hooks

Попробуем перенаправить вызовы (*stream).Write в функцию-прокси:

При попытке вызвать ngrok с данным хуком получаем краш следующего вида:

Тут нас ждет неожиданное препятствие в лице goroutines. Дело в том, что стек под горутины выделяется динамически: при недостатке места в существующем стеке он выделяется заново в другом месте, и текущее содержимое копируется. К сожалению, функции, генерируемые gcc, сохраняют старый указатель стека в регистре rbp (т.н. frame pointer), и при возврате из такой функции указатель стека начинает указывать на уже освобожденный старый стек (use-after-free). Таким образом, C тут не помощник.

Архаичные алгоритмы сжатия видео эпохи FMV-игр

В 90-е сложилась интересная ситуация: вычислительные мощности компьютеров были недостаточны для расчета хоть сколько-нибудь реалистичной графики и в тоже время компакт-диски предоставляли возможность записать огромный для тех времен объем информации. В общем, идея лежала на поверхности: неплохо бы улучшить качество игровой картинки за счёт видео контента и есть куда этот контент записать.
Но была и проблема: типичное игровое разрешение того времени — 320 на 200 точек при палитре из 256 цветов, что даёт нам 64 килобайта на кадр или полтора мегабайта на 25 кадров, при скорости чтения с компакт диска в 150 килобайт в секунду. Т.е. видео надо было жать и жать довольно сильно, а сжав, потом надо суметь декодировать, ведь мы помним, компы были слабенькие и декодирование, например, MPEG им было вообще не по силам. Тем не менее производители видео игр успешно решили проблему недостаточной производительности породив заодно множество видео-кодеков и игровых видео-форматов, некоторые из которых могли проигрываться аж 286-м (прописью: двести восемьдесят шестым) процессором.
Так началась эпоха FMV игр (Full Motion Video Games). Я думаю, многие помнят её ярких представителей: Crime Patrol от American Laser Games, Lost Eden, Cyberia, Novastorm и даже Command & Conquer, в который многие играли только ради видеовставок между миссиями. В те времена выглядело это очень круто. Вау! Вау! Ну а мне было интересно, как же они закодировали это видео, в книжках о мультимедиа приводили то же описание проблемы, что и я выше, но ничего внятного о методах сжатия не писали, видимо, авторы в этом мало понимали и пересказывали какие-то сомнительные слухи.
На самом деле, всё оказалось очень просто, методов было всего три штуки и все очень простые.

Современный обратный инжиниринг

В настоящее время термином «обратный инжиниринг» по большей части обозначается процесс получения цифровой 3D­модели реального изделия с использованием автоматизированных систем проектирования. Процесс начинается с 3D­сканирования, при котором форма объекта преобразуется в математический образ в виде облака точек. Для этого применяются лазерные сканеры, устройства структурированного белого или синего света, координатно­измерительные машины (КИМ) и компьютерная томография.

Наивысшей точностью (порядка 0,005 мм) обладают КИМ; оптические и лазерные сканеры отстают от них примерно на порядок. Однако для реверсного инжиниринга КИМ используются редко ввиду низкой скорости сканирования, а следовательно, проблем с получением большого количества точек.

Результаты сканирования выдаются в виде файлов измерений или файлов фасетной 3D­модели в форматах OBJ, PLY, WRL, STL, AOP, ASCII и др. Следует подчеркнуть, что после 3D­сканирования в распоряжении инженера имеется только полигональная модель. Это очень важный момент, поскольку он существенно влияет на дальнейшие процессы обратного инжиниринга.

Дело в том, что реальное 3D­сканирование никогда не даст идеального результата, и причины тут могут быть разными. В частности, есть проблемы со сканированием внутренних карманов. На рис. 1 в качестве примера показана сеточная модель с такими недостатками.

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

Необходимость доработки фасетной модели возникает не только из­за погрешностей сканирования. Редактирование может понадобиться в связи с модификацией детали, внесением каких­то изменений в конструкцию. Этим фактом обусловлена одна из сложностей обратного инжиниринга, поскольку большинство САПР работают с точным (BREP), а не с фасетным представлением.

Конечно, на основе полигональной модели можно получить BREP­представление, но долгое время для этого требовались дорогостоящие приложения. В массовом проектировании положение изменилось с появлением САПР среднего класса, обеспечивающих импорт и редактирование полигональных моделей с простым переходом на BREP­представление.

Первой из таких систем стала Solid Edge ST10 компании Siemens PLM Software. В ней была впервые использована технология объединенного моделирования с одновременным применением BREP и фасетного представления в одной и той же модели. В результате этап редактирования модели стал выглядеть так, как показано на схеме, приведенной на рис. 2.

Рис. 2

В Solid Edge ST10 редактирование фасетной модели сводится к применению привычных инструментов проектирования для работы с BREP­представлением.

После того как работа над цифровой моделью завершена, деталь может быть изготовлена с помощью аддитивных технологий. Если в распоряжении пользователя ST10 имеется подключенный 3D­принтер, печать можно начинать сразу, используя встроенный интерфейс для 3D­печати.

Если принтера нет, то можно воспользоваться встроенным интерфейсом онлайн­сервиса 3D­печати 3YOURMND. Здесь есть возможность выбрать поставщика с нужным материалом и цветом печати, подходящей оплатой и сроками поставки. Изготовленная деталь будет получена почтой, и на этом цикл обратного инжиниринга можно считать законченным.

В описании процессов обратного инжиниринга акцент делается на аддитивные технологии как наиболее быстрые, удобные и перспективные. Однако это не значит, что здесь не могут быть использованы традиционные способы обработки металлов. После того как получена точная модель, для подготовки производства достаточно воспользоваться САМ­приложением. Таким образом, современный обратный инжиниринг позволяет быстро получать цифровые модели физических объектов, а затем создавать их дубликаты с помощью всех доступных технологий. 

По материалам компании Siemens PLM Software

Достаём мастер-пароль из заблокированного менеджера паролей 1Password 4

Перевод

Новые инструменты, старые методы. Проводим обратную разработку и находим фатальный недостаток 1Password.
Все любят менеджеры паролей. Они великолепны по многим причинам. Лично у меня в менеджере более 200 записей

С таким большим количеством конфиденциальных данных в одном месте важно понимать масштаб ущерба в случае компрометации вашей записи, будь то вредоносные программы, эксплоиты или просто компьютер, оставленный без присмотра на несколько минут. Washington Post недавно опубликовала статью, основанную на нашем исследовании

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

Доступ к скрытым настройкам UEFI BIOS от Insyde

Здравствуй Хабр!
Одно из направлений моей компании — продажа технологических решений в области виртуализации. По долгу службы, приходится делать пилотные проекты или устраивать тестовые стенды. Недавно, компания Citrix выпустила новый продукт под название XenClient XT, который по сути является клиентским гипервизором первого уровня, то есть работает на чистом железе. Основной идеей клиентского гипервизора является создание виртуальных машин на собственном ноутбуке. Где и как это применимо — опустим.
Все современные процессоры Intel и AMD поддерживают технологию аппаратной виртулизации.
И так, в моем распоряжении был ноутбук с H77 чипсетом и Intel Core i7-3820QM процессором. Согласно спецификации от производителя, мой процессор поддерживал Intel Virtualization Technology (VT-x) и Intel Virtualization Technology for Directed I/O (VT-d) технологии. Если первая имеется почти на всех новых ноутбуках, то вторая технология встречается только на топовых моделях. Но она дает много преимуществ, как например прямой проброс GDU в виртуальную среду, соответственно клиентская машина получает полную поддержку 3D. Но давайте не будем углубляться в технологии, отличные от тематики данной статьи.
В моем биосе была возможность включения VT-x, но вот управление технологией VT-d не было предусмотрено изначально.

Защита игр GameBoy Advance от эмуляции

Перевод

Кое-кто из вас может помнить серию примечательных игр для Game Boy Advance, вышедших в течение 2004 года. Светло-серые картриджи с простыми этикетками сильно отличались от обычных, тёмно-серых, с разноцветными этикетками. На них продавались игры, портированные с оригинальной Nintendo Entertainment System. Эти игры, известные в США как Classic NES Series, интересны по нескольким причинам.
Особенно интересны они с точки зрения эмуляции GBA. Обычно игры для Game Boy Advance невероятно проблемны, а сама платформа содержит множество средств для защиты от сбоев. Поэтому для запуска игр эмуляторы должны быть совместимы с ошибками оригинального оборудования. Однако в серии Classic NES Series разработчики пошли дальше и попытались защитить игру от запуска в эмуляторах.

Взлом цветного картриджа HP: превращаем его в ручной принтер

Перевод

Введение

Ещё с юности, когда у нас был старый DeskJet, меня интересовали картриджи струйных принтеров. Эти картриджи казались очень интересными и как только в них заканчивались чернила, я сразу забирал их себе. В то время я не мог сделать с ними ничего, кроме как разобрать и пачкать руки… Хоть я и знал, что там внутри есть какая-то сложная электроника, но при касании контактов батарейкой не происходило ничего интересного, а моих знаний по электронике на большее не хватало.
Чуть позже, когда я стал студентом, мне удалось раздобыть старый струйный принтер. В то время сам я пользовался лазерным принтером, поэтому он мне был не очень интересен, зато было любопытно исследовать картриджи и попытаться выполнить их реверс-инжиниринг. Я в самом деле написал статью об управлении этими картриджами, и хотя они работали достаточно хорошо, были и недостатки: мне так и не удалось выяснить точный порядок сопел, картридж был только монохромным (печатал маджентой), к тому же довольно старым, а потому разрешение оказалось довольно низким.
Недавно моя девушка занялась рисованием, поэтому это стало хорошим оправданием для возврата к струйным картриджам в надежде, что и мне удастся нарисовать что-то на холсте. На этот раз мне повезло: удалось найти способ привязки всех сопел к правильным сигналам. Кроме того, сегодня картриджи принтеров управляют бОльшим количеством сопел используя меньшее количество сигналов, что упрощает управление картриджем и увеличивает поверхность, которую можно покрыть за один проход.

Драйверы антивирусов — источник зла. Уязвимости в драйверах проактивных защит

Из теории кодописательства известно, что большое количество программ, предназначенных для антивирусной защиты, используют драйверы режима ядра в Windows как «окно» для доступа в более привилегированный режим — ring 0. Это класс ПО, к которому можно отнести антивирусы, межсетевые экраны, HIPS’ы (Host Intrusion Prevention System) и популярные ныне программы класса internet security. Но, как показывает практика, многие из них содержат уязвимости. А в большинстве софтверных компаний их драйверы не тестируют. Вывод прост: драйверы антивирусов — лакомый кусочек для хакера. Автор описывает, какие есть проблемы в современных драйверах защитного ПО, и показывает, как их можно успешно проэксплуатировать. Вот настоящая тема для исследователей багов и разработчиков эксплоитов!

Reverse engineering на примере Android

Декомпиляция

Этот процесс будет проводиться с использованием программы Apk Manger. Прежде чем приступать к работе, необходимо убедиться, что есть нужные драйверы для работы девайса, а также функционирует режим USB-debugging. Первоначально необходимо будет переместить файл, который будет разбираться в директиву apk_manager\place-apk-here-for-modding. После этого следует запустить Script.bat. Если никаких проблем нет, то запуститься консоль. Надо выбрать пункт номер девять – «Декомпилировать». После того как будет запущен процесс, необходимо не закрывать консоль. Потом следует открыть интересующий apk-файл с помощью архиватора и извлечь из него classes.dex, который нужно обработать программой dex2jar. Для необходимого нам результата его надо переместить на объект с расширением .bat. Появится файл, который будет заканчиваться на .jar.

Анализ данных

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

Она-то и представляет наибольшую важность. Необходимо проверить наличие информации о менеджере лицензий, если она есть, то это существенно усложнит проведение реверсного инжиниринга

Если переключиться на jd-gui и развернуть дерево, то появится несколько пространств имён. Необходимо зайти в пространство имен, в котором находятся необходимые данные. Здесь необходимо найти и удалить ключ, а потом и остальные строки, которые проверяют, является ли лицензионной работающая версия. Потом в Apk Manager ищем место, куда указано размещать байт-код. После этого осталось только скомпилировать программу.

Сборка приложения

В этом поможет всё тот же Apk Manager. В окне консоли выбираем пункт №14. Далее дело техники. Если приложение довольно сложное, то при запуске оно может частично или полностью потерять свою работоспособность. Сказать, что нужно делать в конкретном случае, общими словами невозможно, поэтому искать проблемное место придётся самостоятельно. Так, если окно приложения блокируется всплывающим окном, то необходимо просмотреть код и удалить ту его часть, что отвечает за данный диалог. Помочь с этим сможет jd-gui. Реверсный инжиниринг не является лёгким делом, и он требует наличия значительного багажа знаний. Даже если всё без проблем запустилось, необходимо будет протестировать работоспособность приложения. То есть реверс-инжиниринг является ещё затратным по времени действием. Необходимо продолжать работать, пока не будут выявлены все проблемы.

Защита микросхем от реверс-инжиниринга и несанкционированного проникновения

“CVAX — когда вы забатите довольно воровать настоящий лучший”.
Надпись, оставленная американскими инженерами для советских коллег в топологии микропроцессора.
Реверс-инжиниринг микросхем — головная боль производителей с самых первых лет существования микроэлектроники. Вся советская электроника в какой-то момент была построена на нем, а сейчас с гораздо большим размахом тем же самым занимаются в Поднебесной, да и не только в ней. На самом деле, реверс-инжиниринг абсолютно легален в США, Евросоюзе и многих других местах, с целью (цитирую американский закон) “teaching, analyzing, or evaluating the concepts or techniques embodied in the mask work or circuitry”.
Самое частое легальное применение реверс-инжиниринга — патентные и лицензионные суды. Промышленный шпионаж тоже распространен, особенно с учетом того, что электрические схемы (особенно аналоговые) часто являются ключевой интеллектуальной собственностью и редко патентуются — как раз для того, чтобы избежать раскрытия IP и участия в патентных судах в качестве обвиняющей стороны

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

Чем больше ценной информации мы доверяем окружающему миру, тем важнее защищать эту информацию на всех уровнях работы обрабатывающих ее систем, и хардварный уровень — не исключение.

В официальном издании Age of Empires Collector’s Edition на DVD используются крэки из сети

Первые части игры Age of Empires уже давно стали своего рода классикой. У этой игры до сих пор есть немало поклонников. В 2007 году вышло официальное коллекционное издание игры, которое включает первую и вторую части с дополнениями. Причём во всех странах, кроме США, оно вышло на одном DVD вместо четырёх CD. Тогда я уже немного занимался реверс-инжинирингом этой игры и знал, что оригинальные версии исполняемых файлов не захотят работать с одним общим диском, поскольку в код каждой части и их дополнений зашита проверка метки соответствующего диска. Очевидно, что у одного DVD не может быть сразу четыре разных метки, и после покупки русского DVD издания я ожидал увидеть перекомпилированные разработчиками версии файлов с изменённым кодом проверки наличия диска или вовсе без него. Но всё оказалось намного интереснее.

Как мы будем действовать

Не стоит пытаться дизассемблировать приложение, весящее несколько десятков мегабайт, от начала и до конца. Интерфейсную часть и прочий тупой код можно переписать с нуля и без дизассемблера. То же самое относится ко многим стандартным алгоритмам типа быстрого дискретного преобразования Фурье.

Достаточно просто понять, что делает та или иная функция, а уж за конкретной реализацией дело не станет (существуют десятки алгоритмов Фурье-преобразования, заточенные под различные типы процессоров, и создатели открытого клона могут использовать более компактный/быстродействующий вариант без нарушения совместимости).

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

[править] Немного о личных качествах самих реверсеров

Вечер. Автобус. Едет. На первом сиденье сидят двое. У них коэф. интеллекта IQ=180:
— Я вчера Гамлета в оригинале читал… Такое эстетическое наслаждение…
На другом сиденье сидят ещё двое. У них IQ=140:
— Я вчера посмотрел «Андалузского пса» и нашёл коррелят с ранними картинами Пикассо…
На другом сиденье сидят двое. У них IQ=100:
— Мы с другом час назад посмотрели «От заката до рассвета». Как там тёлка говорит тёлке, что…
На другом сиденье сидят двое других. У них IQ=80:
— Слышь, брат! Помнишь, какое пойло мы в мерсе пили, когда ноги какой-то б..яди торчали в окне…
А на задней площадке стоят двое с IQ=40:
— Ну вот, вскрываю прогу твоим дебаггером…

Динамическое распределение памяти

В этой статье будут рассмотрены следующие виды динамического распределения памяти:

  1. malloc.
  2. calloc.
  3. realloc.

malloc — динамическое выделение памяти

Сначала разберёмся в коде:

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

В этой функции выделяется место под 11 символов с помощью , а затем в выделенное пространство памяти копируется «Hello World».

Теперь давайте посмотрим на машинный код:

Примечание Во время сборки вы можете увидеть инструкции «». Эти инструкции были специально размещены на этапе подготовки к статье, чтобы различные части кода было проще понимать.

Динамическое распределение памяти с помощью — машинный код

При использовании размер выделенной памяти () сначала перемещается в регистр . Затем системная функция вызывается для выделения памяти. Выделенная область памяти затем сохраняется в переменной . Потом строка «Hello World» разбивается на «Hello Wo» и «rld», поскольку она копируется в выделенное пространство памяти. Наконец, вновь скопированная строка «Hello World» выводится на экран, а выделенная память освобождается с помощью функции .

calloc — динамическое чистое выделение памяти

Посмотрим на код:

Как и в методе , место для 11 символов выделяется, а строка «Hello World» копируется в указанное пространство. Затем вновь перемещённый «Hello World» распечатывается, и выделенное пространство памяти освобождается.

Динамическое распределение памяти с помощью calloc — машинный код

Динамическое распределение памяти через выглядит почти идентично динамическому распределению памяти через в машинном коде.
Во-первых, пространство для 11 символов выделяется с помощью системной функции . Затем строка «» разбивается на «» и «„, поскольку она копируется во вновь выделенную область памяти. Затем вновь перемещённая строка “» выводится на экран, а выделенная область памяти освобождается с помощью функции .

realloc — динамическое перераспределение памяти

Сначала посмотрим код.

В этой функции память для 11 символов выделяется с помощью . Затем «Hello World» копируется в только что выделенное пространство памяти, прежде чем указанное расположение памяти перераспределяется, чтобы соответствовать 21 символу.

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

Наконец, «» копируется в только что перераспределённое пространство. Наконец, после вывода на экран память освобождается.

Network Traffic Reverser

GameShells, удалённо, от 3000 до 5000 $ (до налогов)

tproger.ru

Вакансии на tproger.ru

Теперь посмотрим машинный код:

Динамическое распределение памяти с помощью realloc — машинный код

Сначала память выделяется с помощью . Затем, после вывода на экран только что перемещённой строки «Hello World», вызывается для переменной (которая представляет переменную в коде), а также передаётся новый размер ( в десятичном виде). Затем «» разбивается на «„, “», «» и «„, поскольку он копируется в только что перераспределённое пространство памяти. Наконец, пространство освобождается с помощью функции .

Применение обратного инжиниринга

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

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

В этих и других ситуациях посредством обратного инжиниринга получают цифровые 3D­модели, по которым с помощью аддитивных технологий может быть быстро изготовлена новая деталь.

Реконструкция формата на микроуровне

Техника отождествления функций требует определенной математической подготовки и программистского опыта. Знакомые функции зачастую распознаются с первого взгляда, незнакомые не распознаются вообще. Можно сколько угодно ковыряться в дизассемблерном листинге, но это ни на йоту не приблизит нас к разгадке, какую цель преследуют все эти операции и какой смысл несет преобразование массива чисел X в Y. В этом случае остается только одно —  построчно переписать код функции с ассемблера на Си (или на любой другой язык высокого уровня). При этом мы теряем шанс выбрать более эффективную реализацию и подходим к опасной черте, отделяющей независимую свободную реализацию от воровства двоичных
модулей. И хотя код, сгенерированный компилятором, будет значительно отличаться от дизассемблируемого кода, нас могут поймать на «водяных знаках» — dummy-коде, не несущем полезной нагрузки, но неизбежно сохраняющемся в открытом клоне при построчном переносе функций, что является достаточно убедительным доказательством плагиата. Обнаружить «водяные знаки» возможно только после отождествления алгоритма функции. Не стоит надеяться, что это будет тривиальный мусор в стиле MOV EAX,ECX/MOV ECX,EAX, скорее всего, производитель использует избыточные преобразования данных, которые в грубом приближении выглядят так: x=f(y)/1. Очевидно, что операция деления на единицу лишняя, но для ее исключения
требуется понять, что это именно деление, а не что-то другое.

Существует три пути отождествления функций: а) анализ алгоритма; б) сопоставление обрабатываемых данных с возвращенным результатом; в) уникальные константы. Ну, с анализом алгоритма все понятно

Если мы знаем тот или иной алгоритм (неважно чего: быстрой сортировки, обхода дерева, вычисления квадратного корня), то сможем отождествить его на любом языке: хочешь — на Паскале, хочешь — на ассемблере. Проблема в том, что никакой отдельно взятый человек не в состоянии удержать в голове все алгоритмы (или хотя бы самые популярные из них), особенно если дело касается математики, поэтому в хакерской команде должны быть узкие специалисты по криптографии, сжатию цифрового аудио/видео и т.д

Для ускорения (и упрощения) анализа широко используется метод черного ящика: вместо того чтобы изучать код функции, мы перехватываем передаваемые ей данные и смотрим на возвращаемый результат. Сопоставляя первое со вторым, пытаемся постичь суть. Алгоритмы поиска или сортировки распознаются сразу же. С упаковкой/распаковкой дела обстоят несколько сложнее. Сам факт упаковки/распаковки обнаруживается с первого взгляда, но вот их алгоритм остается загадкой. Если только функция не работает с общепринятыми форматами типа gzip, то для создания совместимого клона необходимо полностью реконструировать ее алгоритм.

Linice – альтернативный отладчик под Linux

К счастью, многие алгоритмы оперируют уникальными константами — стандартные полиномы позволяют отождествить методику шифрования/расчета контрольной суммы буквально за несколько секунд, а референсные матрицы квантования легко разоблачают аудио-/видеокодеки, причем операция отождествления легко поддается автоматизации. В частности, для IDA Pro существует несколько хороших плагинов, распознающих большое количество алгоритмов шифрования (их можно найти на www.idapro.com).

С реконструкцией форматов файлов и протоколов обмена все обстоит и проще, и сложнее. Проще — потому что реконструкция базовой структуры формата не требует никаких специальных знаний и вполне довольствуется минимальными навыками владения отладчиком/дизассемблером. Сложнее — потому что на низком уровне практически любой формат включает в себя алгоритмы шифрования, подсчета контрольной суммы, сжатия (с потерями или без). То есть если сделать свой парсер закрытого формата сможет и начинающий хакер, то написание совместимого открытого клиента потребует усилий целой команды хакеров.

Безопасность

Если нужна защита от реверс-инжиниринга, то в таком случае есть два варианта: использование специальных программ или создание кодовой конструкции, которая будет мешать совершать разбор написанного. Последний вариант подходит исключительно опытным специалистам. Для Android- приложений в качестве специализированного программного обеспечения используется ProGuard. Это приложение, которое используется для сокращения, обфускации и оптимизации кода. Если программу «прогнать» через него, то получим файл с расширением *.apk меньшего размера, чем он был. В таком случае его будет значительно сложней разобрать. Причем преимуществом данной программы является то, что она даже была внедрена в систему сборки Android-приложений с обновления r9. Поэтому воспользоваться ею может любой разработчик, который имеет стандартные инструменты создания и разработки.

Также есть способ узнать, подключен ли отладчик к вашему коду. Но есть одна проблема. Эта проверка определяет, подключен ли отладчик в данное конкретное время. Хакер может подключиться к приложению после этой проверки, когда приложение уже не подозревает об опасности. Эту проблему можно решить двумя способами:

  • Включить проверку в цикл выполнения (run loop), так что проверка будет выполняться постоянно.
  • Поставить проверку в наиболее критичных участках кода, где нас больше всего волнует безопасность.

Первый вариант обычно нежелателен. Его цена — трата драгоценного процессорного времени.

Как рендерится кадр Rise of the Tomb Raider

Перевод

Rise of the Tomb Raider (2015 год) — это сиквел превосходного перезапуска Tomb Raider (2013 год). Лично я нахожу обе части интересными, потому что они отошли от стагнирующей оригинальной серии и рассказали историю Лары заново. В этой игре, как и в приквеле, центральное место занимает сюжет, она предоставляет увлекательные механики крафтинга, охоты и скалолазания/исследований.
В Tomb Raider использовался разработанный Crystal Dynamics движок Crystal Engine, также применявшийся в Deus Ex: Human Revolution. В сиквеле использовали новый движок под названием Foundation, ранее разрабатывавшийся для Lara Croft and the Temple of Osiris (2014 год). Его рендеринг можно в целом описать как тайловый движок с предварительным проходом освещения, и позже мы узнаем, что это означает. Движок позволяет выбирать между рендерерами DX11 и DX12; я выбрал последний, по причинам, которые мы обсудим ниже. Для захвата кадра использовался Renderdoc 1.2 на Geforce 980 Ti, в игре включены все функции и украшательства.

Анализируемый кадр

Чтобы не было спойлеров, скажу, что в этом кадре плохие парни преследуют Лару, потому что она ищет артефакт, который разыскивают и они. Этот конфликт интересов никак не разрешить без оружия. Лара ночью пробралась на вражескую база. Я выбрал кадр с атмосферным и контрастным освещением, при котором движок может показать себя.

Технический отчет о деятельности преступной группы, занимающейся целевыми атаками — Anunak

Во второй половине 2014 года мы уже неоднократно упоминали про целевые атаки на крупные финансовые учреждения как новую ступень мошенничества. Ведь теперь денежные средства похищают не у «мелких юрлиц», а у крупных финансовых компаний, в которых, казалось бы безопасность должна быть на высшем уровне и сложность совершения преступления приближается к «Hell». Однако, учитывая не стихающий поток подобных преступлений, а также особую актуальность на фоне текущего финансового состояния страны, мы решили обновить пост и добавить новых подробностей касательно группы Anunak, которая использует одноименного трояна, также известного как Carbanak. Название Carbanak происходит от склейки двух слов Anunak+Carberp.

Краткий экскурс

После задержаний членов группы Carberp в России, некоторые участники остались без работы, однако, полученный за долгие годы работы опыт позволил им занять новую нишу. Один из участников быстро понял, что можно украсть тысячу раз по $2 000 и заработать 2 миллиона долларов, а можно украсть всего лишь один раз и сразу всю сумму.
С 2013г. активизировалась организованная преступная группа, нацеленная на банки и электронные платежные системы России и пост советского пространства. Особенностью является то, что мошенничество происходит внутри корпоративной сети, с использованием внутренних платежных шлюзов и банковских систем. Таким образом денежные средства похищаются не у клиентов, а у самих банков и платежных систем. Если доступ был получен злоумышленниками в сеть государственного предприятия, то целью злоумышленников является промышленный шпионаж.
Основной костяк преступной группы составляют граждане России и Украины, однако есть лица, оказывающие им поддержку из Белоруссии.

[править] Software Реверсинг

Реверсинг ПО — восстановление принципов/идей/алгоритмов работы программы для исследования и/или создания аналогичного ПО. Часто применяется для:

  • Анализа вирусов/троянов/червей и прочего дерьма с целью создания средств защиты.
  • Поиска дырок в закрытом софте с целью создания вирусов/троянов/червей/сплойтов и прочего дерьма.
  • Создания описаний для форматов данных/протоколов, используемых в программах и прочем дерьме. Пример с преподской тестирующей программой относится сюда.
  • Анализа работы закрытых драйверов и прочего дерьма для создания открытых линупсовых.
  • Изготовление пиратских серверов серверных игр вроде WoW и допилка их рубанком до сходства с официальным, ясное дело, дерьмом.

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

Для успешного кодопиздинга требуется знать ассемблер, иметь общее представление о криптографии, знать мунспик и теорию вероятностей — не быдлокодер ли твой предшественник? Ну и матан — например, теорию графов для анализа ветвлений. Но можно и не знать, главное — уметь быстро найти, что почитать, и резво разобраться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector