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

В первой части цикла статей мы рассмотрели пример исследования файла в hex-редакторе (с самой минимальной аналитикой) и базовые возможности написания шаблонов в 010 Editor. Углубим знания, ознакомившись с рядом других полезных возможностей 010: использованием функций по аналогии с С и API для подсветки hex-кода.

Навыки написания шаблонов и работы в hex редакторе 010 Editor — Часть II
Читать полностью »

После того, как мы получили расшифрованную прошивку и JTAG-доступ к устройству, настало время поисследовать код на какие-нибудь интересные баги.
Как мы узнали раньше, WRT120N работает на RTOS. В целях безопасности, административный WEB-интерфейс RTOS использует HTTP Basic authentication:

image

Большинство страниц требуют аутентификацию, но есть несколько страниц, которые явно запрещают ее:

image

image

Любой запрос на эти URL будет выполнен без аутентификации, поэтому это хорошее место для поиска багов.

Некоторые из этих страниц не существуют на самом деле, другие существуют, но ничего не делают (NULL-функции). Однако, страница по адресу /cgi/tmUnBlock.cgi имеет какой-то обработчик, который обрабатывает пользовательские данные:
imageЧитать полностью »

Недавно мое внимание привлек факт, что в обновлениях прошивок для Linksys WRT120N используют какую-то обфускацию. Мне показалось, что будет интересно порыться в ней, и я решил взглянуть.

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

Как вы можете видеть, есть небольшой блок данных, сжатых LZMA — это просто HTML-файлы для веб-интерфейса роутера. Большая часть прошивки состоит из каких-то странных, случайных данных. Т.к. мне больше ничего с ней не сделать, а любопытство все сильнее пыталось одолеть меня, я купил эту модель роутера себе (как они стоимость Amazon Prime-то взвинтили!).Читать полностью »

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

Александр Круглов — Ruby — Эту книгу можно использовать как справочник и как отдельный учебник по Ruby. Для изучающих Rails считаю исчерпывающим руководством по языку. Версия языка изучаемая в этой книге — 2.0.0p247.

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

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

От переводчика:
Основная цель перевода это попытка помочь тем программистам кто пишет статические распаковщики исполняемых файлов. Другими словами эта информация нацелена на практикующих 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
Читать полностью »


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