Обновить
64K+

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

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

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

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

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

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

Читать далее

Новости

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

От аккумулятора 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. И Госключ, который неожиданно оказался единственным, кто делает всё правильно.

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