Получить некоторую информацию на основе подписи АПК - PullRequest
1 голос
/ 31 декабря 2011

Я пытаюсь внедрить систему аннулирования версий для серверных приложений.Со следующей моделью:

В некоторых петициях к серверу клиент добавляет ключевое слово и, если этот пароль отсутствует в белом списке, сервер отвечает с ошибкой, и приложения показывают сообщение, предупреждающее, что Маркеттребуется обновление (как правило, потому что это взломанная версия или пароль, который использовался для легальной версии, но был помещен в черный список, потому что взломанная версия использует тот же код).Для генерации этого пароля я бы хотел, чтобы ключ, восстановленный во время выполнения, идентифицировал скомпилированную версию (таким образом, если apk перекомпилирован, он не будет работать)

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

public static int getSignature() {
    try {
        Signature sigs[] = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES).signatures;
        return sigs[0].hashCode();
    } catch (NameNotFoundException ignore) {
    }
    return 0;
}

Но это довольно глупо, поскольку хакер может получить подпись моего apk (установить его на устройстве и запустить программу с кодом выше (используя имя my.apk.packageвместо getPackageName ())

А затем измените метод getSignature (), чтобы он возвращал поддельный код вместо реальной подписи.

Поэтому мой вопрос: есть ли какая-то информация (подпись)зависимым или аналогичным), но не легко доступным извне приложения, поэтому, если код перекомпилирован с другой сигнатурой, это значение изменяется и не может быть так легко угадать

Спасибо

Ответы [ 2 ]

2 голосов
/ 31 декабря 2011

Я думаю, вам не повезло, поскольку что-нибудь внутри вашего .apk может прочитать почти каждый, особенно.на рутированных устройствах.

Вы обязательно должны рассмотреть возможность запутывания своего приложения, например, с помощью ProGuard.

2 голосов
/ 31 декабря 2011

Если ваше приложение платное, вы можете взглянуть на: http://developer.android.com/guide/publishing/licensing.html

Это может быть длительное чтение и некоторая работа, но эй, это цена за безопасность.

...