Пользователь
0,0
рейтинг
11 января 2013 в 20:39

Jailbreak для Windows RT


Спустя чуть более 2 месяцев в сети появился долгожданный jailbreak для Windows RT. Была найдена уязвимость в ядре Windows, позволяющая запускать неподписанные Desktop-приложения. К сожалению, данный jailbreak является привязанным, т.к. после перезагрузки превращается в тыкву.
Забавно, что уязвимость была найдена на настольной Windows 8, а оттуда уже перекочевала на Windows RT. Подробнее об этом процессе написано здесь.

Установка


Сам процесс jailbreak'а нетривиален, необходим компьютер с Windows 8 и Visual Studio 2012. Но умелец с XDA позволил делать это прямо на устройстве.
  • Скачайте архив и распакуйте его на устройстве
  • Запустите runExploit.bat
  • Следуйте инструкциям на экране
  • Когда на экране появится «Please press VOLUME DOWN now.» нажмите кнопку уменьшения громкости


Напомню, что Windows RT является редакцией Windows 8 для ARM девайсов, таких как Microsoft Surface.

А как это всё собственно работает?


Текст ниже является вольным переводом пересказом Circumventing Windows RT’s Code Integrity Mechanism. Я опустил множество подробностей, ибо это пятничный пост :)


В ядре Windows минимальная необходимая цифровая подпись задается переменной. В Windows 8 её значение равно 0 (Unsigned), т.е. Windows не требует цифровой подписи для выполнения приложения. Но на Windows RT её значение равно 8 (Microsoft). Весь jailbreak сводится к банальному обнулению этой переменной. На вид все просто.
На деле это сделать очень сложно, т.к. Windows Store приложения могут использовать только подписанные бинарники, да и из такого приложения нельзя получить security context, необходимый для прикрепления к другим процессам.
Но здесь Microsoft пошла на встречу и выпустила удаленный отладчик для Windows RT, который прекрасно цепляется к Desktop приложениям. С его помощью можно прицепиться к
CSRSS процессу и изменять напрямую его память. Последняя, в свою очередь, вызывает уязвимую функцию ядра (NtUserSetInformationThread).
Один из таких вызовов (найден в winsrv.dll):
TerminalServerRequestThread+0x230
MOVS R3, #0xC
ADD R2, SP, #0x58
MOVS R1, #9
MOV R0, 0xFFFFFFFE
BL NtUserSetInformationThread

Используя брейкпоинт мы можем изменить структуру по адресу R2, непосредственно перед вызовом NtUserSetInformationThread.
Также необходим базовый адрес ядра. Его можно получить вызовом NtQuerySystemInformation. Эта функция возвращает список всех загруженных драйверов и их базовый адрес.
Теперь остается только сделать инъекцию в winsrv.dll (для этого использовать полупустую страницу со смещением 0×10800) и после срабатывания брейкпоинта изменить IP регистр на начало нашего кода.
На этом все :)

Заключение


Для тех, кто все же дочитал до конца, даю ссылку на пост с коллекцией собранных для ARM программ. Notepad++, 7-Zip и VNC-клиент уже есть.
Вы также можете собирать софт сами, читайте это. Если потребуются статические библиотеки, которых нет в Windows SDK, то вы можете воспользоваться этим инструментом.
@dordzhiev
карма
0,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (47)

  • +4
    Воображение дорисовывает кучу интересностей, вроде MonoDevelop и других десктопных приложений на плантеше, где Desktop Mode считался рудиментарным и непонятно зачем оставленным :)
    • +7
      Торренты главное
      • +3
        Торрент клиенты, видео-плееры, утилиты, SSH клиенты, может даже Far Manager — все это теперь реальность!
        • 0
          Far на планшетике без клавиатуры — не удобно будет…
          • +2
            Есть же внешняя клавиатура в чехле.
            • 0
              Я же специально написал «без клавиатуры». Ведь в принципе на Windows RT могу появится планшеты и без нее.
              • 0
                Могут-могут, но пока планшеты с виндой изначально рекламируются с клавиатурой в отличие от таковых с айос и андроидом.
                А без клавиатуры будете запускать фар а ля нортон коммандер — в полэкрана, а нижнюю половину экрана займёт экранная клавиатура.
    • +4
      А не проще ли сразу купить планшет с Windows 8 Pro и интеловским процессором, если вам нужен MonoDevelop? :)
      • 0
        Во-первых, разница в цене в 1.5-2 раза, во-вторых, я лелею надежду, что топовый ARM должен лучше держать заряд, меньше весить и меньше греться, чем максимально урезанный Intel, пусть и в ущерб производительности — на то это и мобильное устройство. Сейчас результаты с Win8/RT планшетами показывают обратную картину, но это самые первые модели, да и разнообразия на рынке откровенно никакого.
        • 0
          Мне кажется, что при запуске приложений, не оптимизированных под ARM, батарейка будет ой-ой-ой как быстро садиться. Надо будет попробовать это сделать со своим Surface, когда он из США прилетит…
          • 0
            бoльшую часть оптимизаций сделает компилятор. Если утрированно, то чаще всего C/C++ код для ARM и x86 почти не отличается. Конечно, бывают глубокие оптимизации, ассемблерные вставки, SIMD инструкции, которых на ARM нет. В случае 7zip, VNC, Putty и пр. разницы быть не должно.
            • 0
              Десктопные приложения о энергии не заботятся вовсе и ряд ли компилятор заставит их кидать падать в сон всегда как только можно.
              • +1
                Надо было подождать с ответом до 12 января :)
              • 0
                Интересно окунуться в прошлое, пусть даже всего и на год :)
                На счет Intel планшетов на W8 у меня сложилось стойкое мнение: чтобы эта штука работала 8+ часов в нее установлен сверхмощный аккум (в моем 37Wh), а сама система и/или CPU научены скидывать частоту на минимум при любом уменьшении нагрузки, даже во время игр. Видимо, иначе просто было бы невозможно со старым софтом под Windows достичь хоть какого-то времени работы. Буквально, у меня заряда планшета хватает на 4-5 часов игры в старые 2D cRPG (Arcanum, Fallout, etc.), а при серфинге планшет живет всего в полтора раза больше, т.е. проседание от нагрузки сравнительно небольшое. Я думаю, с Win RT ситуация такая же — при разработке Офиса никто не считал такты и не писал Neon-вставки, просто у системы запас мощности достаточный, чтобы приемлемо работать и без супер-оптимизаций для экономии заряда.
                • 0
                  Я думаю, с Win RT ситуация такая же — при разработке Офиса никто не считал такты и не писал Neon-вставки, просто у системы запас мощности достаточный, чтобы приемлемо работать и без супер-оптимизаций для экономии заряда.

                  Да и этого никто не делает. Экономия от этого практически нулевая в прикладном софте. В числодробилках — наверное да. Скорее больше влияет архитектура приложения и среды выполнения.
                  Хотя Office 2013 требует SSE2. Но перенести на NEON код для других SIMD-инструкций очень просто.
                  • 0
                    (тут был неуместный сарказм про мс офис, который уже мало отличается по прожорливости от некоторых игр)
  • +14
    Просто жуть берёт, через какое место пробираются туда, что можно было бы оставить штатным модом для гиков с отказом от гарантии…
    • +2
      Это лишь мое предположение, но Интел сейчас делает новые Atom-ы спецом под Вин8. Я думаю, что у Интела и Майкрософт соглашение: мы под вас процессоры мутим, а вы не подсыраете нас и не делаете WinRT полноценной, чтобы вместо нас покупали ARM.

      Плюс еще фактор линукса: статья где-то была, мол, Интел заявлял, что на новых Атомах линукс даже не запустится (MS на радость). Вот такой вот бизнес…
      • +2
        > Плюс еще фактор линукса: статья где-то была, мол, Интел заявлял, что на новых Атомах линукс даже не запустится (MS на радость). Вот такой вот бизнес…
        Имелось ввиду, что на начальном этапе не будет драйверов для встроенной (в Atom) видеокарты компании Imagination Technologies.
      • +1
        Плюс еще фактор линукса: статья где-то была, мол, Интел заявлял, что на новых Атомах линукс даже не запустится (MS на радость)

        Это был косяк Clover Trail. Clover Trail+, который представили на CES 2013, предназначен как раз для линуксов, а точнее для Android. В Bay Trail тоже заявлена поддержка линукс, но уже любого рода.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +5
      Обратная совместимость,
    • +6
      новую копию Windows тогда просто вообще никто не будет покупать и все. Да и разработчики игр тоже будут не рады — Valve например уже.
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          UAC можно отключить в пару кликов — только поэтому она прошла нормально.
          А вот например в ранних версия Windows SmartScreen для программ нельзя было отключить (кроме как выпилить из системы ее DLLки и сервис) — но в релизе MS спасовала и дала возможность ее отключить.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      Подменить не сложно. Другое дело, что в Windows есть список авторизированных сертификатов, с которым он сверяется. Этот список опять же подписан и проверяется ядром. А ядро проверяется Secure Boot'ом.
  • 0
    Глупо, конечно, мечтать, но это для меня еще один повод неистово хотеть Windows RT на свой TF300 с док-станцией
  • 0
    Например, putty уже собрали под windows RT.
    i.imgur.com/lWKjp.png
    Так что Surface становится гораздо более притягательной железкой.
  • 0
    А ведь игры от id Software с открытыми движками (т.е. до Doom 3 включительно) тоже, наверное, получится собрать под ARM? Тем более что на *nix-ах их уже давно собирали под эту архитектуру?
    • +1
      OpenGL нет под RT
      • +2
        Есть множество оберток, например в Qt5 (OpenGL ES) используется open-source ANGLE.
        • 0
          Премного благодарен вам за наводку на данную библиотеку.
    • 0
  • 0
    Я правильно понимаю, что это означает возможность запуска не старых десктопных win32 приложений, а только лишь ещё пока не существующих недописанных homebrew-приложений, собраных под arm? Или как вообще?
    • +2
      Windows RT это та же самая винда, у неё остался Win32 API. Так что (в большинстве случаев) достаточно просто кросс-компилировать приложение и все.
    • +2
      Не совсем так. Есть много софта с открытыми исходными кодами, который можно собрать под ARM и запустить на surface(в топике есть ссылка на тот-же 7-zip например).
      Главное, чтобы jailbreak на этом планшете не превратился в игру «кошки-мышки» между спецами из MS и сообществом…
  • +1
    Microsoft уже объявили, что в ближайших апдейтах прикроют дыру. Так что придется сидеть без обновлений на джейлбрейкнутой WinRT, или искать новые дыры. То есть та же ситуация, что с iOS.

    Народ радуется, что появятся торрент-клиенты. А в чем проблема написать торрент-клиент в стиле метро? Есть какие-то запреты в Windows Store, или просто десктоп-версии функциональнее?

    Как мне кажется, Microsoft вполне могла бы расширить Windows Store до поддержки десктоп-вариантов приложений для ARM и x86, в этом случае можно было бы ставить те же 7Zip из магазина без костылей.
    • +2
      Приложение Windows Store, по умолчанию, не имеет прямого доступа к файловой системе компьютера. Из-за этого торренты придется хранить внутри Isolated Storage.
      Хотя какая разница, я не пойму, на планшете кроме фильмов и музыки качать ничего нет смысла, так что можно и сделать приложение, которое по клику будет открывать SaveFileDialog и абсолютно «легально» сохранять в общую ФС
      • +2
        С торрентами проблема даже не с доступом к файловой системе, а с доступом к интернет каналу. Насколько я знаю, в WinRT приложениям не позволено напрямую отжирать весь канал, а тем более в фоне. Если у приложения есть необходимость в фоне скачать какой-то большой контент, то оно может использовать специально для этого предусмотренный сервис, который очень умный: умеет обрабатывать разрывы связи, докачивать, отдавать канал активным приложениям, следить за батарейкой и прекращать загрузку при низком уровне заряда, следить за типом соединения и не давать выкачивать гигабайты по 3G, предлагая найти ближайший WiFi. Ну и наверное много чего еще. Торренты не сильно вписываются в такую концепцию — концепцию WinRT.
    • 0
      Winapi менее безопасен и такие приложения надо было бы ревьюить по году каждое, чтоб не пропустить малварь или устраивать какую-нибудь виртуализацию, чтоб их изолировать
      • +2
        В полноценной Windows 8 ведь все равно есть возможность вручную ставить такие приложения, почему бы не дать возможность ставить их из Windows Store, в т.ч. в WinRT? Пусть в отдельном разделе, пусть с запросом прав администратора и окошком предупреждения о возможной опасности. Иначе получается сознательное урезание уже работающего функционала. В целом я не против безопасной среды для домохозяек, но почему бы не предоставить продвинутым пользователям больше возможностей, пусть по умолчанию отключенных, но с возможностью легально включить.

        Кроме того, в случае выявления вредоносного ПО достаточно удалить приложение из магазина и забанить разработчика. А в случае скачивания из интернета и установки вручную в Windows 8 практически невозможно что-либо сделать.
        • +1
          Окошко предупреждения не работает — посмотрите насколько развит бизнес «обновления оперы» для андроид. Еще есть такие соображения: где-то была статья, что win rt это некий пруф оф концепт существования чистого метро, таким образом неурезонного десктопа там быть не может.

          я бы на месте мс не делал бы стор, в котором есть небезопасные десктоп приложения, а лучше вместо этого ввел бы какие-то песочницы для win32 приложений, например чтоб они работали под отдельным квазиюзером и не могли читать писать чужие данные без спецразрешения. Под это дело принимал бы в строр тоько такие приложения, которые нормально работали с такими ограничениями. А это требует переделки при и речью приложений. Плюс они должны ставится и сноситься без напряга и бесследно.
  • +5
    Думаю, что через некоторое время эта возможность будет официально открыта.
    Скорее всего, они еще не сделали маркет для десктопных приложений (RT + 7/8).

    Сейчас обстановка напоминает обстановку с перывм iPhone и iOS 1.
    • 0
      Тогда пропадет весь изначально вложенный маркетологами и разработчиками смысл в WIndows RT — как системы только с Modern-приложениями.
      Очень сомневаюсь, что в ближайшее время стоит ждать такой жать. Разве что возможно только с выходом Windows «Blue».
      • 0
        Я бы просто назвал такое «виндовс 8 про арм» и держал бы от отдельно все равно
  • 0
    «Вечно эти русские что угодно придумают, только бы на картошку не ехать»

    Тут систему и так не знают, во что превратить, то ли это почти десктоп (но «пальцем в кнопки десктопа не попадешь»), то ли это почти планшет (но Word работает на десктопе, блин! — а про него см. выше). Маркет наполняется, но какой-то он такой… не особо пока богатый… В общем, работы куча, хотя (на презентации) отчитались, что все работает. И тут приходят самые умные, и делают харакири тому, на что были ну просто все (оставшиеся) надежды — защите от левого софта…

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.