Получение внутриигровых покупок бесплатно с помощью Lucky Patcher
Механизм InApp purchase позволяет совершать покупки непосредственно внутри приложений для Android, не выходя и не закрывая их. В подавляющем большинстве случаев приобретаемый контент касается непосредственно той программы, в которой осуществляется его покупка. Так, например, в играх пользователи имеют возможность на платной основе получать обмундирование и очки опыта для своих персонажей, а также открывать дополнительные уровни и многое другое.
Модификатор Lucky Patcher позволяет получить доступ к платному содержимому некоторых приложений, в частности игр, без необходимости его приобретения. Для этого существует несколько способов, основной из которых заключается в использовании Modded Google Play.
Нижеприведенные методы срабатывают не всегда, однако обладают наибольшим шансом на успех. При этом каждый из них требует от пользователя наличия root-доступа.
Способ 1. Modded Google Play
Шаг 1
На первом этапе получите root-права на своем мобильном устройстве. Сделать это можно при помощи стороннего ПО. Далее запустите Lucky Patcher и щелкните по кнопке «Инструменты»:
Выберите пункт «Патчи Андроида»:
Если патчи «Проверка подписи всегда верна» и «Отключить проверку целостности apk» применены, можно приступать к установке Modded Google Play (Шаг 3). В противном случае отметьте их галочками и нажмите «Пропатчить»:
По завершении процесса, равно как с положительным, так и отрицательным результатом, обязательно перезагрузите мобильное устройство.
Шаг 2
Если патчи Android применены, можно приступать к удалению «родного» Play Market. Для этого выберите его в перечне приложений Lucky Patcher и нажмите «Удалить приложение»:
По завершении процесса перезагрузите смартфон/планшет.
Внимание: стандартный магазин Google можно восстановить, опять-таки из меню Lucky Patcher.
Шаг 3
Далее приступайте к установке Modded Google Play. Для этого войдите в меню «Инструменты» модификатора и выберите пункт «Установить модифицированный Google Play»:
Укажите версию установщика в зависимости от версии вашей ОС.
Для большей безопасности установите Google Play как пользовательское приложение, для чего отметьте соответствующий пункт галочкой:
…после чего щелкните «Установить». По завершении процесса рекомендуется также перезагрузить мобильный телефон (планшет).
Шаг 4
Запустите любое приложение с платным контентом и перейдите в раздел покупок. При появлении сообщения с предложением «Попробовать получить покупки бесплатно» щелкните «Да»:
Если же вы приобретаете все приложение целиком, дополнительно отметьте галочкой пункт «Сохранить для восстановления покупок».
Чтобы выключить эмуляцию покупок, перейдите в раздел «Переключатели» Lucky Patcher и передвиньте ползунок «Эмуляция Google Billing» в положение «Off»:
Способ 2. Использование Proxy
Щелкните «Переключатели» в главном окне Lucky Patcher, чтобы войти в свич-меню:
Выберите пункт «Proxy сервер для Google Play» и переведите его ползунок в положение «On»:
Помните: при включенной функции прокси-сервера приложение «магазин Google» работать не будет, что является главным недостатком данного подхода.
Далее запустите приложение и попробуйте повторить процедуру приобретения платного контента.
Поскольку вышеуказанный метод срабатывает далеко не всегда, на усмотрение пользователей предлагается еще один вариант.
Способ 3. Патч поддержки эмуляции
Запустите патчер и щелкните по названию приложения с платным контентом, чтобы отобразить список доступных опций. Выберите пункт «Меню патчей»:
Далее нажмите «Патч поддержки для InApp и LVL эмуляции»:
В открывшемся окне отметьте галочками два верхних пункта – «Патч поддержки для LVL эмуляции» и «Патч поддержки для InApp эмуляции»:
…после чего щелкните «Пропатчить» и дождитесь завершения процесса. В случае успешного окончания процедуры шаблоны N1 и N2 подсветятся зеленым цветом. После этого можно заново попытаться бесплатно получить желаемый контент приложения.
Если что-то в данной инструкции вам непонятно, у вас возникли вопросы, замечания или предложения – форма комментариев к вашим услугам. Ваше мнение важно нам и другим посетителям сайта.
Разворачиваем сервер для проверки In-app purchase за 60 минут
Всем привет! Сегодня расскажу вам как развернуть сервер для проверки In-app Purchase и In-app Subscription для iOS и Android (server-server validation).
На хабре есть статья от 2013 года про серверную проверку покупок. В статье говорится о том, что валидация в первую очередь необходима для предотвращения доступа к платному контенту при помощи джейлбрейка и другого софта. На мой взгляд в 2020 году эта проблема не так актуальна, и в первую очередь сервер с проверкой покупок необходима для синхронизации покупок в рамках одного аккаунта на нескольких устройствах
В проверке чеков покупок нет никакой технической сложности, по факту сервер просто «проксирует» запрос и сохраняет данные о покупке.
То есть задачу такого сервера можно разделить на 4 этапа:
В рамках статьи опустим 3 пункт, ибо он сугубо индивидуален.
Код в статье будет написан на Node.js, но по сути логика универсальна и не составит труда использовать ее написать валидацию на любом языке программирования.
Еще есть статья хорошая «То, что нужно знать о проверке чека App Store (App Store receipt)», ребята делают сервис для работы с подписками. В статье детально описано, что такое чек (receipt) и для чего нужна проверка покупок.
Сразу скажу, что в сниппетах кода используются вспомогательные классы и интерфейсы, весь код доступен в репозитории по ссылке https://github.com/denjoygroup/inapppurchase. В приведенном ниже фрагментах кода, я постарался дать названия используемым методам такие, чтобы приходилось делать отсылки к этим функциям.
Для проверки вам нужен Apple Shared Secret – это ключ, который вы должны получить в iTunnes Connect, он нужен для проверки чеков.
В первую очередь зададим параметры для создания запросов:
Теперь создадим функцию для отправки запроса. В зависимости от среды, с которой работаете, вы должны отправлять запрос либо на sandbox.itunes.apple.com для тестовых покупок, либо в прод buy.itunes.apple.com
Если запрос прошел успешно, то в ответе от сервера Apple в поле status вы получите данные о вашей покупке.
У статуса возможны несколько значений, в зависимости от которых вы должны обработать покупку
21000 – Запрос был отправлен – не методом POST
21002 – Чек поврежден, не удалось его распарсить
21003 – Некорректный чек, покупка не подтверждена
21004 – Ваш Shared Secret некорректный или не соответствует чеку
21005 – Сервер эпла не смог обработать ваш запрос, стоит попробовать еще раз
21006 – Чек недействителен
21007 – Чек из SandBox (тестовой среды), но был отправлен в prod
21008 – Чек из прода, но был отправлен в тестовую среду
21009 – Сервер эпла не смог обработать ваш запрос, стоит попробовать еще раз
21010 – Аккаунт был удален
0 – Покупка валидна
Пример ответа от iTunnes Connect выглядит следующим образом
Также перед отправкой запроса и после отправки стоит сверить id продукта, который запрашивает клиент и который мы получаем в ответе.
latest_receipt_info содержит все покупки.
in_app содержит Non-consumable и Non-Auto-Renewable покупки.
Тогда проверка покупки будет выглядеть примерно так
Если интересно, то могу написать отдельную статью о том, как обрабатывать ответ от iTunnes Connect по каждому свойству, ибо вот это далеко нетривиальная задача. Так же возможно будет полезно рассказать о том, как работать с проверкой автовозобновляемых покупок, когда их проверять и как, потому что по времени истечения подписки запускать крон недостаточно – однозначно возникнут проблемы и пользователь останется без оплаченных покупок, а в этом случае сразу будут отзывы с одной звездой в мобильном сторе.
Android
Для гугла достаточно сильно отличается формат запроса, ибо сначала надо авторизоваться посредством OAuth и потом только отправлять запрос на проверку покупки.
Для гугла нам понадобится чуть больше входных параметров:
Получить эти данные можно воспользовавшись инструкцией по ссылке.
Окей, гугл, прими запрос:
Ответ от гугла выглядит примерно так:
Теперь перейдем к проверке покупки
По существу буквально в 2 метода можно проверить покупку. Репозиторий с полным кодом доступен по ссылке https://github.com/denjoygroup/inapppurchase (автор кода Алексей Геворкян)
Конечно, мы упустили очень много нюансов обработки покупки, которые стоит учитывать при работе с реальными покупками.
Есть два хороших сервиса, которые предоставляют сервис для проверки чеков: https://ru.adapty.io/ и https://apphud.com/. Но, во-первых, для некоторых категорий приложений нельзя передавать данные 3 стороне, а во-вторых, если вы хотите отдавать платный контент динамически при совершении пользователем покупки, то вам придется разворачивать свой сервер.
Ну, и, конечно, самое важное в серверной разработке – это масштабируемость и устойчивость. Если у вас большая аудитория пользователей и при этом сервер не способен выдерживать нагрузки, то лучше и не реализовывать проверку покупок самим, а отправлять запросы сразу в iTunnes Connect и в Google API, иначе ваши пользователи сильно расстроятся.
Прокси
Прокси-сервер — это служба, позволяющая клиентам выполнять косвенные запросы к другим сетевым службам. Работает по следующему принципу:
Внимание! Использовать прокси-сервер для FTP-соединений не рекомендуется, так как прокси-сервер поддерживает не все возможности для полноценной работы в таком режиме.
Открыть модуль «Прокси» можно в меню Сеть > Прокси.
В модуле расположены следующие вкладки:
Прокси-сервер
На данной вкладке отображаются:
Настройки
Данная вкладка предназначена для настройки службы прокси.
Особенности типов «через домен» и «Kerberos»
Содержимое кеша прокси-сервера можно посмотреть на вкладке «Кеш». Веб-интерфейс отображает не все содержимое кеша, а только некоторые элементы, такие как изображения.
ИКС поддерживает сканирование трафика, который проходит через прокси-сервер, антивирусом. На данный момент поддерживается два антивирусных модуля: бесплатный ClamAV, а также платный антивирус Касперского. Для работы антивируса необходимо приобрести лицензию и установить ее в соответствующем модуле.
Для того чтобы включить антивирусное сканирование веб-трафика каким-либо антивирусным модулем, установите соответствующий флаг. Тогда в настройках данного антивирусного модуля автоматически установится флаг «Использовать в прокси».
Автоконфигурация
Данная вкладка позволяет управлять автоконфигуратором. Он нужен для того, чтобы не прописывать вручную прокси-сервер на каждом клиентском устройстве. В браузере клиента должна быть выставлена опция «Автоматическая конфигурация прокси», все остальные настройки определит ИКС.
Родительский прокси
Если в организации несколько прокси-серверов, расположенных иерархично, то вышестоящий для ИКС прокси-сервер будет являться его родительским прокси.
Чтобы ИКС перенаправлял на родительский прокси запросы, которые приходят на его прокси-сервер, выполните следующие настройки:
Исключения для авторизации
Данная вкладка служит для настройки прокси-сервера таким образом, чтобы он не требовал авторизации при обработке запросов с определенного хоста в сети и (или) при обращении на определенный хост.
На вкладке можно добавить информацию об исключениях для авторизации в прокси-сервере, а также просмотреть таблицу наборов исключений.
Удалить информацию об исключениях можно по одноименной кнопке.
На данной вкладке можно просмотреть некоторые элементы веб-страниц (в основном изображения), которые сохранились в кеше. Чтобы удалить содержимое кеша, нажмите кнопку «Очистить кеш».
Журнал
На данной вкладке отображается сводка всех системных сообщений от прокси-сервера с указанием даты и времени.
Журнал является стандартным элементом веб-интерфейса ИКС.
Защита in-App Purchase iOS от ломалок с помощю сервера
Сегодня расскажу о том, как защитить in-app purchases в играх на мобильной платформе iOS с помощью собственного сервера. Практически все компании, которые выпускают свой продукт, заботятся о защищенности своих приложений и как можно больше пытаются защитить их от взлома. Одной из таких компаний является и та, в которой я работаю.
На данный момент на территории Испании проходит софтланч нашей игры. Сам я server-side developer и на мое плечо программиста легла проверка in-app purchases в игре, которую наша компания разрабатывала.
Все покупки в игре подтверждаются моим сервером. Происходит это следующим образом. Пользователь покупает в игре нашу валюту, тогда на смартфон от apple purchase server приходит json со всеми данными о покупке. После этого этот json попадает уже на наш сервер, сверяются некоторые поля и отправляются на apple verefication server, чтобы посмотреть, все ли хорошо. Если все в порядке, то от apple приходит json в котором есть много информации о покупке. Как утверждает документация на сайте Apple, нам достаточно проверить только поле status с присланного нам json. Если оно равно 0, то покупка правдивая и мы начисляем пользователю нашу валюту. Я ничего нового не придумывал и последовал этой документации.
В течение софтланча статистика нам показала, что один из пользователей купил нашей валюты в игре на 400 долларов. Однако мы не очень этому обрадовались, ведь видели, что эти покупки были с jailbreak смартфона. Посмотрев все данные, которые присылал девайс юзера нам на сервер, мы обнаружили, что они одинаковы. Немного поискав в интернете, мы натолкнулись на такую штуку как LocallAPStore Cydia Tweak в jailbreak iOS. Работает она следующим образом. Когда пользователь делает in-app purchase в игре, то LocallAPStore перехватывает данные и заменяет на свои, и возвращает callback игре, что покупка выполнена, ну а дальше оно приходит нам на сервер, отправляется в Apple. Нам приходит от apple verefication server response status 0.
Поэтому чтобы не допустить этого прежде всего проверяйте поле original_transaction_id, оно является уникальным, если вы в своей базе данных найдете идентичное значение этого поля — то это фрод. Но этого иногда бывает недостаточно. Для полной проверки уже после того как вам придет response json от apple verefication server следует сверить поле bid с уже вашим bundle id, а также сверять поле product_id.
Надеюсь вам будет полезной эта информация. Жду от вас комментариев, пожеланий и замечаний.
Russian Proxy Server Cracks In-App Purchases Without Requiring A Jailbreak
Opponents of jailbreaks claim that jailbreaking is only used for software piracy. Those of us who have had jailbroken phones in 2007, before Apple launched its own App Store, know that this is not necessarily the case. Nevertheless, it is a fact that a lot of iPhone users turn to jailbreaking to access commercial apps without compensating the developers.
So, although I am opposed to the practice, I can’t help but smile when another useful service is used for illicit purposes. A Russian hacker, who goes by ZonD Eighty, has set up the In-Appstore proxy server which circumvents in-app purchases. If you sign in to ZonD Eighty’s proxy server, in-app purchases will charge no money. This method of piracy does not even require a jailbreak and works for most (but not all) apps from iOS versions 3-6.
The author claims never to collect your password, AppleID or temporary authorization key, even though the service asks for your password. The site does admit to collecting some identifiers for the purpose of “provid[ing] you better service.” These identifiers include:
Amusingly, the piracy proxy isn’t compatible with cracked apps. That means that all the people who were pirating in-app purchases were not snagging them on apps obtained through services like Installous. Ironically, ZonD Eighty tells visitors of his site: “Please do not pirate AppStore apps.”
If you want to have a sketchy Russian piracy server intercept information that you would be sending to the iTunes Store, you are currently out of luck. The proxy server is apparently down, supposedly due to high load. The author is looking for donations to beef up their offshore server, so they can serve more demand for in-app purchase piracy.
The ability to assign a proxy isn’t just useful for stealing apps or tricking Netflix into thinking you live in the United States. Proxies are used as gateways to secure networks, to maintain privacy, and are also used for various IT purposes. If Apple removes the ability to assign DNS proxies, it could hurt the iPhone’s attractiveness to enterprise buyers. Instead expect to see a lot of “security and stability” updates within popular apps.
I can’t recommend using this service for multiple reasons, but its good to see examples where piracy and jailbreaking are not synonymous. You can share your thoughts in the comments section below.















