Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPod

Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPod Ipad
Содержание
  1. Что к чему? «карта» приложения (application mapping)
  2. Почему важно защищать приложение?
  3. Disclaimer
  4. Ghidra
  5. Plist-файлы: уязвимы!
  6. Strip swift symbols
  7. Валидация покупок на сервере
  8. Взлом
  9. Инструменты — чем я пользуюсь каждый день
  10. Инъекция фреймворков и подмена реализации методов
  11. Как взламывать игры (накручивать достижения) на iphone и ipad (джейлбрейк) | яблык
  12. Как взламывать игры и приложения на ios. как взломать ios приложение для iphone, ipad и ipod
  13. Как делать не надо
  14. Как защищаться?
  15. Как найти необходимый участок кода?
  16. Как это предотвратить?
  17. Копируем необходимые файлы
  18. Находим ключ для подписи
  19. Обфускация кода
  20. Обход проверки на джейлбрейк
  21. Опубликована инструкция по взлому любых игр на iphone и ipad с ios 10 без джейлбрейка
  22. Относительная безопасность
  23. Патчим инструкцию
  24. Переходим к практике
  25. Подписываем файлы
  26. Подпись и установка приложения
  27. Поиграем с кодом
  28. Пользовательские настройки: небезопасно!
  29. Потренируемся!
  30. Пошаговая инструкция
  31. Преимущества
  32. Приступим
  33. Проверка на дебаггер
  34. Проверка на джейлбрейк
  35. Связка ключей: лучшие рецепты
  36. Сеть: тестирование на проникновение

Что к чему? «карта» приложения (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 и обмениваться файлами с компьютером.

Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPod

Unc0ver — это джейлбрейк, которым я пользуюсь. Он поддерживает версии вплоть до iOS 13.5.

Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPod

Но с iOS 13.5 я бы посоветовал быть осторожней, потому что встроенный браузер в приложении, Safari View Controller, работает плохо. Лично у меня, когда я открываю ссылки, появляется окно внутреннего браузера (Safari View Controller), которое абсолютно пустое и ничего не грузит.

Cydia — это менеджер пакетов для взломанных устройств.

Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPod

Инъекция фреймворков и подмена реализации методов

Дальше начинается самое интересное, то есть настоящий взлом. Необходимые инструменты:

Как взламывать игры (накручивать достижения) на iphone и ipad (джейлбрейк) | яблык

Недавно мы рассказывали о том, как можно скачивать бесплатно платные приложения на iДевайсы без джейлбрейка. Эта новость безусловно порадовала владельцев невзломанных аппаратов. Сегодняшняя новость предназначена как раз для обладателей iPhone и iPad с джейлбрейком, и мы расскажем, как при помощи твика GamePlayer можно взламывать некоторые игровые параметры.

gameplayer cydia

Итак, для осуществления процедуры взлома потребуется джейлбрейк твик из Cydia GamePlayer. Это не новое расширение, а давно известное многим приложение в магазине Саурика, находится оно в одном из стандартных репозиториев. Работает твик подобно старенькой программе ArtMoney для Windows. Если ранее Вы использовали её, то сейчас никаких проблем с освоением не возникнет.

gameplayer cydiaДля начала потребуется запустить игру, в которой мы хотим изменить один из игровых параметров. Это может быть внутриигровая валюта, монетки, звездочки, жизни у героя, количество ускорения у авто и т.п. Главное, чтобы это показатель имел цифровое выражение. Сразу же оговорюсь, что получится взломать параметры только в играх, которые не требуют подключения к сети. большинство приложений, которые запускаются только с доступом в интернет сверяют свои данные с сервером, их обмануть не удастся.gameplayer cydiaДля начала потребуется запустить игру, в которой мы хотим изменить один из игровых параметров. Это может быть внутриигровая валюта, монетки, звездочки, жизни у героя, количество ускорения у авто и т.п. Главное, чтобы это показатель имел цифровое выражение. Сразу же оговорюсь, что получится взломать параметры только в играх, которые не требуют подключения к сети. большинство приложений, которые запускаются только с доступом в интернет сверяют свои данные с сервером, их обмануть не удастся.Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPodМожете сразу же проверить игру на пригодность к взлому. Для этого отключитесь от Wi-Fi и 3G и запустите приложение. Если оно работает — изменить любой из цифровых параметров удастся практически в любом случае. Итак, Вам потребуется открыть нужную игру и определиться с тем, что будем взламывать. Например, это будут монеты в Plants vs Zombies 2.gameplayer cydiaЗапоминаем их количество и открываем установленный твик GamePlayer. В нем при помощи кнопки в левом верхнем углу выбираем приложение для взлома. Когда игра указана, при помощи цифровой клавиатуры вносим число, которое мы запомнили и нажимаем кнопку «Поиск», из предложенных вариантов выбрать «Auto». В результате приложение находит все переменные в игре, которые равны указанному нами значению. Мы увидим найденное количество вариантов.gameplayer cydiaЗапоминаем их количество и открываем установленный твик GamePlayer. В нем при помощи кнопки в левом верхнем углу выбираем приложение для взлома. Когда игра указана, при помощи цифровой клавиатуры вносим число, которое мы запомнили и нажимаем кнопку «Поиск», из предложенных вариантов выбрать «Auto». В результате приложение находит все переменные в игре, которые равны указанному нами значению. Мы увидим найденное количество вариантов.Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPodТеперь следует вернуться к игре и изменить число, которое мы искали. Можно увеличить его, подобрав монетки, или уменьшить, купив что-то за них. Снова ставим игру на паузу и запоминаем новое значение. Возвращаемся в GamePlayer и вводим это цифру в поле для поиска. Нажимаем «искать» и видим уже меньшее число найденых совпадений. Чем больше число, тем больше вероятность того, что таких переменных будет мало. Если искать число вроде «369 874 456», скорее всего она найдется с первого раза, а вот, например, «0» или «1» придется поискать дольше.gameplayer cydiaКогда найденное число вариантов 3 или 4, то поиск можно заканчивать. Теперь следует изменить каждую из оставшихся переменных на нужное нам число. Для этого по очереди открываем каждую строку, ждем, пока истечет отсчет в нижнем поле и вместо указанных там цифр вводим нужное число. Повторяем это действие для каждой из оставшихся строк. Вводите одно и то же число в каждой их них. При изменении числа есть опция изменить («Modify«) она указана в верхнем поле изначально. Можно изменить её на «Modify and lock«. Разница в том, что в первом случае мы просто меняем число, а во втором, мы еще и не даем игре изменить его в дальнейшем ни в большую, ни в меньшую сторону.gameplayer cydiaКогда найденное число вариантов 3 или 4, то поиск можно заканчивать. Теперь следует изменить каждую из оставшихся переменных на нужное нам число. Для этого по очереди открываем каждую строку, ждем, пока истечет отсчет в нижнем поле и вместо указанных там цифр вводим нужное число. Повторяем это действие для каждой из оставшихся строк. Вводите одно и то же число в каждой их них. При изменении числа есть опция изменить («Modify«) она указана в верхнем поле изначально. Можно изменить её на «Modify and lock«. Разница в том, что в первом случае мы просто меняем число, а во втором, мы еще и не даем игре изменить его в дальнейшем ни в большую, ни в меньшую сторону.Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPod

Читайте также:  iOS эмулятор для Android: запуск приложений

Теперь возвращаемся в игру и проверяем результат. Обратите внимание, что в игре есть параметры, которые сохраняются из игры в игру, а есть те, которые обновляются в каждой партии, например, количество солнышек в том же

PvZ 2

. Если Вы будете взламывать такой параметр — придется повторять всю процедуру при каждой игре заново. Еще стоит отметить, что в процессе взлома приложение может «вылететь» или закрыться. В таком случае следует повторить все с самого начала.

Видео инструкцию для данного способа смотрите на нашем канале, не забывая подписаться:

Смотрите также:

Как взламывать игры и приложения на ios. как взломать ios приложение для iphone, ipad и ipod

Многие любители игр хоть раз хотели взломать программу, чтобы получить больше монет, жизней или еще чего-то. Сделать это можно и на iPhone обращая внимания на несколько правил:

  • джейлбрейк должен быть выполнен;
  • все способы взлома выполняются с использованием твиков из Cydia(тот же джейлбрейк);
  • при скачивании таких твиков может понадобиться дополнительные репозитории;
  • рекомендуется стереть данные своих карт из аккаунта.

Твиков есть достаточно много, например твик iAP Cracker, iAPFree, GamePlayer или же LocallApStore, которые не не работают при подключении к сети. Пошаговая инструкция:

  1. Скачиваем один из твиков на смартфон и запустить игру, в режиме офлайн.
  2. Активируем твик знаком Enabled и выбираем приложение, которое нужно взломать.
  3. Определяемся с тем, что мы хотим улучшить( деньги, машины, ружье) и запоминаем все в цифрах.
  4. В игре нажимаем на покупку любого необходимого ресурса и сразу нажимаем на отмену. После таких махинаций данная покупка совершается без затрат настоящих денег.

Как делать не надо

В AppDelegate есть строка isUnlocked:

Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPod

То есть разработчик добавил в 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 и всем, что связано с безопасностью.

Читайте также:  Сравнение iPad, iPad 2 и The New iPad | Всё об iPad

После этого копируем 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 в зависимости от того, джейлбрейкнуто устройство или нет.

Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPod

Если все сделали правильно, это будет выглядеть примерно так:

Опубликована инструкция по взлому любых игр на 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-контейнером, заменяем старый бинарник на новый.

После этого все подписываем, собираем и устанавливаем на устройство.

Как взламывать игры и приложения на ios. Как взломать iOS приложение для iPhone, iPad и iPod

Готово — вы пропатчили приложение.

Переходим к практике

Мы будем практиковаться на тестовом проекте.

Как достать расшифрованное приложение?

Есть ограничения — не дампятся 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 пишет логи в консоль, и вы сможете понять, на каком шаге допустили ошибку. Это довольно сильно облегчает дебаг.

Подпись и установка приложения

Необходимые предварительные требования:

Читайте также:  Grand Theft Auto (GTA): San Andreas v1.6 для iPhone / iPod Touch / iPAD (ipa)

Поиграем с кодом

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. Через три секунды на экране появится алерт с текстом вроде «Вы это сделали, классно». Если вы скопировали, вставили, все заработало — прекрасно, это первый шаг в сторону взлома.

Пошаговая инструкция

без Jailbreak

Вам следует выбрать из списка этих игр: 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 идёт по разделам бинарника и выводит все элементы данных, похожие на строки. Отфильтруем шум:

Оцените статью
iPad Мобайл
Добавить комментарий