Подписание моего приложения android как системного приложения

подписание моего приложения android в качестве системного приложения

в моей компании мы хотели бы полный контроль за потреблением батареи в полевых условиях, используя только 2g и gps может разрядить батарею ужасно быстро. Мы решили, что нам нужно иметь корневой доступ к мобильному телефону, чтобы, когда телефон простаивает, мы отключили бы это ненужное потребление батареи. А также мы не позволяем пользователям удалять его и очищать данные.

мой вопрос :

  1. где я могу получить этот ключ подписи?
  2. будет ли это похоже на корневой доступ, если когда-либо мне удалось подписать?
  3. в чем разница между Root vs Signed with key?

2 ответов


хорошо ниже ваш ответ,

  1. вы можете найти ключи платформы от здесь. Команда для подписания apk (для linux):

    java -jar signapk.jar -w platform.x509.pem platform.pk8 APPLICATION.apk APPLICATION_sign.apk

  2. Если вы подписываете свой apk с ключами платформы, вам не потребуется root-доступ, вы можете просто установить его из команды "adb install", и да, в некотором роде это похоже на root, потому что он может получить доступ ко всем внутренним api, но имейте в виду, если ваше приложение подписано системой, то вы не можете написать внешний накопитель.

  3. прежде всего, не объединяйте оба root-пользователя, где системное приложение-тип приложения, который отличается от обычного приложения ниже ссылки, может очистить вашу путаницу в отношении него.

    что-это-разница-между-android-пользователь-приложение-с-root-access-и-a-system-ap


отвечая на ваши три вопроса:

1-где я могу получить этот ключ подписи?

С собственная документация Android в разделе отпустите клавиши

дерево Android включает тестовые клавиши под build/target/продукт / безопасность

но следующая часть, где вы должны действительно обратить внимание

поскольку тестовые ключи публично известны, каждый может подписать свои собственные .apk файлы с теми же ключами, которые могут позволить им заменить или hijack системные приложения, встроенные в образ ОС. По этой причине важно подписать любой публично выпущенный или развернутый образ ОС Android с помощью специального набора release-ключей, которые только вы есть доступ.

поэтому в основном, если вы не можете каким-то образом получить доступ к ключам pvt производителя, это может быть трудно достичь. Вот почему пользователь в предыдущем комментарий говорил, что это обычно достигается путем создания собственной сборки.

2 - будет ли это похоже на корневой доступ, если я когда-либо успешно управлял подписать?

вы не получите "корневой доступ", делая это, но вы получите доступ к чрезвычайно высокому уровню доступа. В частности, это достигается тем, что вам будут предоставлены разрешения с объявленным android:protectionLevel="signature" который, возможно, самый эксклюзивный.

еще один опасный следствием (или забавой, в зависимости от того, как вы смотрите на это) этого является то, что теперь вы можете запустить свое приложение в system user process android:sharedUserId="android.uid.system" - в соответствии с правилами безопасности android "process sandboxed" это обычно не удается.

3-в чем разница между Root vs, подписанным ключом?

С приложением, подписанным ключом платформы из вашей сборки, вы можете получить разрешения, упомянутые выше, или запустить приложение с UID 1000 (system uid), который в android намного больше мощный, чем UIDs других приложений из-за разрешений, которые он может запросить, это поведение, специфичное для Android. В корневом устройстве вы можете использовать UID 0 (root), который имеет самый широкий доступ в системах на базе linux, вы можете обойти большую часть безопасности sandboxing/checks/fences на ОС.

надеюсь, что это помогает ;)