Обновить
106.37

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

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

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

Новая графическая оболочка рабочего стола включена в основную кодовую базу ReactOS

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

Спустя месяц после релиза версии 0.3.17 мы наконец выполнили свое обещание: в состав ReactOS принята новая реализация графической оболочки Explorer, развивавшаяся в рамках проекта Explorer-new. Протестировать новый интерфейс можно воспользовавшись ежедневными тестовыми сборками. Новая оболочка позволила ReactOS сделать шаг вперёд к совместимости (Explorer-new написан с оглядкой на Windows 2003), функциональности и удобству работы.

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

Реверс-инженеринг GPS замка WatchLock для личного использования

Время на прочтение6 мин
Охват и читатели18K
Израильская компания Starcom Systems специализируется на различного рода GPS/GSM трекерах и удаленных системах контроля, базирующихся на них. В данном случае ко мне попало разработанное в этой компании устройство: электронный замок с функциями GPS-трекера WatchLock, который Starcom выпускает совместно с компанией Mul-T-Lock.

Устройство совмещает в себе функции классического навесного замка с функциями GPS/GSM трекера и соответственно позволяет контролировать такие параметры как: открытие/закрытие замка, физическое воздействие на замок (при помощи акселерометра), текущие местоположение замка и т.д. Передача информации о событиях посредством сети GSM. Возможно использовать для связи два варианта, GPRS канал и(или) SMS сообщения (в данном случае связь через SMS меня не особо волнует, поэтому остановимся на GPRS). Передача данных ведется на сервер компании или на прокси-сервер, установленный у дилера на поддерживаемый дружественный сервис. Например, Wialon, либо опять таки на сервер компании. Частному пользователю, купившему устройство для личных нужд, не удастся его использовать без оплаты услуг сторонних компаний, что для не корпоративных пользователей может быть накладно или излишне (либо, как вариант, необходима высокая анонимность). Я один из тех, кому функционал больших мониторинговых серверов излишен, а возможность поиграться с новым устройством мотивационна. Итак, приступим!
Читать дальше →

Разбор Heads-up Display из горнолыжной маски Recon Instruments MOD Live. Попытка починить…

Время на прочтение2 мин
Охват и читатели19K
Уважаемые дамы и господа, не повторяйте этот способ разбора Heads-up дисплея, так как после, с высокой вероятностью, останется лишь Android устройство без возможности отображения информации.
Ни одной статьи про разбор я не нашел, перед тем как начал разбирать, а жаль! Попытаюсь исправить этот недочет.



Для отважных и любопытных фото вскрытия дисплея, а также больше десятка изображений внутренностей микродисплея под катом…

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

ReactOS 0.3.17 — «нумерологический» релиз операционной системы

Время на прочтение2 мин
Охват и читатели44K
Добрый день! image

Меня зовут Алексей Брагин, я приветствую всех гостей на открытии блога компании «Фонд ReactOS», которое стало возможным благодаря программе поддержи стартапов от «Тематических Медиа».

От лица всей команды разработчиков проекта ReactOS представляю вашему вниманию новый релиз нашей операционной системы под номером 0.3.17
Читать дальше →

Исследуем китайские роутеры на RT5350

Время на прочтение7 мин
Охват и читатели141K
Однажды, lolipop купил роутер на алиэкспрессе. Да не простой роутер, а очень компактный и дешевый, с 2 Ethernet-портами, USB, да еще и от фирмы, которая в начале 2000-х продавала свои mp3-плееры на территории РФ: Nexx WT1520H.
image
Стандартная прошивка, как и почти всегда, была скудная, и, конечно же, хотелось заменить ее на что-то более вменяемое. Но вот незадача — никаких альтернативных прошивок под роутер нет, и прошить непонятно как, т.к. никакие другие прошивки не принимались через веб-интерфейс, заголовок прошивки я раньше такой не видел, да и binwalk ничего в ней не находил, стало быть, она зашифрована:
00000000  32 33 35 30 6b d9 39 00  00 00 0e 02 00 00 00 00  |2350k.9.........|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 3e 19 53 c5  |............>.S.|
00000020  63 f5 51 9f 82 74 2d 03  2e 2f 1f 32 9c 4a 93 96  |c.Q..t-../.2.J..|
00000030  15 82 23 d0 b2 7e d7 1b  13 c3 1b 1f 06 fa f8 e0  |..#..~..........|
00000040  bb 43 9b c6 ee fc 4b 7a  e6 50 71 2b f4 f3 95 c3  |.C....Kz.Pq+....|
00000050  63 d0 a3 9c 92 2e 16 c6  19 1c 4a 93 cb 95 c3 63  |c.........J....c|
00000060  d2 9b 1a f5 2e 16 c6 19  1c 4a 93 f9 68 3c 9c 73  |.........J..h<.s|
00000070  14 63 d5 10 5e d3 6b 25  2b c2 2e 07 eb 85 73 25  |.c..^.k%+.....s%|
00000080  9b 6b c0 f2 d8 9b cf 65  56 ac a9 c2 28 61 dd 55  |.k.....eV...(a.U|
00000090  18 a4 5b e9 ba 11 93 ec  30 76 4f 40 c1 f0 7c cb  |..[.....0vO@..|.|
000000a0  36 d3 b3 93 fe 3d 6b 10  66 fa 43 39 f2 f6 c0 91  |6....=k.f.C9....|

lolipop слил данные с флешки через программатор, и мы начали в них ковыряться.
Читать дальше →

В поиске бесплатных билетов, исследование игры Аэрофлота

Время на прочтение2 мин
Охват и читатели90K
Началось все с того, что я получил ссылку на промо-сайт компании Аэрофлот. Акция заключается в прохождении небольшой flash игры и получении бонусных миль. Главный приз в 150 000 миль получает игрок, занявший первую строчку в рейтинге. Собственно, принцип формирования рейтинга и вызвал мой интерес к этой акции.



Как всем хорошо известно, код flash приложений выполняется на стороне клиента, поэтому защита от нечестной игры представляет весьма сложную задачу. По сути, единственным верным решением является перенос всей игровой механики на сторону сервера, а flash приложение выполняет роль клиента к API.

Посмотрим, как с этой задачей справляются в Аэрофлот.
Читать дальше →

Как мы (почти) победили DirCrypt

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


Перевод статьи от компании Check Point’s Malware Research Team.

DirCrypt — один из самых злостных видов вымогающей деньги малвари. Она не просто зашифровывает все найденные пользовательские файлы, требуя выкуп за их расшифровку, но и остается в системе, подхватывая и зашифровывая сохраняемые пользователем файлы на лету. После ее появления работа на компьютере превращается в мучение.

Жертвам подобных вредоносных программ обычно рекомендуют восстановить файлы из раннего бэкапа. Но если такого бэкапа нет, перед нами остается трудный выбор — смириться с потерей данных или заплатить злоумышленнику. Однако, нам (Check Point’s Malware Research Team) удалось найти способ в случае DirCrypt восстановить почти все данные, воспользовавшись его слабыми сторонами в реализации шифрования.
Читать дальше →

Отключение ASLR при отладке third-party приложения под iOS

Время на прочтение2 мин
Охват и читатели4.3K
В этой статье дается простая короткая инструкция как пропатчить third-party приложение под iOS что бы отключить ASLR при отладке. Предполагается что у читателя в наличии:

  1. iOS 7.0-7.0.4 устройство с evasi0n jailbreak и компьютер с Mac OS X 10.9.4, установленным XCode 5.1.1 и МаchOView 2.4 (скорее всего для других версий тоже будет работать, но я не пробовал)
  2. некоторый опыт в отладке third-party приложения для iOS, ну и желательно знать что такое ASLR и понимать зачем его отключать

Что ж, приступим.
Читать дальше →

Реверс-инжиниринг и патч игры на Unity3d

Время на прочтение3 мин
Охват и читатели21K
Статья ориентирована на аудиторию, не имеющую какого-либо опыта. В ней не содержится описание каких-либо взломов и «плохих» патчей.

Предисловие


Однажды мне в руки попалась игра Unturned, построенная на движке Unity3d. Позже выяснилось, что она не лишена недостатков. Она находится в альфа версии, так что сервер даже не оповещает игроков о убийстве другого персонажа, что было не удобно в боях PvP. До этого случая у меня не было опыта работы с cil и реверс-инжинирингом c# приложений, тем более Unity.
Читать дальше →

McSema — декомпилятор кода в LLVM

Время на прочтение1 мин
Охват и читатели8.4K
Ребята, которые выступали на ReCON 2014, опубликовали свой инструмент McSema (MC-Semantics) для восстановления x86-бинарников Windows в LLVM-код. Этот инструмент разделен на несколько подпроектов:
  • Восстановление порядка выполнения
  • Семантика инструкций
  • Парсинг бинарных файлов
  • Семантика тестирования

На данный момент, программа поддерживает трансляцию x86-семантики с целочисленной арифметикой, арифметикой с плавающей точкой и векторными операциями.

Для чего это нужно? Этот проект, в теории, позволит делать сумасшедшие порты бо́льшему количеству людей и в более короткие сроки, позволит более-менее избавляться от обфускации malware путем ее перекомпиляции с оптимизациями.
Проект финансируется DARPA.
Читать дальше →

Реверс-инжиниринг прошивки китайского Android-планшета

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


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

Альтернативные методы трассировки приложений

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

Трассировка используется во многих видах ПО: в эмуляторах, динамических распаковщиках, фаззерах. Традиционные трейсеры работают по одному из четырех принципов: эмуляция набора инструкций (Bochs), бинарная трансляция (QEMU), патчинг бинарных файлы для изменения потока управления (Pin), либо работа через отладчик (PaiMei, основанный на IDA). Но сейчас речь пойдет о более интересных подходах.

Зачем отслеживать?


Задачи, которые решают с помощью трассировки можно условно разделить на три группы в зависимости от того, что именно отслеживается: выполнение программы (поток управления), поток данных или взаимодействие с ОС. Давай поговорим о каждом подробнее...
Читать дальше →

Разлочиваем велокомпьютер VDO A4 до A8

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

Как заплатить 600 рублей и получить функциональности на 1200? Наверное всем известен способ «апгрейда» велокомпьютера — ставим 2 магнитика на колесо и скорость удваивается, но мы пойдём другим путём. Увеличим количество функций велокомпьютера вдвое одним движением отвёртки.
Читать дальше →

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

Как запатчить 11 разных прошивок и не сойти с ума от разнообразия

Время на прочтение12 мин
Охват и читатели11K
Если какая-либо операция превращается в рутину — автоматизируй её. Даже если времени потратишь больше — зато ты занимался не рутиной, а интересным делом. Именно под этой вывеской вместо того, чтобы просто запатчить новые 11 версий rtsp_streamer'а для камер от TopSee, решил нарисовать автопатчер. Идеальным языком для любых наколенных изделий я считаю питон — достаточно лаконично, достаточно жестко по читабельности (хотя я всё равно умудряюсь сделать его не читаемым). В общем, сейчас я расскажу, как с помощью палки и верёвки за один вечер научиться рисовать автопатчеры.
Читать дальше →

Внедрение кода с пользой

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


В статье описан способ построения моста между неуправляемым и управляемым кодом на примере математического пакета Mathcad. На картинке показан пример, как бурундук Тот собирается обрабатывать своё изображение средствами математического пакета. Для этого он «использовал» пользовательскую функцию, написанную на VB.Net, в которой реализована возможность подключения к веб-камере и создания снимка. Результат работы функции сразу доступен в рабочем документе.
Читать дальше →

Siemens SGold: I/O сниффер

Время на прочтение35 мин
Охват и читатели14K
Сниффер — специальная программа для анализа и перехвата сетевого трафика, передачи данных через интерфейсы
и многого другого. В данном случае мы будем мониторить операции (чтение и запись) с портами ввода-вывода
на примере телефона линейки Siemens SGold и я постараюсь объяснить, как это всё работает.

image

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

Атака на чёрный ящик. Реверс-инжиниринг виртуализированного и мутированного кода

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


Защита собственного программного обеспечения от реверс инжиниринга достаточно старая проблема, в своё время терзавшая сердца многих shareware разработчиков и не только. Обычно для таких целей применяют протектор, но насколько бы ни был крутой протектор, всегда найдутся люди которые его распилят и взломают. Однако последнее время протекторы стали применять технологии видоизменения кода(мутацию и виртуализацию), которые позволяют из исходного алгоритма сделать кашу, внешне напоминающую 'чёрный ящик'. И действительно встречаются люди, уверенные в том, что виртуализация и мутация исполняемого кода современными коммерческими протекторами является некой панацеей. Понятное дело что любой безопасник скорее ухмыльнётся и не согласится с таким утверждением, ведь люди знающие горькую цену безопасности любые намёки на идеальную защиту скорее всего воспримут как миф и маркетинговую сказку. В этой статье я расскажу о собственном опыте и виденье исследования чёрного ящика коммерческих протекторов и возможных атаках на него. Надеюсь понимание недостатков таких технологий, поможет вам более разумно и эффективно применять их на практике или не применять вообще.
Читать дальше →

Написание бота для Stronghold Kingdoms

Время на прочтение11 мин
Охват и читатели45K
История написания бота для Stronghold Kingdoms

Долгое время я подходил к вопросу написания бота для этой игры, но то опыта не хватало, то лень, то не с той стороны заходить пытался.
В итоге, набравшись опыта написания и обратной разработки кода на C# я решил добиться своего.

Да, как Вы могли заметить, C# не спроста – игра написана именно на нем, с использованием .net 2.0, что в последствии вставило мне некоторые палки в колеса.


Изначально я думал написать сокетного бота, который бы лишь эмулировал сетевой протокол (который никак не шифруется), а имея «исходные коды» (результат декомпиляции il-кода) легко восстанавливается в стороннем приложении.

Но мне это показалось нудным и муторным, ведь зачем городить велосипед, если имеются те самые «исходные коды».

Вооружившись Reflector’ом я начал разбираться с точкой входа игры (код которой вообще никак не обфусцирован более трех лет, диву даюсь разработчикам) – ничего особенного.
Читать дальше →

Steam Files. Часть 1 — GCF/NCF

Время на прочтение21 мин
Охват и читатели22K
Steam LogoКак и обещал в предыдущей статье, начинаю публиковать статьи о той части инфраструктуры Steam, которую смогло открыть Anti-Steam сообщество путём реверс-инжиниринга и продолжительных мозговых штурмов.

Файлы формата GCF до недавнего времени являлись стандартом для всех игр, выпускаемых компанией VALVE, а NCF — для всех остальных. Сами по себе эти файлы представляют образ файловой системы с несколькими уровнями защиты. Отличие NCF от GCF заключается в том, что первые содержат только заголовки, а файлы, принадлежащие им, расположены в отдельном каталоге (<каталог Steam>/SteamApps/common/<имя игры>). Поэтому описывать буду GCF, а все особенности NCF приведу после.

В данной статье я подробно разберу структуру данных файлов и работу с ними на примере своей библиотеки (ссылка на неё — в конце статьи). Начало будет достаточно скучным — описание структур и назначения их полей. Самое «вкусное» будет после них…

Весь код, приведенный здесь, является плодом реверс-инжиниринга библиотек Steam. Большая часть информации о формате файлов была почерпнута из открытых источников, я же немного её дополнил и значительно оптимизировал работу с файлами кеша (даже по сравнению с самой популярной на то время библиотекой HLLIB).
Читать дальше →

Взламываем D-Link DSP-W215 Smart Plug: Опять, снова, еще раз

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

В предыдущих сериях:
  1. Взламываем D-Link DSP-W215 Smart Plug
  2. Взламываем D-Link DSP-W215 Smart Plug. Снова
  3. Взламываем D-Link DSP-W215 Smart Plug. Снова и опять


До сих пор, все найденные в DSP-W215 уязвимости могли быть выполнены только из LAN, ну, если вы не глупец и не открыли доступ к Smart Plug из интернета.
Типичным способом атаки устройств со встроенным веб-сервером, доступным только из внутренней сети, типа того, что у DSP-W215 — через CSRF. Проблема этого метода в том, что любой веб-браузер будет кодировать (urlencode) передаваемые данные, например, адрес возврата, но до этого момента мы использовали уязвимости, которые не декодируют (urldecode) наши данные (уязвимость в функции replace_special_char, которую мы эксплуатировали в предыдущей статье, декодирует только ограниченный набор ASCII-символов).

Бинарный файл my_cgi.cgi, который является основной уязвимой целью, содержит функцию-декодировщик «decode», которая декодирует POST-данные. Этой функции передается два аргумента: указатель на закодированные данные и указатель на буфер, где хранятся раскодированные данные:
void decode(char *encode_buf, char *decode_buf);


Эта функция просто проходит циклом по всем байтам в encode_buf и раскодирует или копирует их в decode_buf:
image
Читать дальше →

Вклад авторов