Archos 101 — различия между версиями

Материал из YourcmcWiki
Перейти к: навигация, поиск
м (PWNED)
м (PWNED)
Строка 44: Строка 44:
 
* заменить 8 байт по адресу 0x7520 от начала mmcblk0 с 7F402DE9003091E5 на 0000A0E31EFF2FE1.
 
* заменить 8 байт по адресу 0x7520 от начала mmcblk0 с 7F402DE9003091E5 на 0000A0E31EFF2FE1.
 
* заменить 8 байт по адресу 0x14824 от начала mmcblk0p1 с 7F402DE9003091E5 на 0000A0E31EFF2FE1 (либо по адресу 0x14424 в файле /mnt/rawfs/avboot, но в rawfs как-то не очень пишется).
 
* заменить 8 байт по адресу 0x14824 от начала mmcblk0p1 с 7F402DE9003091E5 на 0000A0E31EFF2FE1 (либо по адресу 0x14424 в файле /mnt/rawfs/avboot, но в rawfs как-то не очень пишется).
Первое патчит первичный загрузчик, второе — вторичный (которой /mnt/rawfs/avboot). Мысль в том, чтобы заменить тело функции <tt>verify_hash()</tt>, проверяющей подпись и возвращающей 0, только если она корректная, на просто "<tt>return 0</tt>", что на ARM-ассемблере звучит так:
+
Первое патчит первичный загрузчик, второе — вторичный (которой /mnt/rawfs/avboot). Мысль в том, чтобы заменить тело функции <tt>verify_hash()</tt>, проверяющей подпись и возвращающей 0, только если она корректная, на просто «<tt>return 0</tt>», что на ARM-ассемблере звучит так:
 
<code-asm>
 
<code-asm>
 
MOV R0, #0
 
MOV R0, #0
Строка 50: Строка 50:
 
</code-asm>
 
</code-asm>
  
Понятное дело, для этого нужен '''root''', который на архосе получается Archangel'ом.
+
Понятное дело, для этого нужен '''root''', который на архосе получается Archangel’ом.
  
 
<span style="color: red; font-size: 18pt">'''Внимание!'''</span>
 
<span style="color: red; font-size: 18pt">'''Внимание!'''</span>

Версия 12:04, 1 апреля 2011

Archos-101-internet-tablet lg.jpg
Archos 101 — «интернет-планшет» от компании Archos. Заказывал с computeruniverse.de. Знал бы о минусах — не купил. «Полный фарш» (и гораздо более полный, чем в Archos 101) есть уже почти у всех.

UPDATE 2011-04-01: Загрузчики Archos 101 (и вообще gen8) мною успешно взломаны. См #PWNED.

Плюсы

  • Большая (реально большая!) батарейка.
  • Как ни странно, отличные стереодинамики, звук лучше, чем на многих ноутбуках :)
  • Наличие USB-HOST с полноценным 0.5А питанием.
  • Наличие прошивки SDE (Special Developer Edition) и полных (!) исходников ядра, с конфигом, можно собрать любой нужный модуль — например, можно подключать USB 3G модемы (желание возникает в связи с отсутствием 3G).
  • Из коробки есть модуль ядра tun, есть BusyBox.
  • Из коробки есть большая часть кодеков (кроме разве что MPEG2 и AC3), и HD видео девайс показывает.
  • Неплохой процессор и GPU, 1247 попугаев в Quadrant’е.
  • 10.1" экран, 802.11n. Но это уже почти у всех есть.
  • Процессор TI OMAP 3630. Хорошо тем, что TI, потому что они предоставляют спеки, в отличие от анального Qualcomm’а со своими Snapdragon’ами.

Минусы

Хард:

  • Экран ОТВРАТИТЕЛЬНЫЙ. Углы — сверху и снизу примерно одинаково средненькие, справа УЖАСНЫЙ, слева наилучший. Кроме того экран очень широкий, 1024х600 представляется не очень удобным разрешением. А ещё и глянцевый, постоянно смотришься в него как в зеркало.
  • Камера ОТВРАТИТЕЛЬНАЯ — как на мобильниках 5-летней давности.
  • Не заряжается по USB. Хотя это и следствие большой батарейки — она двумя амперами-то по-моему часа 4 заряжается, страшно представить, что было бы по USB. Но возможность зарядки по USB всё равно можно было предусмотреть.
  • Маловато оперативки. Из-за этого девайс бывает не очень шустрый, хотя игрушки идут хорошо, HD видео девайс вполне показывает, и в Quadrant’е успешно получает 1247 попугаев!
  • Нет ни 3G, ни GPS.

Софт:

  • Нет netfilter’а (а с ним ни tethering’а, ни openvpn несмотря на то, что есть модуль tun).
  • Нет Android Market’а, хотя его и можно поставить руками (то есть там «нелицензионный» Android без денежных отчислений гуглу).
  • Системный раздел смонтирован из squashfs, то бишь доступ туда только на чтение. То бишь, без SDE не ставится перманентный root, а только получается заново при каждом запуске программой Archangel.
  • Fastboot’а нет, прошивать девайс себя так просто не даёт, в том числе recovery. Загрузчики проверяют цифровую подпись ядра, initrd, вторичного загрузчика. Но я их уже дизассемблировал и сломал!
  • А установка SDE, вроде как, обнуляет области флеша с DRM-ключами… То есть дело не в DRM — контент, защищённый ДеРьМом, юзать нельзя ни в коем случае. Но я ненавижу производителей, которые запрещают мне что-то делать с МОИМ девайсом!
  • Поддержка usb flash drive не пашет. Требует допила, либо установки UrukDroid’а (модифицированной прошивки). Вообще похоже, что без UrukDroid’а делать на нём нечего. А для него нужен SDE, а SDE поганит прошивку. Так что ждём PWN’а. Уже PWNED!!! См. ниже.

PWNED

Pwned.png

Итак, решил наконец вернуться из дебрей дизассемблирования к тому, ради чего я его затеял — к взлому загрузчиков Archos’а 101, и проверить, получится ли.

По-лу-чи-ло-сь. Оба загрузчика (первичный и вторичный) успешно взломаны. Проверка цифровых подписей на моём девайсе теперь отключена.

Чтобы повторить это на своём девайсе (теоретически должно подходить и для других Archos gen8), нужно:

  • заменить 8 байт по адресу 0x7520 от начала mmcblk0 с 7F402DE9003091E5 на 0000A0E31EFF2FE1.
  • заменить 8 байт по адресу 0x14824 от начала mmcblk0p1 с 7F402DE9003091E5 на 0000A0E31EFF2FE1 (либо по адресу 0x14424 в файле /mnt/rawfs/avboot, но в rawfs как-то не очень пишется).

Первое патчит первичный загрузчик, второе — вторичный (которой /mnt/rawfs/avboot). Мысль в том, чтобы заменить тело функции verify_hash(), проверяющей подпись и возвращающей 0, только если она корректная, на просто «return 0», что на ARM-ассемблере звучит так:

MOV R0, #0
BX LR

Понятное дело, для этого нужен root, который на архосе получается Archangel’ом.

Внимание!

Если внезапно кто-нибудь будет повторять и по данным адресам обнаружит данные, отличные от 7F402DE9003091E5, ни в коем случае не меняйте — убьёте загрузчик, и девайс будет bricked. Ну и вообще в любом случае, все модификации загрузчика делайте оочень аккуратно и на свой страх и риск.

Его наверняка можно debrick’нуть, процессор в нём TI OMAP 3630, и с большой вероятностью выведен загрузочный UART, если нет — то, возможно, выведен test point (пин процессора SYS_BOOT5) и, соединив его с VCC, можно загрузиться по USB… Но это — бааальшой геморрой, так как сначала его (тестпоинт) нужно ещё найти, а потом ещё найти/написать загрузчик, который сможет восстановить систему…

Кстати, спасибо http://archos.g3nius.org/, идея взлома взята у него (он так же ломал Archos 5).

3G USB модемы

У многих возникает логичная идея: использовать вместе с архосом 3G USB модемы, например, распространённые Хуавеи разных моделей (E150/160/1552 и т.п). Однако есть проблемы:

  1. Эти модемы после использования их под виндой требуют переключения в нужный режим через usb_modeswitch.
  2. Даже когда сделаешь usb_modeswitch, оказывается, что Archos 101 не содержит в себе модуля ядра option.ko (CONFIG_USB_SERIAL_OPTION), необходимого для работы сих модемов, а содержит лишь другой драйвер USB-модемов — cdc_acm, который эти Хуавеи как раз не поддерживает.
  3. Что ещё важно — владельцы Archos 70 и ниже, можете забыть про модемы, либо придумывать внешнее питание, потому что Archos 70 даёт только 100мА питания на USB-порту — 3G-модемам этого мало.

Однако не всё так плохо, Archos выложил в OpenSource полные исходники ядра для планшетов gen8 (от A28 до A101). Причём не просто выложил, а с конфигом и полным набором инструментов кросс-сборки. Что даёт влёгкую собрать любые необходимые модули. А полученный до этого с помощью Archangel’а рут даёт возможность их установить.

Так что забирайте и радуйтесь (всё для штатной прошивки):

  • Статически собранный под Archos бинарник usb_modeswitch: Media:A101_usb_modeswitch.zip. usb_modeswitch нужно вызывать с параметрами типа usb_modeswitch -H -v 12d1 -p 1446 (это мой разлоченный Huawei E150 от МТС), но для разных моделей модемов чиселки могут отличаться. После однократного usb_modeswitch модем можно вынимать и вставлять, он будет в правильном режиме. Если вставить под винду — вероятно, usb_modeswitch понадобится повторный. Ещё может быть полезно сказать модему AT^U2DIAG=0 средствами компьютера и HyperTerminal’а / minicom’а / echo AT^U2DIAG=0 > /dev/ttyUSB0.
  • Собранный под Archos (прошивка 2.1.04) модуль ядра option.ko: Media:A101_option.zip
  • Модифицированные скрипты /system/bin/tether_*.sh: A101_tether_start_usb.sh, A101_tether_at_cmd.sh, A101_tether_stop.sh. Все вместе одним архивом: Media:A101_tethers.zip. Их нужно скопировать в /system/bin, чтобы использовать стандартный пункт меню «Cell phone tethering».

Дополнительные ссылки:

А в UrukDroid’е поддержка 3g модемов уже и так есть, кстати.