Подтвердить что ты не робот

Как я должен кодировать, чтобы противостоять "одноразовому пиратству"?

Приложение, над которым я работаю, автоматически взломано antiLVL (хотя я не использую LVL в своем приложении).

В целях защиты моего приложения от "пиратства с одним щелчком" я реализую методы методов обнаружения несанкционированного доступа, описанные в Google IO.

Я попытался проверить подпись как с getPackageInfo(), так и с отражением (invoke()), но AntiLVL смог автоматически взломать приложение в обоих случаях.

Как я могу написать код, который не будет автоматически взламываться текущей версией antiLVL (1.4.0)? Я имею в виду, кроме использования JNI.

PS: Я не говорю о предотвращении пиратства в целом. Я просто хочу, чтобы пират копался в коде вручную, вместо того, чтобы использовать автоматический взломщик.
4b9b3361

Ответ 1

Проблема в том, что любой API, который служит только для проверки действительности вашего приложения, может быть искажен и заменен версией, которая всегда возвращает ожидаемый результат. Я не смотрел Anti-LVL подробно, но я бы предположил, что это делает это, поэтому ваши попытки проверить ваш код с использованием встроенных API Dalvik для этой цели не сработают.

Чтобы заставить его работать, вам придется самому выполнить эту работу, используя только API-интерфейсы, которые имеют несколько целей и не могут быть настолько пробиты.

Один из способов сделать это - вычислить контрольную сумму либо вашего .apk файла, либо всего лишь файла classes.dex внутри него, и проверить его на некотором внешнем ресурсе (онлайн-сервер со списком известных правильных версий, файл, загруженный в SD карта при первом выполнении и т.д., ресурс в файле .apk, который не входит в класс .dex). Это предотвращает модификацию кода, и я считаю, что работает анти-лат. Я сам этого не пробовал, но подозреваю, что он должен работать.

Ответ 2

Заметки о презентации от Evading Pirates и Stopping Vampires

Некоторые основные ключевые точки

Обратите внимание, что #:r.page.X в конце ссылок, которые я предоставил, не всегда приведет вас к указанному номеру слайдовой страницы по любой причине. Если это не так, обратите внимание и просмотрите вручную.