Обновить
64K+

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

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

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

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

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

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

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

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

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

Новости

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

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

Поставил 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 мин
Охват и читатели12K

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

Читать далее

Яндекс Дропс под рентгеном: микротомография первых ИИ-наушников Яндекса

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

Яндекс Дропс наушники с ИИ под рентгеном: восьмислойная HDI-плата, три микрофона на наушник. Разбираем внутренности первых ИИ-наушников Яндекса методом рентгеновской микротомографии.

Заглянуть внутрь

Робот доставщик дороже автомобиля, мокрая трава и открытый JDWP

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

Мы продали клиенту робота‑доставщика с интеграцией и пообещали запустить его в парке. Вскоре выяснилось: передать клиенту робота и передать контроль над ним — не одно и то же.

Без китайского облака пропадала часть функций. Российская SIM не работала. Вместо клиентских аккаунтов существовал один логин дистрибьютора. На траве робот буксовал, отключал привод и оставался посреди парка с разблокированными колёсами. Нам предстояло отвязать его от чужой инфраструктуры, написать собственные backend и Edge и превратить закрытую платформу в нормальный Fleet‑продукт.

Через несколько недель робот уже ездил по точкам, говорил по‑русски и возвращался на зарядку. А затем системные пароли внезапно изменились, и мы потеряли доступ к машине, которую должны были передать клиенту.

Без монитора, клавиатуры и понятной помощи производителя начался настоящий технический детектив. Что обнаружилось внутри робота, кто ещё мог им управлять и как мы возвращали контроль — в статье.

Читать далее

Чиню башенные часы полицейского участка

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

Сегодня я получил от друга примерно такое сообщение: «Знаю, что мы собирались встретиться в Эдинбурге, но не заинтересует ли тебя съездить в Портобелло и попробовать починить часы в старом полицейском участке?»

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

Читать далее

Telegram Desktop под атакой прокси: деанонимизация, утечка секретов и RCE с правами SYSTEM

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

Многие пользователи в России подключают Telegram через прокси, чтобы сохранять доступ к информации. Но что, если сам прокси окажется враждебным?

Мы обнаружили, что такой сервер мог без предупреждения получить доменные данные Windows, раскрыть личность пользователя и многократно извлекать фрагменты памяти Telegram Desktop. В лаборатории в этих фрагментах оказывались тестовые пароли, API-ключи и другие секреты из повторно используемых буферов.

В корпоративной Windows-среде атака могла пойти дальше: перехватить NTLM-аутентификацию и через AD CS привести к удалённому выполнению кода с правами SYSTEM. В статье — исходный код, PoC и полная цепочка атаки.

Читать далее

Как украсть «невидимое»: извлекаем прошивку из Execution-Only Memory

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

Во время исследования контроллеров Realtek я столкнулся с таким любопытным способом защиты прошивки от реверс-инжиниринга, как XOM (eXecution Only Memory). Эта технология разработана ARM уже около 10 лет назад. Опираясь на свой опыт, назвать ее очень популярной не могу. Однако, в Realtek решили использовать XOM в ряде своих контроллеров, которые попали к нам на исследование.

Если коротко, XOM – это аппаратно-программная технология, формирующая execute-only область памяти. Суть XOM состоит в аппаратной фильтрации транзакций на шине AXI (AHB). Если транзакция в защищаемую область запрашивает исполнение инструкции - доступ разрешен, если чтение/запись данных – доступ запрещен. Таким образом, прочитать или перезаписать прошивку в XOM просто так не получится.

Данная статья описывает подход к восстановлению спрятанной в XOM прошивки, основанный на анализе изменений состояния памяти и регистров процессора, возникающих вследствие выполнения инструкций процессора.

Решить ребус...

Как дилетант устройство процессора Интел 8080 изучал

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

Некоторое время назад стало доступно описание на языке Verilog легендарного микропроцессора 8080, полученное реверс-инжинирингом с фотографии кристалла его советского клона — КР580ВМ80А. Кому интересно техническое изложение про авторскую реализацию этого процессора — добро пожаловать под кат.

Читать далее

О решении головоломки Jane Street по реверс‑инжинирингу

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

Или: почему я никогда не выбираю лёгких путей

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

Чтобы было понятнее, о чём именно пойдёт речь — вот публикация «Can you reverse engineer an ASIC?» в блоге Jane Street, с которой всё это и началось.

А если кому вдруг захочется почитать (ужасный) код, который я использовал в этом состязании, можете заглянуть в мой репозиторий на GitHub.

Читать далее

Сервер был нужен ради одного заголовка: порт на Dart, future, который ждёт сам себя, и загрузчик без ffmpeg

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

Неделю назад я писал, почему видео из аниме-плеера нельзя просто вставить в <video>. Вывод был такой: нужен серверный видеопрокси, и никуда вы от него не денетесь.

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

Под катом: что именно делал сервер, почему на Android его нет, и что оказалось не переносом библиотеки с Python на Dart, а её переписыванием — вместе с багом, который жил в оригинале, стрелочной функцией в Dart, из-за которой whenComplete начинает ждать сам себя, и релизом, который подписывает не человек.

Читать далее

FNIRSI 2C53T — классный прибор с отвратительной зарядкой. Доделываем то, что не смог завод‑изготовитель

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

Китайцы почти сделали отличный прибор. А потом сделали зарядку, с которой этим прибором стало мучительно пользоваться.

От аккумулятора FNIRSI 2C53T ведет себя как нормальный рабочий инструмент: быстро достал, измерил, убрал. Но стоило подключить питание, и вся эта удобная концепция начинала рассыпаться. Прибор переставал ощущаться как инструмент, который можно просто оставить на столе и пользоваться весь день. Вместо этого приходилось постоянно думать, заряжается ли он вообще, можно ли сейчас верить показаниям и не проще ли снова выдернуть кабель.

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

Я решил это исправить.

Читать далее

Telegram попросил нас молчать об XSS. Мы всё равно публикуем

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

Одно пустое сообщение в Telegram могло привести к утечке переписки — при открытии HTML‑экспорта. Telegram отказался согласовать публичное раскрытие.

Разбираем причину уязвимости, показываем переписку с вендором и объясняем, почему обновление клиента не исправляет старые экспорты.

Читать далее

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

Спидраним Codewars

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

Решаем задания на Codewars вообще любой сложности за полчаса и меньше без ИИ и иных подглядываний (типа)

Читать далее

Решаем задачу по реверс-инжинирингу от Jane Street

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

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

Для общего представления рекомендую почитать ознакомительную статью из блога Jane Street «Can you reverse Engineer an ASIC?»

И если у вас вдруг возникнет желание изучить тот «ужасный» код, который я использовал для решения, то он лежит в моём репозитории GitHub.

Читать далее

Цифровая слежка в кармане: аудит 11 популярных российских Android-приложений

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

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

Продолжаю серию аудитов. В прошлый раз я разобрал семь яндексовских приложений — и там было на что посмотреть: буфер обмена, WebRTC-утечки, распознавание ключевых слов в аудиопотоке. На этот раз расширяю выборку и меняю фокус.

Одиннадцать приложений. Банки, госсервисы, маркетплейсы, навигация, магазин приложений. Все — из топа российского Android-рынк. Методология — статический анализ (SAST) плюс пассивный перехват logcat. Трафик не вскрывался, SSL Pinning не обходился, в Secure Folder не залезал.

237 уязвимостей суммарно (включая расширенную проверку). Шесть приложений с ключами подписи образца прошлого века. ВК с 11 трекерами и рейтингом риска 98/100. И Госключ, который неожиданно оказался единственным, кто делает всё правильно.

Читать далее

Реверс‑инжиниринг электросамоката и новая прошивка для него на Rust

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

Я выполнил реверс‑инжиниринг оборудования и прошивки своего электросамоката Egret GT. В статье будет рассказано о том, как мне удалось забраться внутрь, проанализировать обмен данными между компонентами и отреверсить прошивку.

Читать далее

«Наберите код»: история и устройство самого массового кодового замка СССР

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

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

Как-то раз я уже рассказывал про релейный кодовый замок из восьмидесятых. Тогда я говорил, что помимо него существовали ещё и более новые экземпляры. И вот, волею случая один из них попал ко мне в руки. Чем он отличается от предшественника и как он устроен? Сейчас и узнаем.

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

Press F1 to continue

Открыл обычный VBS, а внутри оказался PowerShell, AES и MSBuild

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

Мне в руки попался обычный файл с расширением .vbs. Ничего необычного. Открываю посмотреть, что там внутри, и сначала даже немного разочаровался. Какой-то VBScript, временные файлы, cmd.exe, PowerShell. Ну, думаю, очередной скрипт-загрузчик. Но потом заметил одну деталь. Скрипт читал сам себя. И вот тут стало уже интереснее.

Читать далее

Матрешка из Base64 и ROT13: разбираем вредоносный .sh, который пришел за FreePBX

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

Мне в руки попался файл с расширением .sh и, конечно же, его пришлось изучить. Открываю файл — первая половина более-менее читаемая, а дальше начинается классика: Base64, ROT13 и еще немного Base64. Вроде ничего страшного. Декодируем, смотрим результат, радуемся жизни. Но не тут-то было. Автор скрипта решил сделать небольшой квест в стиле: А что если положить один скрипт внутрь другого скрипта, а потом еще один внутрь него?

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