Как я должен кодировать, чтобы противостоять "одноразовому пиратству"?
Приложение, над которым я работаю, автоматически взломано antiLVL (хотя я не использую LVL в своем приложении).
В целях защиты моего приложения от "пиратства с одним щелчком" я реализую методы методов обнаружения несанкционированного доступа, описанные в Google IO.
Я попытался проверить подпись как с getPackageInfo()
, так и с отражением (invoke()
), но AntiLVL смог автоматически взломать приложение в обоих случаях.
Как я могу написать код, который не будет автоматически взламываться текущей версией antiLVL (1.4.0)? Я имею в виду, кроме использования JNI.
PS: Я не говорю о предотвращении пиратства в целом. Я просто хочу, чтобы пират копался в коде вручную, вместо того, чтобы использовать автоматический взломщик.
Ответы
Ответ 1
Проблема в том, что любой API, который служит только для проверки действительности вашего приложения, может быть искажен и заменен версией, которая всегда возвращает ожидаемый результат. Я не смотрел Anti-LVL подробно, но я бы предположил, что это делает это, поэтому ваши попытки проверить ваш код с использованием встроенных API Dalvik для этой цели не сработают.
Чтобы заставить его работать, вам придется самому выполнить эту работу, используя только API-интерфейсы, которые имеют несколько целей и не могут быть настолько пробиты.
Один из способов сделать это - вычислить контрольную сумму либо вашего .apk файла, либо всего лишь файла classes.dex внутри него, и проверить его на некотором внешнем ресурсе (онлайн-сервер со списком известных правильных версий, файл, загруженный в SD карта при первом выполнении и т.д., ресурс в файле .apk, который не входит в класс .dex). Это предотвращает модификацию кода, и я считаю, что работает анти-лат. Я сам этого не пробовал, но подозреваю, что он должен работать.
Ответ 2
Заметки о презентации от Evading Pirates и Stopping Vampires
Некоторые основные ключевые точки
Обратите внимание, что #:r.page.X
в конце ссылок, которые я предоставил, не всегда приведет вас к указанному номеру слайдовой страницы по любой причине. Если это не так, обратите внимание и просмотрите вручную.