Обновить
64K+

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

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

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

Корабль Тесея: сколько деталей нужно заменить, чтобы клавиатура стала новой?

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели8.1K

В какой момент доработка чужого open source проекта превращается в создание собственного устройства? Когда заменена одна деталь? Половина? Почти все? Или когда от первоначальной конструкции остается только идея?

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

Так появилась Theseus — клавиатура, названная в честь знаменитого парадокса о корабле Тесея, в котором одну за другой заменили каждую деревянную доску.

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

Читать далее

Новости

Чтобы не произошло беды, в каждом лифте всегда есть это

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели12K

Приветствую всех!

Уверен, многие из вас слышали о том, что в лифте есть какое‑то устройство, которое в нештатной ситуации не даёт ему сорваться вниз. Но вот о том, как всё это устроено и работает, знают далеко не все. Как насчёт восполнить это упущение?

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

25 этаж

Почему подсветка док-станции Flydigi выглядит дёшево и как я написал свою

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

У меня геймпад Flydigi Vader 5 Pro и к нему док-станция Charging Dock 2 Pro. На доке 162 RGB-светодиода, и сами по себе они хорошие, а вот эффекты из фирменной Space Station выглядят дёшево: медленные анимации идут ступеньками, градиенты грязнеют в середине.

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

Читать далее

543 уязвимости в индустриальном стандарте: отлавливаем бреши в FFmpeg

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели11K

Привет, Хабр!

Меня зовут Егор Боровинских, старший аналитик безопасности веб-приложений в компании «Гарда».

Сегодня хочу поговорить о FFmpeg. Для тех, кто не в курсе, эта open-source библиотека является индустриальным стандартом для мобильных приложений с функциями обработки аудио и видео, которая разбирает контейнеры (MP4, MOV, AVI, RTSP и т. п.) на отдельные потоки. А знаете, что бонусом к этому фреймворку идет порядка 543 зарегистрированных CVE? Причем эти уязвимости фигурируют в программах bugbounty.

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

Читать далее

Игровой конвейер из начала десятых: реверс-инжиниринг Spark Casual Engine

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели9K

У меня лежал файл Game.cub на 437 мегабайт от казуального квеста 2011 года. Внутри — 3559 файлов с расширениями, которых не знает ни один редактор: .cubebin, .stex, .sparkeffect, .binldinfo. Я решил разобраться, что это такое.

Читать далее

Как сцена взлома принтеров изобрела собственный DRM

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

Если за последние двадцать лет у вас был принтер, вы наверняка знаете, какими они могут быть неожиданно капризными: «не могу печатать черным, потому что закончился желтый» — классическая шутка о струйниках. Или функция сканирования в МФУ, которая в некоторых моделях перестает работать, если закончились чернила, — и без специальных махинаций ее не запустить.

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

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

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

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

Читать далее

Яндекс.Диск — скачиваем фото и видео из хранилища «безлимита» с попыткой восстановить повреждённое

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели30K

Привет, Хабр. Ранее я писал статью, посвященную недоступности файлам на «Яндекс.Диске». Я разобрал ситуацию подробнее и выяснил — большинство фото можно восстановить даже если они недоступны для скачивания, с видео всё сложнее. Также написал программу для того, чтобы Вы могли скачать свои фото и видео (в том числе с безлимита) уже сейчас, пока они остаются доступными. Разберём ниже.

Читать далее

Матрёшка с Remcos внутри: как JS-файл, «картинка» и MSBuild передают друг другу эстафету

Уровень сложностиПростой
Время на прочтение31 мин
Охват и читатели7.2K

Привет, Хабр! Сегодня я хочу рассказать о том, как один невзрачный .js-файл превратился в шесть слоёв упаковки, и в самом центре этой матрёшки сидел старый знакомый Remcos.

Раскрыть матрешку.

600 миллиардов токенов спустя: как мы управляли ИИ-агентами при декомпиляции шутера

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

Три месяца ИИ-агенты декомпилировали популярный шутер от первого лица, а мы с ребятами из сообщества ими управляли. Нам нужно было не доказать, что это возможно, а получить точную и стабильную реконструкцию игры на C++. Итог: восстановлено 99% функций, 83% из них совпадают с оригиналом побайтово, игра работает без заметных багов. По моей оценке, ушло на это 600-700 миллиардов токенов.

Но статья не про игру, а про оркестрацию автономных агентов: как настроить инфраструктуру и обвязку, чтобы месяцами получать от агентов качественный результат, и почему без объективной автоматической проверки всё это не работает.

Читать далее

Как устроен игровой OLED-монитор и как с ним можно играть

Уровень сложностиСредний
Время на прочтение32 мин
Охват и читатели18K

Знаете ли вы, сколько RAM в вашем мониторе? А сколько процессорных ядер? Сколько разных прошивок установлено внутри вашего монитора?

После прочтения вы пока не сможете поставить новую прошивку в свой монитор. Но сможете больше: сможете начать исследовать свой монитор или какое-то другое устройство. А может быть начнете разрабатывать свою прошивку?

Читать далее

Как я вернул LAN-кооп в Neverwinter Nights 2 на Switch

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели15K

Как вернуть LAN-режим в Neverwinter Nights 2 на прошитой Switch: без аккаунта Nintendo, без подписки, по локальной сети между двумя консолями. Разбор ARM64-кода, отладка GDB прямо на консоли и готовый патч для Atmosphere.

Читать далее

Что находится внутри Micropolis

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели11K

Как было дело давным‑давно я увидел демку Micropolis (вы тоже можете глянуть ее на Youtube), и она меня покорила. Там был целый город, пусть квадратный, но все же. Там была река, мосты, поезд, воздушный транспорт. Робот. Нет, РОБОТ. И он даже шагал. Под музыку. И все это в 4 килобайтах. Да, не мегабайтах, и даже не 64, а именно 4. Тогда я не смог понять, как это работает, но вот недавно решил разобраться.

Читать далее

Как я добавил в QUAD 3 прямой выбор входов: реверс ARM-прошивки, бинарный патч и 64 байта здравого смысла

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели8.3K

Как я добавил в QUAD 3 прямой выбор входов: реверс ARM-прошивки, бинарный патч и 64 байта здравого смысла.

Читать далее

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

Вскрываем 5G на iPhone. Что не так с Российским 5G?

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели15K

С 23 сентября в профильных сообществах активно обсуждают способ включения 5G на iPhone в России, делая это при помощи подмены операторского профиля. Я проверил это сам и снял, что заявляет телефон сети: в NSA‑режиме заявлены n1, n3, n7, n8, n20, n38 и n40. Профиль разрешает системе видеть n78/n79 (это можно легко подтвердить через «консоль»), но модем их блокирует из‑за регионального ограничения, в итоге сеть эти параметры не получает. Но, n79 запустить всё же получилось, с этим разберемся ниже.

Читать далее

Одна раскладка на все игры: как я обошёл ограничение Steam Deck и нашёл контроллер номер 15

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели5.7K

На Steam Deck нельзя взять раскладку управления из одной игры и поставить её в другую: настроил удобное управление в одной визуальной новелле, открываешь следующую — а в списке пусто. Разбираюсь, почему Steam так делает, где он на самом деле хранит раскладки и как обойти ограничение через шаблоны.

По дороге выяснилось, что встроенное управление дека для самого Steam — это контроллер номер 15, а не 0. А ещё — как тестировать код, который работает со Steam, когда самого Steam рядом нет.

Читать далее

RCE из одного XML‑тега: разбираем небезопасную десериализацию XmlSerializer с нуля

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели6.7K

Дисклеймер. Все описанное выполнялось в изолированной лаборатории на вымышленном приложении, которое я собрал специально для статьи. Совпадения имен с реальными продуктами случайны. Материал образовательный — для AppSec, .NET-разработчиков и всех, кому интересно, как «сохранить объект в файл» превращается в удаленное выполнение кода. Не применяйте это к системам, на которые у вас нет письменного разрешения.

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

К концу статьи вы будете уметь: декомпилировать .NET-приложение, находить в нем точки сериализации и десериализации, читать свойства и сеттеры, отличать безобидный класс от «gadget» и по одной строчке понимать, есть ли уязвимость. Все воспроизводится на приложенном стенде.

Про цвет. Листинги с подсветкой даны картинками. Цвета: желтый — имя класса/тип, синий — имя свойства, зеленый — значение (данные), красный — опасное место (sink, уязвимая строка, побочный эффект). В «было/стало» красный — что убираем, зеленый — что ставим.

Читать далее

Siri с Apple Intelligence на Mac с русским языком: как система принимает это решение и как её переубедить

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.6K

Новая Siri с Apple Intelligence не работает на системе с русским языком — её просто нет в настройках. То же самое у поляков, чехов, греков, венгров и ещё полутора десятков языков.

Я полез разбираться, где проходит эта граница, и выяснилось, что macOS проверяет язык системы ровно один раз — при загрузке. Дальше ей всё равно: можно вернуть свой язык, и Siri AI продолжит работать до следующей перезагрузки.

Под катом: где система прячет своё решение и как его прочитать из журнала, почему признака «встал в очередь» не существует, чем платишь за JXA, почему Safari терял вкладки после перезагрузки и как индикатор в строке меню похудел с трёх секунд процессора до двух сотых.

Читать далее

Часть 4. Обошел еще одно ограничение NVIDIA: первым в мире включил P2P на CMP90HX, а помогли мне в этом… инженеры NVIDIA

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели22K

В ходе моего исследования видеокарт линейки NVIDIA CMP, обхода их ограничений и снятия лимитов, оставалась еще одна проблема - видеокарты не могли нормально обмениваться данными напрямую друг с другом. Для моей задачи это было довольно неприятно, потому что сервер собирался ради запуска больших языковых моделей на нескольких дешевых видеокартах одновременно.

В итоге я полез разбираться, можно ли открыть на CMP 90HX настоящий P2P. И получилось - впервые в мире включить прямой обмен между этими картами, заставить одну CMP реально обращаться к памяти другой и получить нормальную скорость передачи.

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

Взломать драйвер NVIDIA

Два читмода за выходные: Mono против IL2CPP и восемь мест, где ломается моддинг Unity

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели7.7K

Поставил MelonLoader в демку на Unity 6, собрал мод — и он молчит: BadImageFormatException: Duplicate type with name '<>O'. За выходные я написал два чит-мода с почти одинаковым ТЗ: меню для Valheim (Mono, BepInEx) и трейнер для демки Go Next! (IL2CPP, MelonLoader). Код получился настолько разный, что набралось восемь мест, где всё ломается именно из-за отсутствия managed-кода: битая сгенерированная сборка, вырезанный GUILayout, падающий Input.GetKeyDown, цена интеропа. Плюс разбор того, где Unity на самом деле держит PlayerPrefs и почему SetGodMode() хуже собственного патча.

Читать далее

Взлом режима Secure Debug на RP2350 с помощью лазера и фотонной эмиссии

Уровень сложностиСложный
Время на прочтение15 мин
Охват и читатели19K

В этом эксперименте мы с помощью дифференциальной микроскопии фотонной эмиссии засекли, в какой момент на чипе RP2350 (ревизии A4) активируется регистр отладки, и точно определили, куда целиться лазером. Затем, поймав нужный момент через интерфейс SWD, мы с помощью лазерного импульса точечно переписали два бита, восстановив доступ к режиму Secure Debug.

Читать далее
1
23 ...