Intereting Posts

Подписывает ли приложение защиту от несанкционированного доступа к файлу?

Я не знаком с идеей подписания файлов, и пока не могу найти удовлетворительного ответа, поэтому я думаю, что лучше спросить:

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

Ну, я понимаю, когда у хакера есть двоичный файл, он может отключить все, что захочет, включая проверку контрольной суммы. Но возникает вопрос: обеспечивает ли Android-инструмент подписи этот уровень или защиту в первую очередь?

Спасибо за чтение и ответ!

Ответы, которые говорят «нет, они не могут изменить ваш apk», имеют только половину права: да, никто не может изменить ваш код и уйти в отставку с помощью вашего ключа, что означает, что вредоносный взломщик не может заставить измененное приложение выглядеть так На самом деле пришел от вас. Но это не означает, что они не могут изменять и запускать APK после отставки его другим ключом.

Они могут взять ваш подписанный APK, изменить его код и отменить его самим своим собственным ключом; Они не могли выпустить это приложение как обновление или что-то в этом роде, но модифицированный самозаверяющий APK обычно устанавливался любым пользователем, root или нет.

EDIT: Стоит обойти xda-разработчиков, чтобы посмотреть, что делают люди в этом отношении (некоторые полу-законные, такие как модификация и переиздание APK, и многое другое). Особенно интересны такие инструменты, как android-apktool .

Также см. Эти вопросы:

  • Могу ли я повторно подписать .apk с другим сертификатом, чем то, с чем он пришел?
  • Можно ли даже модифицировать .apk, добавив дополнительный класс в .dex и повторно упаковывая с измененным manifest.xml?

Бинарное подписание Android выполняется с помощью инструмента Jarsigner , входящего в стандартный Java SDK. Подписание банку с помощью этого инструмента просто добавляет два файла; Один, который содержит хешированные значения для каждого файла в jar / application (подпись или файл .sf), и тот, который проверяет файл подписи и идентифицирует сертификат подписи (файл DSA).

Таким образом, проверка подписи, да, обязательно включает проверку того, соответствуют ли хеши двоичного файла предоставленному значению, которые будут обнаруживать любые изменения в двоичном формате. И да, в документации на Android говорится, что система не будет устанавливать или запускать приложение без действительной подписи.

Так что да, вы можете предположить, что подписание вашего файла должным образом предотвратит его запуск после изменения.

Да, ОС должна проверить, соответствует ли содержимое двоичного файла до подписи. Это было бы бесполезно иначе – кто-то мог просто взять подпись из законного приложения и привязать ее к любому другому двоичному файлу.