Приложение, которое выживает после сброса настроек

Моя проблема теоретическая в данный момент. Я изучаю, возможно это или нет, прежде чем тратить на это часы.

  • У меня есть рутированный телефон.
  • Я хочу добавить запись в IPTABLES при запуске.
  • Если телефон сброшен до заводских настроек, я все равно хочу, чтобы запись была добавлена ​​в IPTABLES.

Мои мысли до сих пор:

  1. Изменение загрузочного образа и создание постоянного файла init.rc, но я думаю, что это слишком страшно и рискованно.
  2. Создайте приложение (apk), установленное в /system/appнем, которое запускает команду ITPABLES.

Каковы мои шансы на успех с номером 2?

Для запуска IPTABLES apk нужен root, телефон рутирован, но есть ли у приложения root-доступ только потому, что он находится в /system/app? Обычные приложения запускают SuperSU, чтобы предоставить корень приложения, но я хочу, чтобы он выполнял IPTABLES без каких-либо всплывающих окон. Все без присмотра.

Ответы (2)

Ваши шансы на № 2 довольно хороши, хотя могут быть некоторые оговорки. Чтобы понять, что это такое, давайте посмотрим, что делает . Это...

  • салфетки/data
  • салфетки/cache
  • стирает кеш (обычно неявно, так как в большинстве случаев он находится в /data; я думаю, с Lollipop это будет делать то же самое для ART).

Вот видите, /systemостается нетронутым. Если ваше приложение установлено в /system/app, оно выдержит сброс к заводским настройкам. Но его данные могут и не /dataстереться. Это означает, что все необходимые настройки должны быть частью самого приложения или его «настроек по умолчанию», которые развертываются при первой инициализации.

Для второй части: это лучше спросить на сайте разработки (которым мы не являемся). По сути, ни одно приложение не получает root-доступ по умолчанию, насколько я знаю. Они получают доступ ко всему, что позволяют их разрешения (и да, есть разрешения, которые могут быть предоставлены системным приложениям, недоступным для «приложений пользовательского пространства») — но для корневого доступа вы должны спросить , что должно suвызвать соответствующее приложение суперпользователя.

PS: Что касается всплывающего окна SuperSU, боюсь , вам придется с этим смириться при первом звонке .

Спасибо. Думаю, вы правы. Узнайте больше о SU и, похоже, весь дизайн предназначен для предотвращения, если пользователь не скажет иначе. Я проверил одну вещь, которая может быть многообещающей. Я отключил SU, запустил окно терминала, попробовал сделать что-то, что требует root, мне отказали. Но я смог запустить telnetd через busybox. Сеанс telnet был пользователем root... странно. Но в сеансе телнета я мог делать то, что хотел.
Точно. В противном случае вредоносные приложения могут злоупотреблять этим, поэтому требуется взаимодействие с пользователем. Рад, что смог помочь!

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

Да, правда, но у Cerberus и AndroidLost есть сервер, на котором они могут получить свои настройки, используя IMEI телефона в качестве ключа, и они также работают на нерутированных телефонах. Такие приложения, как брандмауэры и т. д., тоже помогут мне, но, к сожалению, они теряют свои настройки при сбросе настроек и запускаются как отключенные И активно запрашивают root-доступ.