← На главную

Bad Update для Xbox 360 стал почти мгновенным и надёжным

04.11.2026 22:01 · hackernews

Автор серии статей о гипервизоре Xbox 360 рассказал, как сообщество улучшило опубликованный им proof of concept Bad Update. Первоначальная версия срабатывала примерно в 30% случаев и могла занимать около 20 минут. После нескольких доработок запуск занимает считаные секунды, а вероятность успеха приблизилась к 100%.

Первое заметное изменение предложили исследователи ihatecompvir и InvoxiPlayGames. Их метод DaTArrest использует бесплатную демоверсию Rock Band Blitz и специально подготовленный файл сохранения как новую точку входа. Благодаря совместимости подписанных пакетов с USB-накопителями необходимые файлы можно перенести на консоль через флешку. В результате отпала потребность в диске Tony Hawk’s American Wasteland, который требовался исходному варианту.

Вторую группу улучшений внёс участник под именем Máté, оптимизировав работу с состоянием гонки в гипервизоре. В исходной реализации заранее вычислялся лишь один из 1024 возможных вариантов шифротекста. Новая хеш-таблица охватывает все варианты и хранит соответствующие им значения для подмены. Ключ длиной 20 бит занимает около 24 МБ памяти, но обычно исключает коллизии либо оставляет лишь единичные случаи. Автор отдельно признаёт, что его собственной ранней попытке создать таблицу мешало неучтённое различие в сбросе TLB между старой и новой версиями гипервизора.

Дополнительный прирост дали более эффективное вытеснение данных из кеша и перераспределение приоритетов аппаратных потоков PowerPC. Один поток получил 31 из 32 доступных слотов диспетчеризации, другой — только один, благодаря чему нужная операция выполняется гораздо чаще. Это общее описание механизма оптимизации; публикация автора содержит технические подробности и исходный код.

Наконец, разработчик изменил способ определения успешного завершения. Прежняя проверка пропускала удачные итерации и иногда ошибочно принимала неподходящее состояние памяти за успех, что приводило к сбоям консоли. Новый наблюдающий поток считает изменения всех 15 блоков обновления и подтверждает результат только после обработки последнего. Усиленная нагрузка на кеш сначала сама вызывала сбои примерно в 30% запусков. Их удалось устранить, снимая нагрузку и блокировки L2 сразу после обнаружения последнего блока.

По итогам тестирования эксплойт обычно срабатывает с первой попытки, иногда требует от двух до пяти, а сбоев автор больше не наблюдал, хотя полностью их не исключает. Код улучшений опубликован на GitHub. Следующая, четвёртая часть серии будет посвящена отдельному исследованию Peer Pressure. Главным личным выводом автор называет необходимость делать паузу после сложного прототипа: усталость и туннельное мышление помешали ему вовремя заметить очевидные направления оптимизации.

Читать оригинал →