Comments 27
Но зачем? Суть любой игры в том, чтобы пройти её, а не выиграть.
Я думаю, тут также виноваты и разработчики приложений, которые не проверяют целостность данных, не шифруют их и используют их в своем приложении с полной доверенностью источнику…
На одного игрока, который хакнет игру, найдется 1000-10000 тех, кто просто поиграет в нее и скажет спасибо (или даже $). Какой смысл тратить тонну времени на защиту от взлома таких игр, если за это время лучше сделать уровней или запилить еще один режим игры? Любую защиту все равно сломают, ломать — не строить.
На самом деле, подобная брешь не является виною только Android.
Эээ, где же брешь-то?
Приложение, подписанное новым сертификатом — это новое приложение. Поэтому ваш пропатченный 2048 — это уже не оригинальное приложение, его нужно ставить отдельно, и никаких апдейтов из маркета оно уже не получит.
Точно так же можно было разобраться в коде и сделать так, чтобы пропатченный 2048 сам писал нужные данные в файлы.
А то, что два приложения подписанные одним ключом (то есть принадлежащие одному разработчику), могут тесно взаимодействовать — это заложено в Андроид изначально (например, см. android:process в манифесте).
Имхо, брешью будет, если поставить патч, сгенерить файлы, снести патч, а затем поставить оригинал, и он вдруг подхватит файлы от патча.
Может я чего-то недопонимаю, но разве в статье как раз не об этом написано?
Итак, имеем APK пакет приложения, подписанный нашим дефолтным ключом.
То есть фактически имеем своё приложение и делаем с ним что хотим (выпускаем апдейты, взаимодействуем с другими нашими приложениями). Естественно это приложение не может быть установлено поверх такого же приложения другого издателя.
Ребят, ну это вовсе не патч. Мало апк переписать, так еще и XML сохранялки меняют.
эм… ну отредактировали сейв. И? При xml-формате это просто. вот у diablo1 сложный формат save'a был, я не. осилил на первом курсе.
Был редактор сейвов и для 1 и для 2.
А ведь plist бывает и бинарный
Да-да, полностью с вами согласен. Приложениям, действительно, следует хранить свои более-менее важные данные не в чистом виде, а хотя бы в бинарном, как это делают разработчики Subway Surfers. Вот их уже будет гораздо сложнее «проломить» и сфальсифицировать данные. Собственно, эта статья, отчасти, как раз к подобному подходу хранения данных и призывает.
Так пропатчить данные приложения, установленного из магазина мы не можем, верно, только «своего» приложения (переподписанного)?
Тут все дело в сертификате( цифровом ключе ) приложения. Собственно, достать сам APK пакет можно откуда угодно — хоть с GooglePlay — структура пакетов везде одинаковая. Но только после «взятия» целевого пакета уже встает вопрос о его переподписке.
И играть стало неинтересно :)
Я, одно время, использовал в своих играх решение с шифрованием SharedPreferences, типа такого, что впрочем, не особо усложняет. Сейчас не использую никакой защиты. Смысл? Захотят взломать — взломают. Игрок, делающий патч с «бесконечными патронами» (или качающий этот патч с какого-нибудь варезника) — в любом случае, не моя ЦА. Лучше я потрачу это время/усилия на улучшение самой игры.
Неожиданно увидеть plist на Android. С другой стороны, там же cocos2d.
Изобретение
UFO just landed and posted this here
И второй вопрос: игра отправляет данные на сервер для топа игроков? Т.е., реально фейковый рекорд себе сделать?
Если нет, то никаких проблем в безопасности нет.
Если нет, то никаких проблем в безопасности нет.
а затем запустить оригинальную игру, которая бы уже использовала наши фейковые данные.
Только не оригинальную игру, а переподписанную нашим ключом — правильно?
Да, разумеется. «Уникальность и неповторимость» приложений на уровне системы определяется для Android как минимум двумя основными аспектами: название JAVA пакета( Java Package) и сертификатом( ключом ). Получается, что если хотя бы одно из двух не будет соответствовать оригиналу, то приложение уже будет совершенно другим для системы Android.
На самом деле, подобная брешь не является виною только Android.
Я не вижу тут бреши или неожиданного поведения системы.
1) Сперва установим [переподписанную нами] игру 2048.
2) Устанавливаем патч
3) Переустанавливаем нашу [исходную переподписанную] игру
Зачем нужен первый пункт? Достаточно запустить свою программу, которая формирует данные нужным образом, поверх накатить переподписанную с тем же ключом целевую программу.
Именно поэтому следует создать патч для этого приложения, который был бы доступен широкой аудитории.
Почему это называется «патчем»? Оно не меняет функционал исходной программы, меняет лишь её данные.
Sign up to leave a comment.
Как создавать патчи, основанные на доверчивой политике безопасности Android