Pull to refresh

Comments 22

А скажите, и в магазине можно также стенку приподнять?

Интересный перевод. А можно подробнее о прослушке SSL-трафика? Уж очень интересно.
Charles генерирует сертификаты для доменов (заданных в настройках) и скармливает их вашему приложению вместо настоящих сертификатов. Ваше приложение общается с Charles с использованием этого «фейкового» сертификата и ошибочно думает, что это всё безопасно. Между тем, Charles «всё видит» (т.к. у него есть закрытый ключ к своему же сертификату) и соответственно показывает. А дальше канал между Charles и сервером шифруется «настоящим» сертификатом. То есть, сервер тоже ничего не подозревает. (Хотя, например, некоторые поддомены apple.com всё же чувствуют подмену.)
Цель данного урока — не сделать вас хакером => тогда «не сделать вас крэкер» а не хакером
Хакером, крекером, спамом, куком, троянским конем и дргуим злоумышленником :)
UFO just landed and posted this here
UFO just landed and posted this here
Продолжение (про LLDB и IDA) будет через неделю. :)
Что значит
В статье пропущена кое-какая инфа, необходимая для взлома реального приложения на девайсе.


Зачем давать информацию не полностью? Если вы уже решили рассказать, как хакеры делают свое дело (за что, кстати, спасибо, статья понравилась), то будьте так добры, расскажите полностью.
В лучших традициях «хакерских» статей. У них всегда что-нибудь пропущено. Чтобы не пополнять ряды бездельников, которые на основании одних туториалов начнут что-то ломать.
На мой взгляд, статья опоздала, как минимум, года на два… Сейчас не всё так просто и легко.
Всем разработчмкам известно что приложение в AppStore шифруется и, для того, чтобы получить дамп классов утилитой class-dump-z, его сначала необходимо дешифровать, а для этого нужен джейлбрейк на iOS… Следовательно необходим iOS 6 версии. Приложения работающие эксклюзивно на iOS 7 можно уже исключить из «группы риска». Но и в iOS 6 версии дешифровать удается далеко не все приложения.
Если речь о банальном дампе классов и их методов, то для этого дешифровывать и не нужно. С джейлбрейком можно загрузить в приложение MobileSubstrate библиотеку, которая делает дамп всех зарегистрированных классов и их методов. Или же использовать вот это github.com/limneos/weak_classdump Это не говоря о том, что в данном случае возможности mobilesubstrate библиотек и cycript этим далеко не ограничиваются.
Хороший перевод. Спасибо.
Очень интересная тема, но из-за большого объема работы просто нет времени в этом копаться, а в действительности очень хочется.
Когда я экспериментировал с изучением файлов приложений и настроек, был удивлён, сколько программ хранят важные данные в открытом виде. Highscore в NSUserDefaults, список купленного в plist, да чего только не находил.
Такая же история с Mac OS приложениями. Чего там только нет
Кстати, посмотреть все NSUserDefaults всех приложений можно набрав в консоли defaults read
Консольных команд для разных нужд в OS X очень уж много. Я как-то пытался самые интересные расписать, но с тех пор нашёл ещё кучу.

А вот если хочется поломать «по-взрослому», то тут на помощь приходят предзагружаемые либы, с помощью которых можно переопределять системные вызовы. Этот метод активно используется в процессе Jailbreak'а девайса, к примеру.
Просто скажите, можно ли надежно защитить in-app покупки в iOS приложении?
В теории — на данный момент нет, если достаточно грамотный взломщик заинтересуется вами.

На практике — шифруйте данные самостоятельно (лучше на чистом Си), обфусцируйте код, продумайте клиент-серверное взаимодействие, и всё будет ок. :)
Автоматического обфускатора на данный момент нет в природе. Есть некие компании, типа Arxan и irDato, у которых есть свои тулзы для этого, за денюжку.

Трудный и гемморойный способ, самому переопределять все классы, методы и проперти, типа такого (взято с stackoverflow):

#ifndef DEBUG
#define MyClass aqwe
#define myMethod oikl
#endif

@interface MyClass : NSObject {
}

- (void)myMethod;

Мне больше интересна реализация идеи шифровать данные по уникальному ключу. В таком случае либо ключ придется хранить рядом или при переносе приложения на другой девайс данные не расшифруются, если брать скажем в качестве ключа id устройства. Держать данные на своем сервере или в облаке для не онлайн игр тоже не очень.
Есть еще вот такая штука morpher.com/ Единственное, не умеет шифровать пока что селекторы obj-C, т.е. методы будут как на ладони. Но методы можно и вручную вызывать, используя С-строки в качестве имен, которые этот обфускатор уже шифровать умеет. А вообще, проще критически части кода писать на С/С++ — имен методов и классов в бинарнике не будет, да еще и обфускатор с таким кодом куда лучше справляется, чем с obj-C.
Статья с сайта Рэя узнается по использованию мемов. Классный сайт, а особенно раздел tutorials. Я вот c# в рабочее время занимаюсь, а в свободное читаю его статьи. Для расширения кругозора, — отличный вариант.
Эти мемы уже порядком поднадоели.
Sign up to leave a comment.

Articles