Чё это все ломают копья про закладки, дыры и т.д. в IOS, Android, Win, etc ...
Тут вон оно чё, Михалыч...
http://www.ixbt.com/editorial/inoblogger/the-second-os-in-mobile.shtmlИ никакая кастомная прошивка, антивирус и прочее не спасёт...
я уже давно об этом всем говорю. вообще, надо понимать, что большинство ARM SoC разработано с учётом пожеланий военных или медиаиндустрии, и конечный пользователь считается врагом.
в старых квалкоммах (MSM7200A) загрузка начиналась с BP, на котором та самая AMSS. При этом у него общая оперативная память с AP, а если AP залезает в «запрещенную» область - ребут обоих процессоров. Ну и на все девайсы бит, определяющий владельца - AP или BP. Всё, конечно же, во власти модема (BP), а обычный процессор управляет всем через RPC запросы к BP. Самый прикол был в том, что на MSM720xA AP (процессор, где линукс и юзер-враг) имел доступ на запись к регистрам, управляющим доступом в RAM и NAND, и мог на ура заовнить всю эту «систему безопасности» и записать в NAND похаканный бутлодер. Я до сих пор не знаю, был ли это злой умысел (бекдор) или тупость, но судя по исходникам AMSS, там просто бардак и наслоения легаси (генерация кода по таблицам регистров и файлы с 10 вложенными ifdef'ами), и могли просто и не заметить.
Впрочем, когда со всей этой херней их погнали ссаными тряпками из ванильного ядра и стали поливать грязью в блогах, ситуация слегка улучшилась, и сейчас, в новых SoC, большая часть периферии под контролем AP, а модем можно даже не загружать. Хотя, наверное, всё дело в том, что появились TrustZone и IOMMU.
Сейчас, на TI OMAP4, Samsung Exynos, Nvidia Tegra - всё очень серьезно. Загрузка начинается с кода в OTP (одноразово программируемая память внутри процессора), который инициализирует eMMC/USB и принимает подписанный загрузчик. Это всё называется модным словосочетанием chain of trust (хотя я бы назвал это distrust). Но, дырки есть везде. В Google Galaxy Nexus, например, этот загрузчик не проверял подпись кода, который грузил. Есть ссылки на то, как ломали код в TrustZone на мотороле.
В рамках проектов OpenMoko и Replicant мы подготовили список телефонов с уровнем «свободности». Моя позиция тут такова - проприетарные фирмвари в виде блобов, которые грузит линукс не хуже (а даже лучше), чем девайсы, которым не нужна фирмварь. Если она не нужна - значит, лежит в EEPROM, и хрен вы её поизучаете. Ну и если девайс не может делать DMA в память (он хотя бы отгорожен IOMMU, а лучше - подключен по шине типа USB, I2C, HSIC) - то меня несвободность прошивки не волнует.
http://redmine.replicant.us/projects/replicant/wiki/TargetsEvaluation кому интересно - в X86 тоже есть аналогичные решения. Например, режим работы процессора SMM, у которого привилегии выше, чем у гипервизора для VT-X. При этом есть SMM Monitor, и возможность сделать кастомную реализацию (если вы пишете BIOS для платы).