Итак, мы уже проходили через это несколько раз, мы выпускаем игру (для дешевых), и кто-то взламывает ее и ставит на зеркало. Мы настраиваем Оповещения Google для всех наших приложений, поэтому нам ежедневно сообщают, кто занимается взломом. До сих пор мы внедрили службу лицензирования, как предположил Google, наша соль создается случайным образом при каждом запуске лицензии с уникальным идентификатором устройства. Мы запускаем сервис проверки один раз, когда приложение запускается впервые. Затем мы генерируем 512-символьный хэш для ключа и сохраненное значение, которое затем сравнивается с SharedPreferences.
Теперь я знаю, что при однократной проверке приложение блокируется. Наш байт-код, скорее всего, был просмотрен и перекомпилирован без строки, которая инициирует проверку.
Отсюда я не хочу запутывать наш код, поскольку я видел его сломанным ранее. Я хочу что-то более твердое, и я также хочу научиться делать это правильно. Сейчас я больше заинтересован в обучении, чем в зарабатывании денег, поскольку только 2% людей когда-либо будут искать взломанную версию.
Пока что я сам разработал генератор случайных чисел, который находится в нескольких областях запуска игры. При запуске (скажем, 1 из 50 раз) лицензия проверяется. Я знаю, что это усложнит взлом, потому что взломщик должен будет исключить каждый случай, скомпилировать, устранить, скомпилировать. Этот метод, однако, все еще можно взломать ... так что вы, ребята, предлагаете? Опять же, я действительно заинтересован в этом процессе безопасности, поэтому, пожалуйста, просвещайте, не превращайте это в дискуссию об обфускации или периодической проверке на основе отметки времени.
Спасибо
Ответы:
Моя идея не является доказательством хакера, но может убрать интерес к взлому игры.
Freemium модель
1) Сделайте первые 5-10 бесплатных уровней, чтобы люди могли изучить игру и повеселиться, не платя. Меньше захочется взломать первый уровень и игра будет распространяться еще дальше по модели Freemium.
Условно-бесплатные / кластерные пакеты уровней
2) Оставьте часть игровых уровней или логику в режиме онлайн. Например. при достижении уровня 5, 10 или 15, затем загружайте небольшие части для игры и каждый раз отправляйте журнал прогресса из игры и проверяйте его на предмет возможных значений + хэш-коды. Это может позволить автоматически закрывать взломанные аккаунты.
Скрытная защита от мошенников
3) Вы также можете просто посчитать «маленькие предупреждающие флажки», которые вы размещаете в игре. Не просто проверяйте «валидацию» в начале, не встраивайте эти флаги в саму логику игры. Не заставляйте его нарушать игровой процесс, потому что тогда никто не будет его искать. Затем, когда пользователь достиг конца уровня монстра, проверьте, не были ли какие-либо зарегистрированные флажки предупреждения. Они не будут отображаться в игре, поэтому незнающий пользователь с взломанным изданием может играть часами / днями и внезапно осознавать, что он / она не может закончить игру или перейти на следующий уровень, потому что в игре была «ошибка». Пользователь не знал, что эта ошибка возникает только на взломанных клиентах.
Вывод
Будь умнее крекеров. Обмани их, думая, что работа сделана. Сделайте копию защиты и знайте, что более продвинутые взломщики смогут ее удалить. Но они, вероятно, не хотят играть 50 уровней, чтобы проверить, работает ли трещина полностью.
Как только они осознают эту проблему, они тоже могут начать ее взламывать. Но если вы разбиваете игру на пакеты уровней, вы все равно можете проверять каждую загрузку пакетов. Поэтому, как только вы получите взломанные данные хеш-клиента, просто выполните исключение и завершите игру на клиенте. Упс игра вылетела. Не говорите, потому что его взломали. Может произойти программная ошибка. :-)
Опять же, это не хакерское доказательство. Но это может раздражать их достаточно, чтобы перейти к следующей игре. Наконец, вы также можете выпускать регулярные обновления для игры, и только последняя версия должна иметь возможность «публиковать записи» и т. Д., Поэтому активные пользователи должны будут обновляться, чтобы оставаться в курсе.
источник
Некоторое время я делал apk-декомпиляцию и хакерство (не варез, а моды и хаки в основном для приложений Google и фреймворка Android, всегда соблюдая правила xda-developers).
Как только вы научитесь читать smali, это почти как чтение исходного кода Java (но с гораздо большим количеством LOC). Таким образом, любой код, добавленный вами для проверки ключей, можно найти, удалить или заменить. Вам даже не нужно каждый раз перекомпилировать, чтобы исключить более одного (некоторые поиски делают чудеса, чтобы найти похожие куски кода), и, даже если для их поиска нужны циклы компиляции / перекомпиляции, это всего лишь одна или две минуты декомпилировать: все автоматизировано apktool и даже больше apkmanager.
Сказав это, я предлагаю вам внедрить какую-либо таблицу онлайн-оценки или аналогичную, и когда пользователь просматривает таблицу результатов в Интернете, вы можете проверить реализованный хеш-код и сравнить его со связанной учетной записью Gmail. Таким образом, вы можете сообщить о взломе в Google и отправить неприятное сообщение пользователю Warez, объясняя, почему это незаконно.
Конечно, новый хак может быть реализован, чтобы исключить таблицу оценок, но это уменьшит интерес к Warez.
Удачи.
Обновить
После исследования, чтобы ответить на этот вопрос: внедрение кода в APK (на самом деле о механизме Amazon DRM), я могу немного рассказать о том, как Amazon защищает приложения: он включает в себя методы для проверки правильности установки везде (вы можете увидеть пример о том, как они это делают в моем ответе на этот вопрос). Это сделает любую попытку взломать приложение не очень сложной, но крайне утомительной. Я считаю, что это сильная сторона: хакеры не захотят тратить так много времени на выполнение множества повторяющихся задач: это не сложно и скучно, Главный недостаток этого подхода - возможность взломать само приложение Amazon, чтобы всегда возвращать верный ответ, конечно. Но если вы смешаете текущие проверки хешей с какими-то онлайн-проверками, разбросанными по вашим методам, я считаю, что шансы на их взлом могут быть значительно снижены.
источник
Взято из моего решения из этого поста Избегайте apk cracked
Реализуйте свою собственную библиотеку лицензирования
Я также рекомендую вам проверить это по записи Google I / O 2011 на YouTube:
Уклонение от пиратов и остановка вампиров
РЕДАКТИРОВАТЬ:
Презентационные заметки от уклоняющихся пиратов и останавливающих вампиров
Некоторые основные ключевые моменты
источник
#%3ar.page.15
в URL. Если вы не будете автоматически перенаправлены на эту страницу, обязательно посмотрите ссылку, чтобы увидеть, где и на какой странице вы должны смотреть.Я знаю, что вы на самом деле не в запутывания, но мне действительно нужно реагировать на это:
ProGuard очень надежен в моем опыте, и при этом я использую несколько расширенных функций, таких как AIDL и некоторый нативный код, который вызывает метод Java. Чтобы прочитать документацию и сделать все правильно, требуется небольшая работа, но как только вы там ProGuard чрезвычайно надежен, а также оптимизирует ваше приложение.
Пользовательские секретные / криптографические приемы хороши, но без запутывания это все равно что бросить камень в воду, по моему скромному мнению.
Я использовал ProGuard в производстве в течение многих месяцев, и он работает без нареканий.
Если вы в процессе обучения, внимательно прочитайте руководство по ProGuard, поэкспериментируйте с ним и просмотрите его выходные журналы.
источник
Шанс, что талантливых программистов больше, чем ВАС (распространяется на всех программистов), составляет 100%. И если это правда, вы не можете исправить взлома. Но вы можете потратить столько времени и усилий на то, чтобы обанкротиться.
Если вы хотите заработать серьезные деньги, вам нужно провести исследование целевой группы пользователей и поведенческих наук. Вы должны заставить пользователей играть, которые приносят новые деньги, и это все.
Кроме того, вы все неправильно поняли. Хакеры - самые активные участники вашей пользовательской базы, вы просто ведете себя так, как вы этого не хотели.
Возьмем, к примеру, игры Zynga на Facebook, ты думаешь, что тебя взломали? - Конечно, только около 10000 игроков играют, потому что вы можете использовать ботов, которые автоматизируют все.
Наличие огромной активной пользовательской базы ботнета реальных людей заставляет геймеров архиваторного типа играть в игру - и если ваша игра и выглядит круто, то Avarage Joe также захочет играть. Если Avarage Joe играет, то его друзья, возможно, захотят играть, и, вероятно, вам будет все равно, что будет лучше, чем его / ее друг, убивающий время или имеющий возможность поболтать. Друзья Avarage Joe, скорее всего, захотят заплатить, чтобы быть лучше, чем Джо, но скорее они хотели бы инвестировать в то, что делает их способными быть лучше.
Кроме того, если реальная ценность - играть в игру бесплатно, то пользователи, использующие бесплатную взломанную версию, скорее всего, никогда бы не заплатили за нее. Но ты - Avarage Joes и их друзья. Так что это как самый дешевый рекламный ролик. Если вы хотите зарабатывать деньги на своей большой базе пользователей, то просто делайте новые версии игры с небольшими изменениями уровней и графики.
источник
Пиратство всегда будет проблемой. В целом взломщики лучше играют в эту игру « Безопасность, хотя и непрозрачность», чем разработчики.
источник
Какой интересный и тревожный вопрос. :-) В качестве упражнения вы можете попробовать выпустить приложение через Amazon; у них есть собственный механизм DRM; Интересно, работает ли он лучше, чем ProGuard ...
источник
Одним из ключевых элементов, на мой взгляд, является распространение кода, чтобы он не был все в одном месте. Если у вас есть функция LicenseChecker.checkLicense (), которая извлекает лицензию и проверяет ее, вы можете быть уверены, что она будет немедленно отключена.
Единственное преимущество, которое у вас есть, заключается в том, что взломщики не могут видеть комментарии вашего кода (и, если вы запутываете имена методов / переменных), так что придумайте что-нибудь странное. В onCreate () одного действия вы получаете идентификатор лицензии. В onResume () вы получаете другое значение для проверки. Может быть, создать поток и сделать некоторые проверки там. И затем, какой-то другой нерелевантный фрагмент кода (может быть, элемент управления проигрывателем) может подобрать значение, сравнить его и сохранить результат где-нибудь. Затем три других не относящихся к делу фрагмента кода будут независимо проверять это значение и отключать ваше приложение, если оно не совпадает.
Теперь я должен сказать заранее, что это может вызвать головную боль для вас - очевидно, загроможденный, неприятный код сложнее отлаживать и склонен вызывать ошибки. В худшем случае вы создаете ложные срабатывания в законно купленных приложениях.
И, конечно, все может быть подвергнуто обратному проектированию - как только взломщики найдут место, где приложение отключено, они проследят значение, из которого читается. Затем они могли бы отследить, где он хранится, и отследить это ... или, что гораздо проще, они могут просто отключить окончательную проверку (именно поэтому я рекомендовал 3 разных места, все срабатывания с задержкой). Безопасность хороша только как самое слабое звено.
Вы не сможете остановить пиратство. Лучше всего отложить распространение пиратской копии до тех пор, пока начальная реклама вашего приложения не утихнет.
источник
Во-первых, я НЕ считаю себя профессионалом в области безопасности ПО, но:
Я думаю, что важно, чтобы приложение зависело в какой-то части (ях) от проверки подписи. Не позволяйте этому влиять немедленно, но позвольте ему установить некоторые флаги или изменить некоторые значения. позже используйте эти флаги, проверьте их, пусть их отсутствие / некорректность вызовет какое-то исключение, которое может прекратить работу приложения. Поскольку проверка подписи актуальна только на данный момент, ее легко обойти, удалить строку, как только она коснется большего количества областей в коде, ваше приложение станет труднее (или менее легко ...) взломать. Также, на мой взгляд, не все проверки должны вызывать одну и ту же процедуру для санкции, потому что это также позволит легко найти механизм защиты и завершить его.
Конечно, санкция на использование в случае нелегального ПО может варьироваться, вы можете захотеть аварийно завершить работу приложения, если оно используется незаконно, но вы также можете оставить его работающим и отправлять только сообщение, которое просит пользователя купить легальную копию. приложения.
Если это именно то, что вы не хотели слышать, то извините за ваше время :)
источник
Пользователи Android просто собираются принять боль постоянных телефонных домов. Единственное безопасное приложение для Android - это всегда подключенное приложение для Android.
Во многом это связано с отказом Google заблокировать установку, как это делает Apple. На IOS нужно сделать джейлбрейк телефона. На Android вы можете загрузить любой APK на складе, заводскую установку.
Держите часть / большую часть / весь ваш контент на сервере; доставить его кусками; проверить лицензию / сеанс на каждый звонок.
источник
Будет невероятно трудно подавить такое поведение. Все, что обрабатывается на стороне клиента, можно взломать, используя декомпиляцию и моддинг APK, редактирование памяти с помощью программного обеспечения, такого как Game Guardian ect.
Единственный способ увидеть, насколько частично это можно обойти, - это сделать вместо этого онлайн-игру. Или имейте определенные функции, обработанные онлайн. Или, если для Android / iOS доступно противодействующее шифрование, такое как denuvo.
источник