Android / iphone - Может ли фоновый процесс или служба вводить код или читать переменные в приложении переднего плана? - PullRequest
0 голосов
/ 21 октября 2011

Я только начинаю разработку для Android и iOS, и, следовательно, ссылки на соответствующие ресурсы также будут оценены, просто я не смог найти ничего интересного.

Подробное описание случая: мне нужно создать приложение, которое содержит некоторую критическую информацию в переменной, которая создается, отправляется по ssl-зашифрованному соединению и уничтожается. Эта переменная не должна быть прочитана любым другим процессом на устройстве. До сих пор я знаю о двух случаях, которые могут произойти:

[1] служба или программа контролирует приложение переднего плана (которое здесь будет моим приложением), а затем, если оно может внедрить некоторый код (например, заставить передний план связываться с мошенническим сервисом), считывать содержимое переменной в вопрос. Я знаю, что существуют защитные меры ОС, но есть ли какие-либо доказательства в дикой природе, которые демонстрируют эту способность внедрения кода?

[2] служба или программа контролирует сетевые соединения и регистрирует данные, передаваемые по проводам. Есть ли возможность для приложений, читающих данные сети, как это? Я знаю, что существуют приложения, которые могут регистрировать количество данных, передаваемых по каждому приложению, но я понятия не имею, читают ли они файлы системного журнала или действительно контролируют соединение. Будет полезно узнать подробности для обеих платформ.

1 Ответ

1 голос
/ 21 октября 2011

Я работаю только с Android, поэтому это действительно только для Android:

Нет, служба не может внедрить код на переднем плане, по (как минимум) 2 причинам:

  • Каждое установленное приложение получает свой собственный идентификатор пользователя, а каждый процесс и их данные защищены идентификатором пользователя.Таким образом, один процесс не может получить доступ к памяти другого процесса.Таким образом, ни один процесс не может изменить память (вставив код)
  • Байт-код Java преобразуется в код Dalvik и сохраняется в месте, где может писать только системный процесс.Таким образом, никакой другой процесс не может внедрить код путем изменения скомпилированных файлов dex.

Это защита, предоставляемая системой.Конечно, хакеры могут найти эксплойт в определенной библиотеке, а переполнение буфера может запустить какой-то фрагмент кода, но это другая история.Также обратите внимание, что файлы данных процесса по умолчанию являются закрытыми (никакой другой процесс не может их видеть), но процессы могут иметь доступ для чтения к коду.Что означает хранение закрытых ключей в коде, вероятно, небезопасно.

...