Игры для Андроид становится все взломал [закрыт]


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

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

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

до сих пор, самостоятельно, я придумал генератор случайных чисел, который размещен в нескольких областях запуска игры. При инициализации (скажем, 1 из 50 раз) лицензия проверяется. Я знаю, что это затруднит взлом, потому что взломщик должен будет устранить каждый случай, скомпилировать, устранить, скомпилировать. Однако этот метод, по-прежнему crackable...so что вы предлагаете, ребята? Опять же, я действительно заинтересован в этом процессе безопасности, поэтому, пожалуйста, просветите, не превращайте это в обсуждение обфускации или периодической проверки на основе метки времени.

спасибо

11 140

11 ответов:

моя идея не хакер доказательство, но может удалить некоторые из интереса для взлома игры.

модель Freemium

1) Сделайте первые 5-10 уровней бесплатными, чтобы люди могли изучать игру и получать удовольствие, не платя. Меньше будет хотеть взломать первый уровень, и игра будет распространяться еще дальше по модели Freemium.

Shareware / clustered levelpacks

2) пусть часть уровней игры или логики остаются в сети. Например. когда достигнув уровня 5 или 10 или 15, затем загрузите небольшие части для игры, и каждый раз отправляйте журнал прогресса из игры и проверяйте это против возможных значений + хэш-кодов. Это, возможно, позволит автоматически закрыть взломанные учетные записи.

Stealth cheater protection

3) Вы также можете просто посчитать "маленькие предупреждающие флаги", которые вы размещаете в игре. Не просто проверить на "проверку" в начале, нет сборки эти флаги входят в саму логику игры. Не заставляйте его нарушать игровой процесс, потому что тогда никто не будет его искать. Затем, когда пользователь достиг конца уровня монстра, проверьте, были ли какие-либо зарегистрированные предупреждающие флаги. Они не будут отображаться внутри игры, поэтому неизвестный пользователь с взломанным изданием может играть в течение нескольких часов/дней и внезапно понять, что он/она не может закончить игру или перейти на следующий уровень, потому что в игре была "ошибка". То, что пользователь не знал, было то, что эта ошибка происходит только на взломанные клиенты.

вывод

быть умнее, чем сухари. Одурачить их, заставив думать, что дело сделано. Сделайте copyprotection и знайте, что более продвинутые крекеры смогут его удалить. Но они, вероятно, не хотят играть 50 уровней, чтобы проверить, если трещина также работает весь путь.

Как только они понимают эту проблему, они могут начать взломать его тоже. Но если вы разбиваете игру на пакеты уровней, вы все равно можете проверить между ними пакет скачать. Поэтому, как только вы получите взломанные данные хэша клиента, просто выполните exeception и сбросьте игру на клиенте. Упс игра разбилась. Не говорите его, потому что его взломали. Может произойти ошибка программы. : -)

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

Я делал некоторые apk декомпиляции и взлома на некоторое время (не warez, но Моды и хаки в основном в Google apps и Android framework, всегда соблюдая политику xda-разработчиков).

Как только вы научитесь читать smali, это почти как чтение исходного кода java (но с большим количеством локов). Таким образом, любой код, который вы добавляете для проверки ключей, может быть найден и удален или заменен. Вам даже не нужно перекомпилировать каждый раз, чтобы устранить более одного (некоторые поиски делают чудеса найти похожие фрагменты кода) и, даже если для их поиска необходимы циклы компиляции/перекомпиляции, декомпиляция занимает всего одну или две минуты: все автоматизировано apktool и даже больше apkmanager.

сказав это, я предлагаю вам реализовать какую-то онлайн-таблицу баллов или аналогичную, и когда пользователь смотрит на таблицу баллов онлайн, вы можете проверить хэш-код, который вы реализовали, и сравнить его с соответствующей учетной записью gmail. Таким образом, вы можете сообщите о взломе в google и отправьте неприятное сообщение пользователю warez, объяснив, почему это незаконно.

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

удачи.


обновление

после исследования, чтобы ответить на этот вопрос: ввод кода в APK (действительно о механизме Amazon DRM), я могу сказать немного о том, как Amazon защищает приложения: он включает в себя методы проверки правильности установки везде (вы можете увидеть пример того, как они это делают в моем ответе на этот вопрос). Это сделает любую попытку взломать приложение не очень сложной, но чрезвычайно утомительной. Я считаю, что это сильная сторона: хакеры не хотят тратить столько времени на выполнение стольких повторяющихся задач: это не оспаривая и скучно. Главный недостаток, который я вижу в этом подход-это возможность взломать само приложение Amazon, чтобы всегда возвращать правильный ответ, конечно. Но, если вы смешиваете свои текущие проверки хэша с какой-то онлайн-проверкой, разбросанной среди ваших методов, я считаю, что шансы на то, что он будет взломан, могут быть резко уменьшены.

взято из моего решения с этого поста избегайте apk cracked

реализовать свою собственную библиотеку лицензирования

Я также хотел бы обратиться к вам, чтобы проверить это из Google I / O 2011 YouTube записи:

уклонение от пиратов и остановить вампиров

EDIT:

Примечания К Презентации С уклоняясь от пиратов и останавливая вампиров

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

Я знаю, что вы на самом деле не в обфускации, но мне действительно нужно реагировать на это:

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

ProGuard очень надежен в моем опыте, и это, хотя я использую несколько расширенных функций, таких как AIDL и некоторый собственный код, который вызывает метод Java.. Это займет немного работы, чтобы прочитайте документацию и делайте все правильно, но как только вы там, ProGuard чрезвычайно надежен, а также оптимизирует ваше приложение.

пользовательские методы безопасности / криптографии хороши, но без запутывания это похоже на бросание камня в воду, по моему скромному мнению.

Я использовал ProGuard в производстве в течение многих месяцев, и он просто работает безупречно.

Если вы изучаете, то внимательно прочитайте руководство ProGuard, поэкспериментируйте с ним и проверьте его выходные журналы.

шанс, что есть более талантливые программисты, чем вы (применяется для всех программистов), составляет 100%. И если это правда, вы не можете исправить взлом. Но вы можете потратить столько же времени и сил на то, чтобы обанкротиться.

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

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

возьмите Zynga игры на Facebook, например, вы думаете, что ваш получить взломан? - Конечно, и около 100000 игроков только играют, потому что они могут использовать ботов, которые автоматизируют все.

наличие огромной активной пользовательской базы ботнета реальных людей, заставляет геймеров типа архиватора хотеть играть в игру - и если ты играешь, и это выглядит круто, то Avarage Joe также захочет играть. Если скупой Джо играет, то его друзья могут захотеть играть, и ваш, вероятно, не будет заботиться ни о чем другом, а затем лучше, чем его/ее друг, убивая время или имея что-то, чтобы поболтать. Скупой Джо друзья, скорее всего, будут готовы платить, чтобы быть лучше, чем Джо, но скорее ваш хотел бы инвестировать в то, что делает их в состоянии быть лучше.

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

пиратство всегда будет проблемой. По большому крекеры лучше играть в эту Безопасность, Хотя Неясность игры, чем разработчики.

какой интересный и волнующий вопрос. :- ) В качестве упражнения вы можете попробовать выпустить приложение через Amazon; у них есть свой собственный механизм DRM; мне интересно, работает ли он лучше, чем ProGuard...

одним из ключевых элементов, на мой взгляд, чтобы разложить код, так что это не все в одном месте. Если у вас есть функция LicenseChecker.checkLicense (), который извлекает лицензию и проверяет ее, вы можете быть уверены, что она будет отключена быстро.

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

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

и, конечно же, все может быть перепроектировано-как только крекеры находят место, где приложение отключено, они отслеживают значение, которое считывается. Затем они могут проследить, где он хранится, и проследить это..... или, что гораздо проще, они могут просто отключить окончательную проверку (именно поэтому я рекомендовал 3 разных места, все срабатывание с задержкой). Безопасность так же хороша, как и самое слабое звено.

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

во-первых, я делаю не считайте себя профессионалом в области безопасности SW, но:

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

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

Если это именно то, что вы не хотели слышать, то я сожалею о вашем времени:)

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

Это, в значительной степени, из-за отказа Google заблокировать установку, как у Apple. На IOS вы должны сделать джейлбрейк телефона. На Android вы можете загрузить любой APK на складе, заводская установка.

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

будет невероятно трудно подавить такое поведение ov. Все, что обрабатывается на стороне клиента, можно взломать с помощью декомпиляции APK и моддинга, редактирования памяти с помощью программного обеспечения, такого как Game Guardian ect.

единственный способ, которым я могу видеть, как частично обойти это, было бы сделать онлайн-игру вместо этого. Или есть определенные функции, обрабатываемые в интернете. Или если шифрование защиты от несанкционированного доступа, такое как denuvo, когда-либо доступно для Android / iOS.