Пожалуй соглашусь. Я с напарником делали игровой движок как дипломную работу, сделали небольшую демку. Этим летом получили свои дипломы, движок пока ушел в застой. И вот недавно я вспомнил, что в любой современной игре... есть поддержка геймпада. Я за несколько вечеров (дела свои вечером тоже есть, поэтому несколько) завел поддержку и получил кайф.
Так что ваша мысля здравая.
Также я немного в реверс пытался, реверсил старую никому неизвестную в СНГ игрушку Total Immersion Racing (Акелла перевела как Жажда Скорости) - гоночный симулятор. Сидишь, копаешься, вдруг находишь где и языковые файлы можно подменить, и NoCD запилить, и научил нужные текстуры подгружать научить... Тоже кайфово было, когда видишь, что результат твоей работы не только не роняет игру, но и улучшил ее.
Как минимум надо производить реверс для написания загрузчика. Дело, с моей точки зрения, дико сложное (я только отдельные моменты вычленял для написания кастомного инита для Z00ED/RD). Плюс есть только один шанс зашить загрузчик, потом если хана, то хана. На сколько мне известно. Может мои знания устарели.
Но я запускал вторичный загрузчик (lk2nd), который был написан энтузиастами из Postmarket OS.
github.com/msm8953-mainline
И оно даже загрузило бут, который используется прошивкой. Вопрос в чем. А нужно ли это вообще?
И как полноценная замена стокового загрузчика оно не работает. Один человек как-то раз зашил себе lk2nd в aboot, поднял ли он устройство — без понятия, я дальше историю сообщений не читал.
Спасибо большое за статью!
У меня есть два вопроса:
1) Что, если мы ломаем возможность корретной работы TWRP? Разработчик OrangeFox (форк TWRP) делал такую фичу. Но! У меня только черный экран был. ADB я не проверял. И OrangeFox имеет в себе возможность установки пароля. Но при условии, что TWRP спокойно грузится из-под Fastboot и ADB в сломанном варианте работать будет… То беда.
2) Что делать, если TWRP может быть загружено без разблокировки? Или по факту это не дает возможность взлома?
И спасибо за методы защиты. Единственное, что получается последним железным вариантом защиты это написания кастомного загрузчика (aboot), в который каждый раз при загрузке надо вводить пароль как на BIOS/UEFI?
И еще.
Третий и самый сложный подход – продолжать использовать альтернативную сборку ОС, но заблокировать загрузчик используя user-settable root of trust. Это действительно сложный и затратный подход, достойный написания отдельной статьи, потому как требует самостоятельно делать сборку ОС и самостоятельно её подписывать.
Я бы с удовольствием прочитал про это. И если б была возможность, я бы попробовал сделать это у себя. Жаль, что у меня это работать вероятно не будет… Бедный мой mido)
Еще раз спасибо за статью!
P. S. Прошивка CarbonROM, которую в данный момент времени я сопровождаю, не собирает userdebug. Только user.
Доброго времени суток. Извините, что я не отвечал, на это было несколько причин. Одна из них — я не знал, что Вы ответили (спасибо другу-владельцу mido). Еще одна — я больно забывчивый.
Начну с простого, с SELinux. Расскажу, как я все вижу.
Sepolicy является набором исключений для доступа к низкоуровневым настройкам устройства, к примеру, для настройки интенсивности света фонарика и для настройки ядра (привет той красивой менюшке в LOS). Это сделано для того, чтобы левые программы не имели прямого доступа к этим настройкам. Однако все решается рутом, Kernel Auditor и подобные как-то же делают свое дело. Теперь к сути. SELinux отображает работает ли защита этих настроек или нет. Permessive — все доступно, пользуйся на халяву. Enforcing — защита стоит, но Sepolicy делает исключения для некоторых настроек (извиняюсь, это скорее переменные типа integer, то есть целые числа). Но без Sepolicy устройство тупо не загрузится либо что-то не будет работать (привет красивой менюшке в LOS, настройка ядра в настройках не будет работать без Sepolicy). Также Sepolicy в исходниках обычно состоит из нескольких кусков: для прошивки, для процессора и для устройства. Все это комбинируется и получается свод исключений. Вооось… А есть еще скрипт, который способен делать отображение типо стоит Enforcing, а на самом деле Permessive. Такие скрипты лежат обычно в vendor или в корне устройства, если мне память не изменяет. А еще в исходниках есть один очень интересный флаг — SELINUX_IGNORE_NEVERALLOWS. Во время сборки могут возникнуть ошибки сборки Sepolicy. Они решаются либо исправлением Sepolicy, либо использованием этого флага. Прошивки с этим флагом работают, но на сколько хорошо — без понятия, ибо я с таким флагом не собираю с 6-го марта (я сижу только на CarbonROM, то бишь на прошивке собственного приготовления).
Где встретить SELinux Permessive? На портированных прошивках с других устройств, на прошивках с только-только вышедшим Android (к примеру, сейчас все прошивки Android 10 для mido с SELinux Permessive). Обычно в О телефоне внизу есть отдельный пункт для отображения статуса SELinux.
Уф, с SELinux вроде все.
По поводу TWRP на A/B системах: я не знал, каюсь, нет такого устройства. У меня A-Only. И да, советую поставить Orange Fox все-таки каким-нибудь образом, там можно поставить пароль на сам режим восстановления, поставить блок на работоспособность TWRP (не все же такие простые, как нам кажется), то есть если в Fastboot поставить TWRP, то максимум увидите черный экран. Плюс лиса способна расшифровать внутреннюю память, но только введя пароль. В его создателях я лично не сомневаюсь.
По поводу выбора файла. Я б сошелся на том, что да, нужен выбор пользователя.
По поводу камеры. Open Camera не знаю на сколько часто обновляется. Но на качество фото также влияет прослойка кода между железом и основным кодом (HAL). К примеру, на mido и ему похожих устройствах HAL камеры собирается из исходников, там много чего я видел для HDR, но глубоко не смотрел (просто зачем? Это дело инженеров из Qualcomm). Ну, и плюс драйвера в ядре… Snap камера тоже вроде неплохо снимает, но я в основном использую модификацию Google камеры (ну извините, уж больно хорошо снимает).
Что еще?.. А, про сборку. Так вооось… Об этом можно почитать, как это банально не звучало бы, на 4PDA. Там для этого есть отдельная тема. Инструкции там достаточно просты в понимании вплоть до «скопировать и вставить», пока дело не дойдет до скачивания исходников устройства.
Спасибо, что ответили, я не ожидал, что мой комментарий увидит свет и что на него еще и ответят.
До связи.
P. S. Извините за мой стиль написания текста.
Основные факторы, которые необходимо учитывать при выборе устройства
Собрать может и школьник (судя по моему опыту), если объяснить ему как. Всего-то, скачать исходники прошивки, устройства, провести простую адаптацию (есть и глубокая адаптация) и с большой долей вероятности она стартанет. Вопрос в работе каких-либо настроек.
Из-за CAF, то бишь Code Aurora Forum, который под определенный процессор и версию ядра выпускает обновления исходников. На мой Redmi Note 4X с msm8953 с ядром 3.18 до сих пор обновляются исходники для 9.0.
Благодаря этому некоторые устройства и живут с помощью "кражи" проприетарных библиотек с похожих смартфонов. К примеру, Redmi Note 4X (mido) содержит в себе библиотеки от Mi A1, Oneplus 3 (библиотеки с msm8996 подходят для msm8953), BQ Aquarius X2. Я также видел, что Zenfone 3 тоже используются библиотеки с tissot.
Подбор устройства
Личная придирка. Есть неофициальные версии Lineage 16.0, есть модификации, есть официальные другие прошивки производные от Lineage и от AOSP. Resurrection Remix официально поддерживает mido на Android 9.0, CarbonROM тоже (сопровождаю я). Тут надо смотреть политику каждой прошивки. Сказать только могу за себя, что CarbonROM беспокоиться за безопасность пользователей. Как пример, мне не дали внести настройку звука. Или у меня в ядре был greenstart код, который ломал некоторые проверки. Пришлось вернуть.
Также в систему можно встроить скрипты, которые делают подмену информации, к примеру, вместо SELinux Permessive будет писать SELinux Enforcing, но это будет не так. Есть Enforcing с игнорированием ошибок Sepolicy во время сборки прошивки (в userdebug обычно такое, в user сборках такое игнорирование игнорируется).
Пример установки LOS
УСТАНОВКА МОДИФИЦИРОВАННОГО РЕКАВЕРИ(RECOVERY)
Личная придирка. Recovery переводиться как режим восстановления/восстановление.
Не советую запускать временный рекавери. Если что-то пойдет не так, восстановить без компьютера смартфон будет невозможно. И TWRP по-моему спрашивает про установку приложения (хотя я недавно ставил маме TWRP, приложение не появилось, TWRP даже не предложило, хотя возможно автор постарался). Также можно использовать производные рекавери от TWRP, как личная рекомендация — Orange Fox, глава проекта из Украины, Orange Fox является Open Source проектом. И хлам не предлагает.
УСТАНОВКА LOS ЧЕРЕЗ РЕКАВЕРИ
Не всегда. Шифрование не везде принудительно. Пример — Asus Zenfone 2 Laser ZE500KL (Z00ED).
Vendor тоже надо чистить, если есть (но лучше почитать инструкцию по установке кастомной прошивки под конкретно ваше устройство).
Примечание: в Redmi 4(X) и в Redmi Note 4(X) Snapdragon (и возможно в других, не интересовался) есть раздел cust, который на кастомах не используется, благодаря Абишеку (бывший сопровождающий Lineage OS на mido) на mido cust используется как vendor. В других смартфонах vendor может появиться с помощью переразметки.
Прошивку можно скопировать в память телефона (и остальные пакеты) и установить через меню установки. Но хорошо, что Вы продемонстрировали, что есть способ установки через кабель.
Для тех, кто не верит: это действительно так.
Что может пойти не так
Про очистку: да, в плане очистки не стоит делать шаг в сторону, есть шанс, что получите неподнимаемый кирпич.
Про firmware: знания программирования для этого не нужны.
Про установку через стандартный рекавери: скорее всего это невозможно. Я только видел (и имею) один такой аппарат, который позволяет через стоковый рекавери ставить левые пакеты, но если я неправ — буду рад узнать, что производители имеют такие дыры (не сарказм).
-Advanced(Дополнительно)
--Directory Access: Вы перегнули палку. Процент 9 Андроида низок, а остальные версии ниже 9 не имеют данной вещи. Делать приложение только под 9 Андроид — такое себе (хотя возможно есть проверка API, тогда аргумент такой: нужно время, чтобы этим начали повсеместно пользоваться, так сказать, не всё сразу).
Еще про выбор файла. Выбор файла через файловый менеджер Андроида, с моей точки зрения, не очень по удобству. Видимо, разработчики думают также.
--Perfomence Profile: Легкий аналог Kernel Auditor скорее всего, я не использовал данную вещь, но подозреваю, что возможно эта программа через sepolicy способна менять настройки ядра (ТЕОРИЯ).
Доп. примечания к статье.
Есть в некоторых прошивках AppOps (CarbonROM).
Orange Fox, к примеру, умеет расшифровывать данные (нужен ввод пароля).
Шифрование зависит от наличия флага в fstab (план разметки, если коротко).
В комментах писал про Aurora Store, пользовался, тоже рекомендую.
В комментах писали про Trebuchet, что он ломится в гугл. Может такой проблемы нет в Librechair, форке Lawnchair.
И да, если ставить кастом, то качество фото/видео скорее всего ухудшаться из-за того, что алгоритмы фотообработки другие.
И по поводу комментария xdimquax о бинарнике: его декомпилировали и теперь он из исходников (привет от ApkTool).
Ответ на вопрос 2: по сути вроде нет, а вроде есть. Есть меню SIM-карты, в котором кучу подписок, информации и прочего хлама (привет, МТС).
И еще. Я не смог прочитать всю статью, извините, но вот действительно не пошло. Но пробежался глазами, складывается ощущение, что Вы действительно шарите как до мелочи сохранить данные. Однако, я лично ничего такого не делаю. Почему? Личный выбор. У меня мысля такая: у меня уже слили абсолютно все, что хотели. Но опять-таки, я не говорю, что нафиг эту защиту, нет, каждый вправе выбирать.
Мне вот рассказали как живут люди по законам FOSS. Я послушал и понял, что нет, останусь на проприетарном, собирать каждую прогу и ОС самому… Мне лучше потратить время на что-то другое. Но опять-таки, это МОЙ выбор.
Однако в плане прошивок, вот… Расширяйте кругозор ;)
И не используйте прошивки с SELinux Permessive! Это одна большая дыра!
Спасибо, достаточно познавательная статья.
Пожалуй соглашусь. Я с напарником делали игровой движок как дипломную работу, сделали небольшую демку. Этим летом получили свои дипломы, движок пока ушел в застой. И вот недавно я вспомнил, что в любой современной игре... есть поддержка геймпада. Я за несколько вечеров (дела свои вечером тоже есть, поэтому несколько) завел поддержку и получил кайф.
Так что ваша мысля здравая.
Также я немного в реверс пытался, реверсил старую никому неизвестную в СНГ игрушку Total Immersion Racing (Акелла перевела как Жажда Скорости) - гоночный симулятор. Сидишь, копаешься, вдруг находишь где и языковые файлы можно подменить, и NoCD запилить, и научил нужные текстуры подгружать научить... Тоже кайфово было, когда видишь, что результат твоей работы не только не роняет игру, но и улучшил ее.
Класс! Я теперь кстати тоже задумался купить себе такую штуку, так как окно на балконе, а ходить туда каждый раз влом)
Как минимум надо производить реверс для написания загрузчика. Дело, с моей точки зрения, дико сложное (я только отдельные моменты вычленял для написания кастомного инита для Z00ED/RD). Плюс есть только один шанс зашить загрузчик, потом если хана, то хана. На сколько мне известно. Может мои знания устарели.
Но я запускал вторичный загрузчик (lk2nd), который был написан энтузиастами из Postmarket OS.
github.com/msm8953-mainline
И оно даже загрузило бут, который используется прошивкой. Вопрос в чем. А нужно ли это вообще?
И как полноценная замена стокового загрузчика оно не работает. Один человек как-то раз зашил себе lk2nd в aboot, поднял ли он устройство — без понятия, я дальше историю сообщений не читал.
Спасибо большое за статью!
У меня есть два вопроса:
1) Что, если мы ломаем возможность корретной работы TWRP? Разработчик OrangeFox (форк TWRP) делал такую фичу. Но! У меня только черный экран был. ADB я не проверял. И OrangeFox имеет в себе возможность установки пароля. Но при условии, что TWRP спокойно грузится из-под Fastboot и ADB в сломанном варианте работать будет… То беда.
2) Что делать, если TWRP может быть загружено без разблокировки? Или по факту это не дает возможность взлома?
И спасибо за методы защиты. Единственное, что получается последним железным вариантом защиты это написания кастомного загрузчика (aboot), в который каждый раз при загрузке надо вводить пароль как на BIOS/UEFI?
И еще.
Третий и самый сложный подход – продолжать использовать альтернативную сборку ОС, но заблокировать загрузчик используя user-settable root of trust. Это действительно сложный и затратный подход, достойный написания отдельной статьи, потому как требует самостоятельно делать сборку ОС и самостоятельно её подписывать.
Я бы с удовольствием прочитал про это. И если б была возможность, я бы попробовал сделать это у себя. Жаль, что у меня это работать вероятно не будет… Бедный мой mido)
Еще раз спасибо за статью!
P. S. Прошивка CarbonROM, которую в данный момент времени я сопровождаю, не собирает userdebug. Только user.
Начну с простого, с SELinux. Расскажу, как я все вижу.
Sepolicy является набором исключений для доступа к низкоуровневым настройкам устройства, к примеру, для настройки интенсивности света фонарика и для настройки ядра (привет той красивой менюшке в LOS). Это сделано для того, чтобы левые программы не имели прямого доступа к этим настройкам. Однако все решается рутом, Kernel Auditor и подобные как-то же делают свое дело. Теперь к сути. SELinux отображает работает ли защита этих настроек или нет. Permessive — все доступно, пользуйся на халяву. Enforcing — защита стоит, но Sepolicy делает исключения для некоторых настроек (извиняюсь, это скорее переменные типа integer, то есть целые числа). Но без Sepolicy устройство тупо не загрузится либо что-то не будет работать (привет красивой менюшке в LOS, настройка ядра в настройках не будет работать без Sepolicy). Также Sepolicy в исходниках обычно состоит из нескольких кусков: для прошивки, для процессора и для устройства. Все это комбинируется и получается свод исключений. Вооось… А есть еще скрипт, который способен делать отображение типо стоит Enforcing, а на самом деле Permessive. Такие скрипты лежат обычно в vendor или в корне устройства, если мне память не изменяет. А еще в исходниках есть один очень интересный флаг — SELINUX_IGNORE_NEVERALLOWS. Во время сборки могут возникнуть ошибки сборки Sepolicy. Они решаются либо исправлением Sepolicy, либо использованием этого флага. Прошивки с этим флагом работают, но на сколько хорошо — без понятия, ибо я с таким флагом не собираю с 6-го марта (я сижу только на CarbonROM, то бишь на прошивке собственного приготовления).
Где встретить SELinux Permessive? На портированных прошивках с других устройств, на прошивках с только-только вышедшим Android (к примеру, сейчас все прошивки Android 10 для mido с SELinux Permessive). Обычно в О телефоне внизу есть отдельный пункт для отображения статуса SELinux.
Уф, с SELinux вроде все.
По поводу TWRP на A/B системах: я не знал, каюсь, нет такого устройства. У меня A-Only. И да, советую поставить Orange Fox все-таки каким-нибудь образом, там можно поставить пароль на сам режим восстановления, поставить блок на работоспособность TWRP (не все же такие простые, как нам кажется), то есть если в Fastboot поставить TWRP, то максимум увидите черный экран. Плюс лиса способна расшифровать внутреннюю память, но только введя пароль. В его создателях я лично не сомневаюсь.
По поводу выбора файла. Я б сошелся на том, что да, нужен выбор пользователя.
По поводу камеры. Open Camera не знаю на сколько часто обновляется. Но на качество фото также влияет прослойка кода между железом и основным кодом (HAL). К примеру, на mido и ему похожих устройствах HAL камеры собирается из исходников, там много чего я видел для HDR, но глубоко не смотрел (просто зачем? Это дело инженеров из Qualcomm). Ну, и плюс драйвера в ядре… Snap камера тоже вроде неплохо снимает, но я в основном использую модификацию Google камеры (ну извините, уж больно хорошо снимает).
Что еще?.. А, про сборку. Так вооось… Об этом можно почитать, как это банально не звучало бы, на 4PDA. Там для этого есть отдельная тема. Инструкции там достаточно просты в понимании вплоть до «скопировать и вставить», пока дело не дойдет до скачивания исходников устройства.
Спасибо, что ответили, я не ожидал, что мой комментарий увидит свет и что на него еще и ответят.
До связи.
P. S. Извините за мой стиль написания текста.
Основные факторы, которые необходимо учитывать при выборе устройства
Подбор устройства
Также в систему можно встроить скрипты, которые делают подмену информации, к примеру, вместо SELinux Permessive будет писать SELinux Enforcing, но это будет не так. Есть Enforcing с игнорированием ошибок Sepolicy во время сборки прошивки (в userdebug обычно такое, в user сборках такое игнорирование игнорируется).
Пример установки LOS
УСТАНОВКА МОДИФИЦИРОВАННОГО РЕКАВЕРИ(RECOVERY)
Личная придирка. Recovery переводиться как режим восстановления/восстановление.
УСТАНОВКА LOS ЧЕРЕЗ РЕКАВЕРИ
Примечание: в Redmi 4(X) и в Redmi Note 4(X) Snapdragon (и возможно в других, не интересовался) есть раздел cust, который на кастомах не используется, благодаря Абишеку (бывший сопровождающий Lineage OS на mido) на mido cust используется как vendor. В других смартфонах vendor может появиться с помощью переразметки.
Что может пойти не так
Про очистку: да, в плане очистки не стоит делать шаг в сторону, есть шанс, что получите неподнимаемый кирпич.
Про firmware: знания программирования для этого не нужны.
Про установку через стандартный рекавери: скорее всего это невозможно. Я только видел (и имею) один такой аппарат, который позволяет через стоковый рекавери ставить левые пакеты, но если я неправ — буду рад узнать, что производители имеют такие дыры (не сарказм).
-Advanced(Дополнительно)
--Directory Access: Вы перегнули палку. Процент 9 Андроида низок, а остальные версии ниже 9 не имеют данной вещи. Делать приложение только под 9 Андроид — такое себе (хотя возможно есть проверка API, тогда аргумент такой: нужно время, чтобы этим начали повсеместно пользоваться, так сказать, не всё сразу).
Еще про выбор файла. Выбор файла через файловый менеджер Андроида, с моей точки зрения, не очень по удобству. Видимо, разработчики думают также.
--Perfomence Profile: Легкий аналог Kernel Auditor скорее всего, я не использовал данную вещь, но подозреваю, что возможно эта программа через sepolicy способна менять настройки ядра (ТЕОРИЯ).
Доп. примечания к статье.
Есть в некоторых прошивках AppOps (CarbonROM).
Orange Fox, к примеру, умеет расшифровывать данные (нужен ввод пароля).
Шифрование зависит от наличия флага в fstab (план разметки, если коротко).
В комментах писал про Aurora Store, пользовался, тоже рекомендую.
В комментах писали про Trebuchet, что он ломится в гугл. Может такой проблемы нет в Librechair, форке Lawnchair.
И да, если ставить кастом, то качество фото/видео скорее всего ухудшаться из-за того, что алгоритмы фотообработки другие.
И по поводу комментария xdimquax о бинарнике: его декомпилировали и теперь он из исходников (привет от ApkTool).
Ответ на вопрос 2: по сути вроде нет, а вроде есть. Есть меню SIM-карты, в котором кучу подписок, информации и прочего хлама (привет, МТС).
И еще. Я не смог прочитать всю статью, извините, но вот действительно не пошло. Но пробежался глазами, складывается ощущение, что Вы действительно шарите как до мелочи сохранить данные. Однако, я лично ничего такого не делаю. Почему? Личный выбор. У меня мысля такая: у меня уже слили абсолютно все, что хотели. Но опять-таки, я не говорю, что нафиг эту защиту, нет, каждый вправе выбирать.
Мне вот рассказали как живут люди по законам FOSS. Я послушал и понял, что нет, останусь на проприетарном, собирать каждую прогу и ОС самому… Мне лучше потратить время на что-то другое. Но опять-таки, это МОЙ выбор.
Однако в плане прошивок, вот… Расширяйте кругозор ;)
И не используйте прошивки с SELinux Permessive! Это одна большая дыра!