- Что к чему? «карта» приложения (application mapping)
- Почему важно защищать приложение?
- Disclaimer
- Ghidra
- Plist-файлы: уязвимы!
- Strip swift symbols
- Валидация покупок на сервере
- Взлом
- Инструменты — чем я пользуюсь каждый день
- Инъекция фреймворков и подмена реализации методов
- Как взламывать игры (накручивать достижения) на iphone и ipad (джейлбрейк) | яблык
- Как взламывать игры и приложения на ios. как взломать ios приложение для iphone, ipad и ipod
- Как делать не надо
- Как защищаться?
- Как найти необходимый участок кода?
- Как это предотвратить?
- Копируем необходимые файлы
- Находим ключ для подписи
- Обфускация кода
- Обход проверки на джейлбрейк
- Опубликована инструкция по взлому любых игр на iphone и ipad с ios 10 без джейлбрейка
- Относительная безопасность
- Патчим инструкцию
- Переходим к практике
- Подписываем файлы
- Подпись и установка приложения
- Поиграем с кодом
- Пользовательские настройки: небезопасно!
- Потренируемся!
- Пошаговая инструкция
- Преимущества
- Приступим
- Проверка на дебаггер
- Проверка на джейлбрейк
- Связка ключей: лучшие рецепты
- Сеть: тестирование на проникновение
Что к чему? «карта» приложения (application mapping)
Взглянем на приложение с высоты птичьего полёта! Что оно делает, с точки зрения пользователя? Какова его основная структура?
Почему важно защищать приложение?
Чтобы это понять, нужно увидеть в этом смысл. И он в основном экономический, реже — репутационный.
Disclaimer
Цель данного урока — не сделать вас хакером, а показать, как злоумышленники могут обвести вас вокруг пальца. В статье пропущена кое-какая инфа, необходимая для взлома реального приложения на девайсе. Будем мучить симулятор (кстати, это вроде бы даже законно
[citation needed]
Disclaimer от переводчика: из оригинального текста убрано много «воды» и отсылок к Голливуду (и так длинно). Добавлен ряд ключевых пояснений.
Ghidra
Классная штука, дизассемблер от АНБ США, здесь можно вставить шутку про слежку от спецслужб.
Плюсы:
Plist-файлы: уязвимы!
Мы кое-что узнали о приложении. Теперь поищем всё, что плохо лежит. Разработчикам свойственно ошибаться. Злоумышленникам свойственно использовать эти ошибки в своих целях.
Ошибки… Начнём с самых глупых! Например, как вам идея: использовать файл .plist для хранения критической информации? Взломщики всегда смотрят plist’ы: их легко просмотреть, а их изучение может дать ключ к внутренней логике приложения. (Plist = property list, текстовый файл с сериализованными объектами).
Посмотрим, какие plist’ы у нас есть?(напомню, мы всё ещё находимся в папке бандла «Meme Collector.app»)
ls *.plist
А вот какие — две штуки:
Info.plist MoneyDataStore.plist
Посмотрим первый — Info.plist:
plutil -p Info.plist
Результат:
{
"DTSDKName" => "iphonesimulator7.0"
"CFBundleName" => "Meme Collector"
"CFBundleDevelopmentRegion" => "en"
"CFBundleVersion" => "1.0"
"DTPlatformName" => "iphonesimulator"
…и ещё куча всего…
Ничего интересного, какая-то общая информация. Ладно. Ну-ка, а второй:
plutil -p MoneyDataStore.plist
И видим:
Strip swift symbols
Плюсы: легко и дешево использовать, удаляется часть информации о Swift-классах. И это включено по умолчанию, то есть Xcode думает о вашей безопасности.
Минусы: информацию о классе можно найти другим способом.
Зачем нужно включать Strip Swift Symbols?
Допустим, у нас есть стандартный класс ViewController, label, viewDidLoad и так далее. Прошу обратить особенное внимание на статичную функцию buildScreen, о ней мы еще поговорим.
Если вы оставили Swift Symbols и после этого прогнали бинарник вашего приложения через специальную утилиту dsdump, вот что появится в логе:
Ниже можно увидеть, что есть некоторые свифтовые методы, и по названиям методов и переменных вы можете примерно понять, что здесь происходит и важен ли для вас этот класс. Что самое интересное, здесь нет статического метода buildScreen. Статические методы находятся в другом месте.
Вот что будет, если включить эту функцию: как вы видите, данных о свифтовых методах просто нет. Есть все, что связано с Objective-C и бриджингом для Objective-C.
Валидация покупок на сервере
Это очень хорошая практика, которой придерживаются не все. Среди топ-100 приложений я находил немало тех, у которых валидация все еще производится на девайсе, и при помощи одного твика можно обойти валидацию (подмена ответа сервера).
Плюсы: безопасность.
Минусы: вам придется покупать хостинг.
А если вы будете валидировать на клиенте?
Плюс: вам не нужен сервер.
Минус: потенциальная потеря денег. Твик LocaliAPStore будет вашим худшим врагом.
В качестве примера могу привести одно приложение, связанное с фоторедактированием. Название я, к сожалению, не могу сказать. Это приложение как раз не использует валидацию покупок на сервере. Приложение классное, но при помощи одного твика вы можете получить всё бесплатно.
Еще есть одна RPG-игра, она тоже находится в топах, там тоже валидация покупок на девайсе. Даже у известного раннера про подземки и бег с поездами такая же проблема — валидация идет на девайсе.
Взлом
В моем понимании взлом — это изменение поведения приложения в интересах хакера. То есть приложение работает не так, как изначально задумывал программист. В основном поведение меняется в тех частях, что связаны с получением чего-то, обычно за деньги — хакер хочет получить это бесплатно.
Инструменты — чем я пользуюсь каждый день
Filza — файловый менеджер, в котором скрыто очень много функций. С его помощью вы можете поднять сервер, FileDAV и обмениваться файлами с компьютером.
Unc0ver — это джейлбрейк, которым я пользуюсь. Он поддерживает версии вплоть до iOS 13.5.
Но с iOS 13.5 я бы посоветовал быть осторожней, потому что встроенный браузер в приложении, Safari View Controller, работает плохо. Лично у меня, когда я открываю ссылки, появляется окно внутреннего браузера (Safari View Controller), которое абсолютно пустое и ничего не грузит.
Cydia — это менеджер пакетов для взломанных устройств.
Инъекция фреймворков и подмена реализации методов
Дальше начинается самое интересное, то есть настоящий взлом. Необходимые инструменты:
Как взламывать игры (накручивать достижения) на iphone и ipad (джейлбрейк) | яблык
Недавно мы рассказывали о том, как можно скачивать бесплатно платные приложения на iДевайсы без джейлбрейка. Эта новость безусловно порадовала владельцев невзломанных аппаратов. Сегодняшняя новость предназначена как раз для обладателей iPhone и iPad с джейлбрейком, и мы расскажем, как при помощи твика GamePlayer можно взламывать некоторые игровые параметры.
Итак, для осуществления процедуры взлома потребуется джейлбрейк твик из Cydia GamePlayer. Это не новое расширение, а давно известное многим приложение в магазине Саурика, находится оно в одном из стандартных репозиториев. Работает твик подобно старенькой программе ArtMoney для Windows. Если ранее Вы использовали её, то сейчас никаких проблем с освоением не возникнет.
Для начала потребуется запустить игру, в которой мы хотим изменить один из игровых параметров. Это может быть внутриигровая валюта, монетки, звездочки, жизни у героя, количество ускорения у авто и т.п. Главное, чтобы это показатель имел цифровое выражение. Сразу же оговорюсь, что получится взломать параметры только в играх, которые не требуют подключения к сети. большинство приложений, которые запускаются только с доступом в интернет сверяют свои данные с сервером, их обмануть не удастся.Для начала потребуется запустить игру, в которой мы хотим изменить один из игровых параметров. Это может быть внутриигровая валюта, монетки, звездочки, жизни у героя, количество ускорения у авто и т.п. Главное, чтобы это показатель имел цифровое выражение. Сразу же оговорюсь, что получится взломать параметры только в играх, которые не требуют подключения к сети. большинство приложений, которые запускаются только с доступом в интернет сверяют свои данные с сервером, их обмануть не удастся.Можете сразу же проверить игру на пригодность к взлому. Для этого отключитесь от Wi-Fi и 3G и запустите приложение. Если оно работает — изменить любой из цифровых параметров удастся практически в любом случае. Итак, Вам потребуется открыть нужную игру и определиться с тем, что будем взламывать. Например, это будут монеты в Plants vs Zombies 2.Запоминаем их количество и открываем установленный твик GamePlayer. В нем при помощи кнопки в левом верхнем углу выбираем приложение для взлома. Когда игра указана, при помощи цифровой клавиатуры вносим число, которое мы запомнили и нажимаем кнопку «Поиск», из предложенных вариантов выбрать «Auto». В результате приложение находит все переменные в игре, которые равны указанному нами значению. Мы увидим найденное количество вариантов.Запоминаем их количество и открываем установленный твик GamePlayer. В нем при помощи кнопки в левом верхнем углу выбираем приложение для взлома. Когда игра указана, при помощи цифровой клавиатуры вносим число, которое мы запомнили и нажимаем кнопку «Поиск», из предложенных вариантов выбрать «Auto». В результате приложение находит все переменные в игре, которые равны указанному нами значению. Мы увидим найденное количество вариантов.Теперь следует вернуться к игре и изменить число, которое мы искали. Можно увеличить его, подобрав монетки, или уменьшить, купив что-то за них. Снова ставим игру на паузу и запоминаем новое значение. Возвращаемся в GamePlayer и вводим это цифру в поле для поиска. Нажимаем «искать» и видим уже меньшее число найденых совпадений. Чем больше число, тем больше вероятность того, что таких переменных будет мало. Если искать число вроде «369 874 456», скорее всего она найдется с первого раза, а вот, например, «0» или «1» придется поискать дольше.Когда найденное число вариантов 3 или 4, то поиск можно заканчивать. Теперь следует изменить каждую из оставшихся переменных на нужное нам число. Для этого по очереди открываем каждую строку, ждем, пока истечет отсчет в нижнем поле и вместо указанных там цифр вводим нужное число. Повторяем это действие для каждой из оставшихся строк. Вводите одно и то же число в каждой их них. При изменении числа есть опция изменить («Modify«) она указана в верхнем поле изначально. Можно изменить её на «Modify and lock«. Разница в том, что в первом случае мы просто меняем число, а во втором, мы еще и не даем игре изменить его в дальнейшем ни в большую, ни в меньшую сторону.Когда найденное число вариантов 3 или 4, то поиск можно заканчивать. Теперь следует изменить каждую из оставшихся переменных на нужное нам число. Для этого по очереди открываем каждую строку, ждем, пока истечет отсчет в нижнем поле и вместо указанных там цифр вводим нужное число. Повторяем это действие для каждой из оставшихся строк. Вводите одно и то же число в каждой их них. При изменении числа есть опция изменить («Modify«) она указана в верхнем поле изначально. Можно изменить её на «Modify and lock«. Разница в том, что в первом случае мы просто меняем число, а во втором, мы еще и не даем игре изменить его в дальнейшем ни в большую, ни в меньшую сторону.
Теперь возвращаемся в игру и проверяем результат. Обратите внимание, что в игре есть параметры, которые сохраняются из игры в игру, а есть те, которые обновляются в каждой партии, например, количество солнышек в том же
PvZ 2
. Если Вы будете взламывать такой параметр — придется повторять всю процедуру при каждой игре заново. Еще стоит отметить, что в процессе взлома приложение может «вылететь» или закрыться. В таком случае следует повторить все с самого начала.
Видео инструкцию для данного способа смотрите на нашем канале, не забывая подписаться:
Смотрите также:
Как взламывать игры и приложения на ios. как взломать ios приложение для iphone, ipad и ipod
Многие любители игр хоть раз хотели взломать программу, чтобы получить больше монет, жизней или еще чего-то. Сделать это можно и на iPhone обращая внимания на несколько правил:
- джейлбрейк должен быть выполнен;
- все способы взлома выполняются с использованием твиков из Cydia(тот же джейлбрейк);
- при скачивании таких твиков может понадобиться дополнительные репозитории;
- рекомендуется стереть данные своих карт из аккаунта.
Твиков есть достаточно много, например твик iAP Cracker, iAPFree, GamePlayer или же LocallApStore, которые не не работают при подключении к сети. Пошаговая инструкция:
- Скачиваем один из твиков на смартфон и запустить игру, в режиме офлайн.
- Активируем твик знаком Enabled и выбираем приложение, которое нужно взломать.
- Определяемся с тем, что мы хотим улучшить( деньги, машины, ружье) и запоминаем все в цифрах.
- В игре нажимаем на покупку любого необходимого ресурса и сразу нажимаем на отмену. После таких махинаций данная покупка совершается без затрат настоящих денег.
Как делать не надо
В AppDelegate есть строка isUnlocked:
То есть разработчик добавил в AppDelegate переменную, с помощью которой он смотрит, куплено приложение или нет.
Естественно, эта переменная легко меняется: вы жмете кнопку i, дергаете свитч, нажимаете «ОК». Поменяли переменную, закрыли меню флексинга, и у вас полностью «купленное» приложение.
Как защищаться?
Это главный вопрос. Есть несколько вариантов, которые я знаю:
Совет: проверяйте, нет ли в интернете вашего взломанного приложения.
Как найти необходимый участок кода?
Так как у нас код не обфусцирован, нужно либо вручную, не давая методам слишком очевидные имена, либо утилитами обфусцировать код.
При помощи поиска ищем слово jail в настройках. Найдется пара методов. И если вы нажмете на один из них, как можно увидеть чуть выше, курсор прыгнет в нужную область памяти.
Как это предотвратить?
Есть две новости. Начну с хорошей.
Apple делает это за вас автоматически. Когда вы отправляете приложение в App Store, они шифруют ваши бинарники с использованием DRM-технологии под названием FairPlay. Если вы сдампите class-dump-z’ом зашифрованный бинарник, то получите… тарабарщину.
Плохая новость: обойти эту защиту довольно легко! Дело на 10 минут (вручную), а ещё есть средства автоматизировать сей процесс. В общем, будьте уверены, ваше приложение расшифруют и увидят названия всех ваших классов, методов, протоколов и т.д.
Копируем необходимые файлы
Создаем Adhoc Provisioning Profile и копируем его в папку с приложением. Дальше выполняем код:
security cms -D -i adhoc.mobileprovision > profile.plist
/usr/libexec/PlistBuddy -x -c 'Print :Entitlements' profile.plist > entitlements.plist
В итоге мы получим entitlements.plist, который нам нужен. Profile.plist уже не нужен. Система безопасности iOS построена вокруг этих entitlements.
security — утилита macOS, с помощью которой можно работать с сертификатами, паролями, keychains и всем, что связано с безопасностью.
После этого копируем Adhoc Provisioning Profile в контейнер приложения (папку Payload/*.app) и переименовываем его в embedded.mobileprovision. Это обязательно!
Находим ключ для подписи
Вводим код:
security find-identity -v -p codesigning
Этот код ищет сертификат, при помощи которого можно подписать приложение. В моем случае я выбрал iPhone Distribution, можно выбрать Developer, разницы я не заметил. Она может возникнуть, когда вы будете пытаться залить это все в App Store. Но в локальном тесте разницы нет.
Обфускация кода
Есть различные обфускаторы, один из популярных, насколько я понял по GitHub — это SwiftShield.
Плюсы: код превращается в лабиринт, в нем вообще не разберешься. Особенно классные обфускаторы создают дополнительные методы, мусор, чтобы запутать хакера. Насчет Swift не уверен, но в C#, Java и Kotlin есть такие.
Минусы: иногда этот лабиринт сказывается и на вас. И еще крэш-логи приходится каждый раз расшифровывать.
На скриншоте — крэш-лог одного из приложений.
Над зеленой полосой — крэш-лог до расшифровки, ниже — расшифрованный крэш-лог. Крэш-лог нужно расшифровывать через утилиту, которая идет вместе со SwiftShield. Это можно автоматизировать: засунуть в CI дополнительный job, чтобы подтягивать все крэш-логи, прогонять их через утилиту и что-то делать с ними дальше. Но это дополнительная работа.
Еще один большой минус — нет готовых решений, годных для энтерпрайза. Они опенсорсные. Это не плохо, но нужно быть осторожным, подтягивая что-то опенсорсное в ваш проект, особенно если он связан с безопасностью и обфускацией.
Я за свою практику не сталкивался с тем, чтобы кто-то в iOS пользовался обфускатором кода, поэтому это очень редкая практика.
Обход проверки на джейлбрейк
Патчим бинарник. Тот проект, что вы скачали ранее, выглядит так: простой белый экран, на нем — label с текстом: либо Hacked, либо Safe and sound в зависимости от того, джейлбрейкнуто устройство или нет.
Если все сделали правильно, это будет выглядеть примерно так:
Опубликована инструкция по взлому любых игр на iphone и ipad с ios 10 без джейлбрейка
С выходом iOS 10 многие пользователи отказались от джейлбрейка, а некоторые и вовсе не могут себе его позволить, так как эксплоита еще нет. В Сети появился способ обхода ограничений в играх на iPhone и iPad без взлома устройств. Речь идет о внутриигровых покупках, которые открывают новые возможности в играх, позволяют получать новых персонажей, кристаллы, монеты и другие виртуальные предметы.
Почти все приложения и игры в iOS сохраняют свои настройки в формате plist. До релиза iOS 8.3 обход ограничений в играх заключался в подключении iPhone и iPad к компьютеру, запуске iFunBox, iTools и других приложений и копировании скорректированного файла сохранения в папку игры. В последнях версиях iOS такая возможность отсутствует, однако пользователи нашли новый способ.
Шаг 1: Установите iBackupBot и iTunes на компьютер и закройте все приложения на iPhone и iPad.
Шаг 2: Подключите iOS-устройство к компьютеру через USB, откройте iTunes и выполните резервное копирование данных на ПК (не в iCloud). Предварительно игра, которую необходимо взломать, должна хотя бы один раз быть запущена на iPhone или iPad.
Шаг 3: Найдите в Сети готовое сохранение для игры в формате plist (об этом ниже).
Шаг 4: Откройте iBackupBot и дождитесь завершения считывания данных из резервной копии.
Шаг 5: В боковой панели выберите последнюю версию бекапа, сделанного на шаге 2.
Шаг 6: Найдите папку User App Files, затем в появившемся списке найти программу или игру для взлома.
Шаг 7: Сохранения игр хранятся в папке Library/Preferences. Зайдя в нужную директорию необходимо нажать кнопку Import, а затем выбрать plist-файл, загруженный на шаге 3.
Шаг 8: Программа предупредит о том, что файл будет перезаписан. Нажмите Yes.
Шаг 9: После перезаписи файла сохранений появится окно с сообщением «1 files imported to backup». Нажмите ОК.
Шаг 10: Выберите добавленный в iBackupBot файл и нажмите на панели сверху Restore.
Шаг 11: В окне восстановления кликните ОК. После завершения ваше устройство перезагрузится. Обычно на это уходит 1-2 минуты. Если появилась ошибка -37, разблокируйте гаджет и отключите службу «Найти iPhone» в настройках iCloud.
Шаг 12: После перезагрузки программы откройте игру на iPhone и iPad с новым сохранением.
Взломанные сохранения с внутриигровыми покупками публикуются на форумах в Сети. Но при желании можно обойтись и без поиска готовых plist-файлов, а редактировать собственные файлы в играх. Для этого нужно выгрузить сохранение из резервной копии и открыть его с помощью текстового редактора.
Относительная безопасность
Относительная безопасность означает, что затраты на атаку превышают полученную в результате выгоду. Допустим, у вас есть погодное приложение, в котором нет внутренних покупок. Вы пользуетесь открытым API, вам нет смысла париться о безопасности. И в результате взлома вы ничего не потеряете.
Но если вдруг у вас что-то серьезнее, например, фоторедактор, в котором через встроенные покупки можно открыть дополнительные фильтры, то стоит задуматься о безопасности.
Нужно понимать, что абсолютной безопасности вы не добьетесь. Вы можете добиться некоторой «лучшей обезопашенности» по сравнению с тем, что было раньше.
Патчим инструкцию
Здесь вы видите инструкцию bl (branch with link) — это по сути прыжок на функцию, которая ожидает, что из этой функции что-то вернется в регистре w0. Если мы знаем, в какой регистр вернется значение, мы можем выполнить команду mov (присваивание).
То есть в регистр w0 записывается как раз то, что возвращается с метода. Мы записываем 0 (то есть false), экспортируем бинарник. Так как мы не трогали остальные фреймворки, нам нужен только бинарник.
Экспортируем его.
Скорее всего, он будет экспортирован с припиской bin, ее нужно удалить и оставить только MobiusStep1. После этого открываем папку, откуда мы брали бинарник, то есть папку с приложением, папку с .app-контейнером, заменяем старый бинарник на новый.
После этого все подписываем, собираем и устанавливаем на устройство.
Готово — вы пропатчили приложение.
Переходим к практике
Мы будем практиковаться на тестовом проекте.
Как достать расшифрованное приложение?
Есть ограничения — не дампятся extensions. Но за все время, что я этим пользовался, мне extensions и не были нужны.
Подписываем файлы
Это самое интересное. Вводим codesign, не забываем подписывать фреймворки. В моем случае там лежали только dylib, если лежат еще и фреймворки — обговорим этот кейс позже.
Не забывайте сначала подписать основной бинарник, а потом все приложение. В таком порядке у меня все работало отлично.
codesign -f -s "iPhone Distribution: Murad Tataev (….)” --entitlements "entitlements.plist" Payload/*.app/Frameworks/*.dylib
codesign -f -s "iPhone Distribution: Murad Tataev (….)” --entitlements "entitlements.plist"
Payload/*.app/MobiusStep1
codesign -f -s "iPhone Distribution: Murad Tataev (….)” --entitlements "entitlements.plist"
Payload/*.app
Дальше архивируем:
zip -qr resigned.ipa Payload
И устанавливаем. Не забывайте, чтобы устройство было подключенным через кабель, иначе работать не будет.
ideviceinstaller -i resigned.ipa
Cтавим через ideviceinstaller, а не Xcode — ideviceinstaller пишет логи в консоль, и вы сможете понять, на каком шаге допустили ошибку. Это довольно сильно облегчает дебаг.
Подпись и установка приложения
Необходимые предварительные требования:
Поиграем с кодом
Cydia Substrate — это такой фреймворк для подмены реализации методов, другими словами, для хукания методов. Есть метод с изначальной реализацией, которую задумал программист, и есть ваш метод. Вы берете и подменяете эти методы. На этом фреймворке держатся все твики, которые лежат в Cydia.
Попробуем вызвать какую-нибудь функцию.
В навигаторе Xcode откройте папку Products. Вы можете открыть файл MobiusStep2.app в Finder, перейти в папку app через терминал, войти в app-контейнер и с помощью утилиты dsdump принтануть все символы, которые есть в приложении.Все статичные методы в приложении тоже реализованы в виде символов.
dsdump -c MobiusStep2 | grep viewDidLoad
Вводите ViewDidLoad или то, что вам интересно. Здесь есть два метода, я выбрал второй, вы можете выбрать первый — по сути, это одно и то же.
Копируете всю строку, в Xcode удаляете весь предыдущий код и вводите команду MSFindSymbol.
Что такое MS? Изначально CydiaSubstate называлась MobileSubstate, и MS — дань уважения этому. MSFindSymbol делает то же, что и dsdump — идет поиск символа, копируется отступ по памяти, дополнительные данные. Всё это нужно для того, чтобы позже можно было что-то менять по этому символу.
Можно что-то вызвать по этому символу:
((void (*)(void)) symbol)();
Но имейте в виду, что в этом методе могут вызываться различные переменные, которые еще не инициализированы. И возможно, приложение будет просто крашиться. Поэтому будьте осторожны, и лучше всего через Ghidra заранее проверять метод, который вы хотите вызвать: посмотреть в интерпретаторе, не идут ли вызовы в какие-то локальные переменные, которые еще не инициализированы, и так далее.
Если вы так вызовете символ в этом проекте, вы увидите, что принтанется viewDidLoad. Из-за того, что вы сами вызвали viewDidLoad, и после этого вызвался «натуральный» метод, у вас в консоли продублируется текст viewDidLoad.
Давайте вызовем свой код после viewDidLoad.
Это уже что-то более боевое и интересное. Из предыдущего кода остается MSFindSymbol, но только вызов MSFindSymbol заменяется на MSHookFunction. Здесь оригинальный метод заменяется на засвизленный, то есть на наш.
В нашем методе мы сначала вызываем оригинальную имплементацию в виде Load, и после него идет наш код. Ничего оригинального не стал придумывать, просто через 2 секунды отображаю алерт.
Пользовательские настройки: небезопасно!
Ну вы поняли? Хранить важную информацию в .plist — не самая лучшая идея. А теперь угадайте: что представляют из себя пользовательские настройки (
Потренируемся!
Советую всем начинать с простого и только потом бежать взламывать пентагоны.
Выглядит тестовый проект так:
Приложение называется Mobius Conf. У вас есть 300 монет, можно добавить монеты, то есть их купить, но мы так делать не будем, либо можно что-то купить внутри приложения за 200 монет.
Порядок действий:
Скорее всего, большинству из вас код будет непонятен. Метод вызывается в момент. когда загружается ваш фреймворк. Стоит учитывать, что именно в этот момент приложения еще нет, оно только грузится.
Здесь нельзя сразу пытаться что-то менять. Именно поэтому здесь прописан dispatch_after. Через три секунды на экране появится алерт с текстом вроде «Вы это сделали, классно». Если вы скопировали, вставили, все заработало — прекрасно, это первый шаг в сторону взлома.
Пошаговая инструкция
Вам следует выбрать из списка этих игр: asphalt 8, fifa 14, real steel csr racing, hungry shark 3, deer hunter 2021, minion rush, dead trigger. Затем установить одну или несколько. Сделать это нужно в App Store: заходим в магазин приложений от Apple, совершаем нужную операцию.
Преимущества
- Безопасно для загрузки и использования на iPhone и iPad
- Это не приведет к аннулированию гарантии на ваше устройство.
- Это не повредит ваше устройство
- Для бесплатного скачивания платных приложений не требуется никакого взлома или компьютера.
- Вы можете получить доступ к играм с модификациями и настроенным приложениям, таким как Spotify , SnapChat , Minecraft и другим.
- Эффективный и простой способ получить премиум-приложения
Итак, сегодня мы загрузим платные приложения для iOS бесплатно без взлома.
Приступим
Нам понадобится:
1. Утилита
2. Прокси для отладки по сети, например,
(триал-версия отличается надоедливыми сообщениями и работает максимум 30 минут за 1 сеанс). В комментах к
статьи советуют альтернативу Чарльзу —
Чтобы вы творчески подошли к процессу, предлагаю вам сценарий. Представьте: вышло новое приложение для айпада — «Собиратель мемов» (Meme Collector). Всем нравится. Но вам шепнули на ухо, что встроенные покупки вытянут из вас значительную сумму денег.
В общем, вы задумали получить платный контент (мемы) бесплатно. Есть несколько направлений, куда можно двигаться, мы поговорим о них — и о соответствующих методах защиты.
Проверка на дебаггер
Плюсы: легко использовать, сложнее патчить.
Это хорошо работает с отложенными ошибками. Если вы узнали, что пользователь запустил ваше приложение с подключенным дебаггером или у него джейлбрейк и так далее, вы можете конкретно в каких-то критичных местах не давать ему проходить дальше. Такую ошибку нужно показывать не сразу, а делать это позже, чтобы код проверки не был в очевидном месте.
Минусы: это тоже патчится.
Примерный код проверки выглядит так:
Мы создаем структуру для информации о процессе, задаем размер этой структуры и с помощью утилиты systemctl пытаемся запросить флаги для текущего процесса. Если у нас получилось запросить их — идем дальше и проверяем, активен ли флаг P_TRACED. При помощи этого флага производится дебаггинг в iOS.
Если флаг стоит не в null, то нас дебажат.
Проверка на джейлбрейк
Плюсы: легко и дешево использовать (достаточно скопировать и вставить код).
Минусы: во-первых, это очень легко пропатчить.
Во-вторых, страдают некоторые мирные пользователи, которые могли поставить джейлбрейк не чтобы получить что-то ваше бесплатно, а чтобы пользоваться различными другими твиками.
Есть и обратная сторона — джейлбрейк используется все реже, но есть и те, кто по-прежнему ставят его.
Ссылка на JailBreak.swift
Ссылка на DTTJailbreakDetection
Связка ключей: лучшие рецепты
Другое возможное решение — перенос важных данных из .plist’ов в Связку ключей iOS (Keychain). Как это сделать — написано, например,
Связка ключей «повышает ставки» для хакера. Злоумышленники не смогут ничего стянуть, если устройство заблокировано.
Тем не менее, не стоит полностью полагаться на одну только Связку ключей! И вот почему. Связку ключей поддерживает Apple. (Ну вы уже всё поняли, да?) Информация в ней зашифрована паролем пользователя, который обычно является простым 4-значным цифровым кодом. А это значит, что атака брутфорсом займёт минут двадцать. Узнав пароль, легко сдампить всю связку ключей.
Что же делать? Некоторые общие рекомендации:
Сеть: тестирование на проникновение
Ещё хакеры любят наблюдать, как приложение взаимодействует с сетью. Самый тупой способ увидеть, происходит ли какая-то работа с сетью на устройстве, это поискать URL’ы в бинарнике.
Находясь в папке бандла (Meme Collector.app), наберите в терминале:
strings "Meme Collector"
https://www.youtube.com/watch?v=MpX8c3HGqEw
Стой, куда столько! Команда strings идёт по разделам бинарника и выводит все элементы данных, похожие на строки. Отфильтруем шум: