Множество игр и приложений работают со стандартным кодом взаимодействия с Google Play (Гугл Плей) , но в тоже время имеют очень сильный инструмент защиты лицензии и кода программы от изменений. Приложений LuckyPatcher проводит сканирование вашего устройства на все установленные приложения, группирует их по возможности и невозможности применения патча и составляет удобный список приложений, в котором приложения которые можно пропатчить находятся вверху.
После применения патча если все пройдет удачно вы будете иметь полностью зарегистрированную полную версию приложения! Так же есь возможность убрать рекламу из приложения. Для функционирования LuckyPatcher естественно необходимы права root. Внутри видео демонстрация работы LuckyPatcher на Android и apk LuckyPatcher.
Обновлено до последних версий apk (Updated 31/01/2016)
LuckyPatcher на Android
Будьте осторожны и внимательны при использовании приложения, ознакомитесь с инструкцией на 4pda.
ВСЕ СПОСОБЫ ВЗЛОМА ПРОГРАММ НА АНДРОИД + ССЫЛКИ НА СКАЧИВАНИЕ
LuckyPatcher — взлом, снятие защиты, получение лицензии для платных приложений и игр из Google Play (Гугл Плей) (ROOT):
рейтинг 80 из 80 на основе 80 оценок.
Всего 80 отзывов.
Похожие публикации:
- Android от А до Я: 10 альтернативных рынков приложений для Android
- Приложения недели: GroupMe, Thor: The Dark World, Media Converter и другие
- Приложения недели: SuperSU, Magic 2014, Pony Creator и другие
- Приложения недели: Collapse! Blast, Touch Control, Game of Thrones Companion и многие другие
- Приложения недели: Gumtree, Amtrak, OpenSignal и многие другие
Жопой рожденные.. опять залупу суёте в комп. 1) Это не Патчер а Фейк (дерьмо) 2) Скачав файл вы автоматически скачиваете вирус, а так же поисковик и бан себе на браузер!! Причём на все что установленны. Качайте с 4PDA. Там всё по чесному, если нет такой программы то на 4PDA её и не будет.
КЛАСС УРА LUCKY PATCHER СЛОМИЛ У МЕНЯ БОЛЬШИНСТВО ИГР. Freedom чмо испортил файл hosts . Еле как восстановил play market.
Источник: droidtune.com
Как я взломал приложение для Android, чтобы получить премиум-функцию
Приведенный ниже рассказ применим к широкому кругу приложений и такого рода внедрения могут выполняться на разных уровнях. В этой статье делается попытка подчеркнуть очевидные болевые точки и рекомендовать решения.
Эта статья предназначена только для ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЕЙ и раскрывает известные уязвимости в Android-приложениях. НЕ пытайтесь использовать это в реальных приложениях.
TL; DR Я переписал байт-код, чтобы разблокировать премиум-функции приложения на моем устройстве, и теперь я покажу вам, как предотвратить это в вашем приложении.
Не загружайте APK-файлы со случайных веб-сайтов, поскольку они могут нести вредоносный байт-код и потенциально украсть данные с вашего устройства.
Платные функции с биллингом
Многие приложения предлагают пользователям совершать покупки внутри приложений — премиум-функции, какие-то виртуальные монеты для игр и т.д. После оплаты с помощью учетной записи Google покупки навсегда сохраняются на сервере Google с уникальным идентификатором. Это позволяет использовать купленные предметы на всех устройствах.
Но как, например, насчет Huawei, где сервисы Google Play не работают/недоступны? Huawei предоставляет почти идентичный API покупок в приложениях, хотя пользователь не может переносить свои покупки и подписки между платформами.
Проблема
Иногда приложения пытаются использовать более простые пути и не следуют инструкциям и рекомендациям Google. Это означает, что иногда они отказываются от проверки ранее приобретенных элементов при запуске приложения, тем самым оставляя для любого злоумышленника дверь открытой. Делать что-то на устройстве — всегда плохая идея.
Приведенный ниже рассказ применим к широкому кругу приложений и такого рода внедрения могут выполняться на разных уровнях. В этой статье делается попытка подчеркнуть очевидные болевые точки и рекомендовать решения.
Давайте поговорим о моем варианте: я купил премиум-функцию в Google Play, но само приложение не было доступно в магазине Huawei. Поэтому я скачал APK и установил его вручную, но премиум-функции были недоступны.
Статический анализ кода
Самый первый шаг — декомпилировать APK в код Smali. В ходе анализа я обнаружил, что это приложение X сохраняет логический флаг в Android SharedPreferences после успешной транзакции. Выполнение таких операций на устройствах — недопустимо.
Премиум-функция как флаг в SharedPreferences
Этот логический флаг использовался, чтобы проверить позже в приложении, куплена ли у пользователя расширенная функция.
В результате мы можем найти правильное место для вставки нашего байт-кода, чтобы обойти проверку — навсегда заменить ее флагом TRUE.
Smali
Я не хочу сразу переходить к результату и подробно объяснять, что происходит. Начну издалека. Когда мы компилируем приложение Java, создается байт-код. На платформе Android у нас раньше была виртуальная машина Dalvik, а теперь — Android Runtime (ART). Вместо байт-кода Java он преобразует исходный код в набор инструкций в формате .dex, который можно преобразовать в читаемый человеком код Smali.
Smali очень похож на байт-код Java.
Вот фрагмент начала метода onCreate из MainActivity в Smali:
Его можно перевести в:
где константа flag 128 означает FLAG_KEEP_SCREEN_ON из WindowManager.
Самая первая строка — это сигнатура метода, но что это за .locals, p0, p1, v0?
- v0..v15 — это просто локальные переменные. У методов 16 регистров.
- .locals с числом описывают, сколько свободных переменных имеет этот метод. Это чисто отладочный флаг, установленный декомпилятором, который нам очень помогает при статическом анализе кода.
- p0..p15 — параметры метода, который мы вводим.
Например, onCreate имеет 2 параметра p0 и p1, которые переводятся как «this» и Bundle соответственно -> super.onCreate(Bundle)
Практическое правило: повторно используйте существующие переменные «v», когда это возможно.
Коды операций Dalvik вы можете найти тут.
Внедрение кода
После всех вышеперечисленных шагов мы знаем, что для обхода проверки наличия премиум-функции нам просто нужно ввести код, который устанавливает логическое значение до того, как что-либо загрузится. Наиболее предпочтительное место находится в классе Application или в основной Activity (зависит от приложения). Допустим, мы собираемся внедрить его в MainActivity#onCreate.
Этот фрагмент кода такой же, как
SharedPreferences.Editor editor = sharedPref.edit(); edit.putBoolean(«preferencePremium», true); edit.apply();
Самый простой способ добиться этого — написать реальный код Kotlin/Java, скомпилировать и затем декомпилировать его, чтобы извлечь из него Smali, или напрямую написать байт-код Smali, который я предпочитаю для таких простых задач.
После этого приложение всегда будет запускаться с логическим флагом true.
Тот же метод используют сайты, распространяющие взломанные приложения.
Как предотвратить?
- Перенесите логику в свой бэкенд
- Всегда проверяйте купленный предмет, а затем предоставляйте доступ к приложению
- Делайте частые проверки покупок в Google через свой бэкенд
- Используйте шифрование для локального сохранения данных и желательно использовать ключ шифрования для конкретного устройства
- Используйте SafetyNet для отключения устройств с root-доступом и потенциального использования Xposed Framework
Проверьте, какие приобретенные элементы доступны для текущего пользователя при запуске приложения, а затем продолжайте работу. Не храните на устройстве ничего важного. Если вы собираетесь сохранить разблокированный контент на устройстве, не забудьте часто проверять его действительность и зашифровать его с помощью ключа шифрования для конкретного устройства. В случае злонамеренных действий рекомендуется использовать временный бан.
На этом пока все.
Источник: apptractor.ru
Инструменты для взлома и реверсинга приложений Android
За многие года существования Андроид разработчики приложений и те, кто эти приложения взламывает, обзавелись массой инструментов, направленных друг против друга. О том, какими способами можно защитить свое приложение, мы уже рассказывали, а сегодня у нас обзор инструментов для взлома и реверсинга Андроид приложений.
Все инструменты для анализа и реверсинга программ (не только для Android) можно разделить на две группы:
- Статический анализ — дизассемблеры, декомпиляторы, деобфускаторы и любые другие утилиты, которые работают с кодом, не запуская его.
- Динамический анализ — инструменты, с помощью которых приложение можно запустить на виртуальном или реальном устройстве и проанализировать его поведение.
В обеих группах есть утилиты, как для начинающих (запустил — получил список уязвимостей), так и для опытных пентестеров. В этой статье мы расскажем про все популярные программы для реверс инжиниринг apk, которые подойдут для новичков и для профи.
Статический анализ
Итак, для начала речь пойдет об инструментах статического анализа. Каждый кто пытается взломать приложение должен иметь в своем арсенале хотя бы два из них. Это декомпилятор и дизассемблер.
- Декомпилятор нужен, чтобы перегнать байт-код Dalvik обратно в код Java и с его помощью разобраться, как работает приложение.
- Дизассемблер транслирует байт-код в гораздо более низкоуровневый код Smali (местный ассемблер), в котором труднее разобраться, но зато он всегда корректен настолько, что его можно собрать обратно в приложение. Этой особенностью можно воспользоваться, например, чтобы внедрить в приложение собственный код.
Также вам пригодится деобфускатор. Он сделает декомпилированный код немного более читаемым.
Jadx
Первая софтина в нашем списке инструментов для взлома программ — декомпилятор Jadx. Это активно развиваемый открытый декомпилятор, который выдает достаточно неплохой код Java на выходе и даже имеет функцию деобфускации кода. Работать с ним просто: запускаете Jadx-gui, с его помощью выбираете APK-файл приложений и видите иерархию пакетов и файлы с исходниками на Java.
Jadx может работать и в режиме командной строки. Например, следующая команда декомпилирует приложение example.apk и поместит полученный код Java в каталог out:
$ jadx — d out example . apk
Более того, Jadx может дополнительно сгенерировать файлы build.gradle, чтобы исходники можно было импортировать в Android Studio:
$ jadx — e — d out example . apk
Собрать приложение из них не получится, зато анализировать код будет гораздо удобнее.
Apktool
Второй инструмент, который должен обязательно быть в списке инструментов для реверс инжиниринга Android приложений, — это Apktool. Его назначение — разборка и сборка приложений. При этом термин «разборка» подразумевает дизассемблирование кода приложения в файлы формата Smali, а также декомпрессию ресурсов и файла AndroidManifest.xml.
С помощью Apktool можно разобрать приложение, проанализировать дизассемблерный код, внести в него правки и собрать обратно.
APKiD
Эта небольшая утилита понадобится вам, когда вы заметите, что Jadx не в состоянии декомпилировать приложение. В большинстве случаев это значит, что приложение было обфусцировано или упаковано с помощью специальных инструментов. APKiD позволяет узнать, какие конкретно инструменты были использованы, выяснить, было ли приложение пересобрано с помощью Apktool и используются ли в нем какие-то другие техники для защиты от дизассемблирования/декомпиляции и запуска в виртуальной машине.
APKiD далеко не всегда работает корректно, а в некоторых случаях вообще не выводит никакой информации на экран. Но он может помочь, если вы в тупике — вывод утилиты понятный. Например:
- anti_debug : Debug.isDebuggerConnected() check — проверка, подключен ли дебаггер с помощью метода isDebuggerConnected;
- anti_vm : Build.MANUFACTURER check — проверка производителя смартфона, чтобы понять, что находитесь в виртуальной машине.
Но есть одно неочевидное поле: compiler. Оно обычно содержит dx или dexlib. Dx — стандартный компилятор Android SDK, а dexlib — это библиотека сборки файлов DEX из Apktool. Проще говоря, если в поле compiler находится dexlib, значит, приложение было пересобрано с помощью Apktool или аналогичного инструмента.
Simplify
Что, если APKiD сообщает о применении обфускатора, а при попытке изучить код вы сталкиваетесь с зашифрованными строками? В этом случае вам нужен деобфускатор, который сможет сделать код более читаемым. Абсолютное большинство деобфускаторов, которые вы найдете в интернете, умеют бороться только с одним или несколькими обфускаторами, зачастую устаревших версий.
Simplify — универсальный деобфускатор. Вместо того чтобы искать в коде знакомые паттерны, он запускает код в виртуальной среде и дает ему возможность сделать все самому. В процессе исполнения код сам расшифрует зашифрованные строки, укажет на места, которые никогда не будут исполнены (обфускация с помощью мертвого кода), и укажет на реальный тип объектов, полученных с помощью рефлексии (а это позволит выполнить дерефлексию).
Из-за особенностей реализации виртуальной машины Simplify редко способен проанализировать все приложение целиком. Поэтому его стоит использовать для деобфускации отдельных методов и классов (это можно сделать с помощью флага -it):
[/crayon]
DeGuard
Simplify поможет, если приложение было пропущено через мощный обфускатор. Однако большинство программистов не обременяют себя применением чего-то более сложного, чем входящий в состав Android Studio ProGuard. А ProGuard — это оптимизатор, в котором функция обфускации появилась как побочный эффект. Единственное, чем он запутывает реверсера Андроид приложений, — это измененные на бессмысленный набор букв имена классов, методов и полей.
Разобраться в обфусцированном с помощью ProGuard коде не так уж и сложно, но сложнее, чем в совсем не обфусцированном (в два раза сложнее, если верить исследованиям). Поэтому даже для ProGuard существуют деобфускаторы.
DeGuard — наиболее интересный из них. Это веб-сервис, созданный в Высшей технической школе Цюриха. С помощью нейросетей он способен восстановить (а точнее, предсказать) оригинальные имена пакетов, классов, методов и полей. Одна проблема: нередко деобфусцированный код запутывает еще больше, чем оригинал.
Bytecode Viewer
А это решение класса «все в одном». Bytecode Viewer сочетает в себе функции Jadx, Apktool и еще нескольких инструментов. Он умеет дизассемблировать приложения, декомпилировать их с помощью пяти различных движков декомпиляции (JD-Core, Procyon, CFR, Fernflower, Krakatau), расшифровывать строки с помощью трех движков дешифрования, компилировать приложение обратно из декомпилированного кода (с помощью Ranino Compiler) и даже искать зловредный код!
Многие реверсеры APK рекомендуют использовать именно этот инструмент для анализа приложений. Их аргумент в том, что любой другой декомпилятор (тот же Jadx или популярный JD-GUI) может сломаться об обфусцированный или специальным образом написанный код и просто не покажет его. В то же время Bytecode Viewer, благодаря наличию сразу пяти движков декомпиляции, имеет больше шансов декомпилировать такое приложение.
На самом же деле не все так радужно. Bytecode Viewer — это кое-как работающая сборная солянка из различных открытых инструментов. Да, в нем множество движков декомпиляции, но, похоже, автор перестал следить за своим произведением. Текущая версия Bytecode Viewer уже не может открыть большинство APK.
Скриншота не будет по причине неработоспособности инструмента.
QARK
Закончим рассказ о статическом анализе на инструменте QARK. Это утилита для автоматического поиска уязвимостей в приложениях. Достаточно натравить ее на нужный APK или каталог с исходниками, и QARK проанализирует манифест, декомпилирует и проанализирует исходники и даже попробует создать эксплоит для взлома приложения с помощью найденных уязвимостей.
Пользоваться QARK очень просто: запускаете QarkMain.py, отвечаете на несколько вопросов и получаете отчет в формате HTML в каталоге quark/report.
Как и другие автоматизированные инструменты, QARK не может точно предсказать наличие уязвимости, он лишь высказывает предположение о ее существовании и дает реверсеру приложения намек, в какую сторону следует копать. Поэтому не стоит надеяться, что вы просто установите QARK и сразу начнете стричь купоны на пентесте приложений. Без матчасти никуда.
Динамический анализ
Статический анализ приложения не всегда позволяет раскрыть все подробности его поведения. Код может быть зашифрован упаковщиком, приложение может докачивать свои компоненты из интернета, расшифровывать строки только во время исполнения и делать другие вещи, которые нельзя увидеть, читая код.
Обнаружить такие вещи можно с помощью динамического анализа, то есть запустив приложение на реальном устройстве или в эмуляторе и изучив его поведение с помощью специальных инструментов. Именно это, кстати, происходит в Google Play, когда разработчик заливает новую версию приложения. Серверы Google запускают его в виртуальной среде и, если приложение делает какие-то неправомерные действия, запрещает его публикацию.
Frida
Начнем с короля всех инструментов динамического анализа, трассировки и модификации приложений — с Frida. Это так называемый Dynamic Instrumentation Toolkit, набор инструментов, позволяющих на лету внедрять собственный код в другие приложения. Внедрив код, можно выполнить полную трассировку приложения, перехватить функции шифрования, записи файлов на диск и вообще сделать с приложением все что угодно.
У нас уже была подробная статья о Frida, поэтому не будем повторяться. Скажем только, что у Frida есть репозиторий с готовыми скриптами, которые могут тебе пригодиться:
- fridantiroot — комплексный скрипт, позволяющий отключить проверки на root;
- Universal Android SSL Pinning Bypass — обход SSL Pinning;
- dereflector — скрипт Frida для дерефлексии Java-кода (превращения непрямых вызовов методов в прямые).
frida —codeshare pcipolloni/universal-android-ssl-pinning-bypass-with-frida -f com.example.app
Objection
Frida — очень популярный инструмент. На его основе было создано множество более высокоуровневых утилит. Objection — одна из них. Она позволяет внедриться в приложение iOS или Android и провести анализ его приватного каталога, памяти, классов, методов, извлечь содержимое базы SQLite, обойти SSL-пиннинг.
Главное преимущество Objection в том, что она дает возможность «войти» в приватный каталог приложения точно так же, как это позволяет сделать устройство с root-доступом. Но в этом же ее недостаток: большинство задач, для которых предназначена Objection, легко решаются с помощью adb, команды sqlite (при наличии root) и общедоступных скриптов Frida.
Inspeckage
Inspeckage — еще один высокоуровневый инструмент динамического анализа приложений. У него огромное количество возможностей: он может получать информацию о полномочиях, активностях, контент-провайдерах и сервисах, умеет перехватывать обращения к SQLite, HTTP-серверам, файловой системе, буферу обмена, криптографическим функциям, запускать активности, подключаться к ContentProvider’aм и выполнять спуфинг местоположения.
Все это можно сделать, используя удобный веб-интерфейс. Но перед этим на смартфоне необходимо получить права root, а затем установить Xposed Framework (который как раз и позволяет Inspeckage выполнять перехват управления).
Drozer
На закуску у нас drozer — мощный инструмент для выполнения типичных задач пентеста приложений. Drozer позволяет получить информацию о приложении, запустить его активности, подключиться к ContentProvider’у, отправить сообщения сервису — в общем, сделать все, чтобы вытащить из приложения информацию или заставить его сделать то, что нам нужно.
Типичный воркфлоу drozer выглядит так. Сначала получаем информацию о приложении:
Источник: spy-soft.net