Как работает Kali AP

Я уже писал про систему защиты от взлома приложений из App Store для iPhone и iPod touch, которую мы назвали Kali AP. Теперь пришло время рассказать немного о том, как она работает, а также ответить на некоторые вопросы касательно Kali, которые взволновали публику. Собственно, в этой статье я пытаюсь раскрыть обе темы.
Заодно мы решили помочь соотечественникам, которые пишут приложения для iPhone, и дать им возможность пользоваться Kali совершенно бесплатно. Так что если у вас есть приложение для iPhone, которое вы продаете в App Store (бесплатное защищать, очевидно, нет смысла), и вас не устраивает ситуация с пиратами — пишите на kaliap@ripdev.com, мы постараемся вам помочь. А теперь — к делу, поговорим о Kali.
Создавать защиту для ПО — дело крайне неблагодарное. Хотя бы потому, что ее мало кто оценит. Например, ее не оценят те, кто, собственно, взламывают приложения — ну зачем им дополнительные сложности в их и без того непростых задачах? Как и не оценят обычные пользователи, которые привыкли брать софт там, где он «хорошо лежит» — в различных торрентах и других p2p сетях. Ну, или борцы за «открытый код», «все бесплатное» и мир во всем мире — для них еще одна система защиты или шифрования это как серпом по гениталиям.

И только разработчики, уставшие от зашкаливающего уровня воровства их приложений (а про уровни я уже писал в других статьях, разработчики регистрируют от 50 до 95% пользователей с украденными приложениями) могут заинтересоваться таким продуктом. Да и то, среди разработчиков как раз очень силен уровень скептицизма по отношению к системам защиты, поскольку «все равно все сломают», поэтому зачем тратить время, силы и деньги на это, проще пытаться игнорировать пиратов и ничего не делать.
Еще один подход, часто встречающийся среди разработчиков — «это проблема Apple, поэтому пусть она ее и решает». К счастью, не все разработчики считают такую «страусиную» позицию правильной — рассчитывать на сознательность пользователей или решение Apple, когда пираты изобретают автоматизированные инструменты для взлома и размещения приложений, довольно сложно. Ждать, что Apple «запретит» jailbreak (а именно на телефоны с jailbreak устанавливаются взломанные приложения), тоже не приходится — во-первых, см. выше «все равно взломают», во-вторых, как ни крути, а jailbreak Apple все же опосредованно выгоден — не будь его, многие пользователи просто не покупали бы телефон (и мы говорим не о единицах, а о миллионах пользователей — есть информация, что процедуру jailbreak проходит около 20-25% всех проданных iPhone).
Еще одна причина, по которой разработчики зачастую решают не тратить силы на защиту своих приложений — это потому, что серьезно инвестировать время и силы на защиту готов мало кто, а простую защиту действительно нет смысла делать, потому что «все равно взломают». Поэтому лучше потратить время на улучшение функциональности приложения, удовлетворение запросов пользователей, чем на невидимую защиту, которую никто не заметит и не оценит. Вот здесь как раз и может оказаться полезной помощь сторонних компаний, которые обладают нужными знаниями в определенной области и владеют достаточными ресурсами для разработки, и, что самое главное — дальнейшей поддержки специализированной системы защиты. Как вы понимаете, в данном случае я говорю о Ripdev и системе защиты приложений для App Store — Kali AntiPiracy.
С момента анонса этой системы мы получили достаточно много различных вопросов и прочего фидбека (сюда я включаю не только жалобы по недоразумению, но и проклятия — было и такое), чтобы на основе этой входящей информации понять, что именно интересует людей в этой защите. Поэтому и возникла эта статья, в которой, конечно, не будет технических know-how, но будет небольшой рассказ о том, как работает наша защита, почему мы считаем ее очень удачной, и в чем заключается ее unique selling proposition.
Для начала — небольшое введение о том, как работает система взлома приложений для iPhone на данный момент, чтобы вы представляли себе, с чем нам приходится бороться. Взломщик покупает приложение в App Store и запускает его у себя на телефоне — само приложение изначально защищено от копирования тем, что его исполняемый код зашифрован специальным ключом. Но когда приложение стартует — система вычитывает его ключи и, «расшифровавшись», загружается в память.
Затем к запущенному приложению подключается отладчик, выполнение программы останавливается, а из оперативной памяти устройства (в которой загружена расшифрованная программа) создается «слепок». После этого образ памяти телефона выгружается на диск, где из этого «слепка» памяти путем нехитрых манипуляций создается рабочее приложение, которое уже может работать без зашифрованных ключей.
Поэтому нам осталось всего лишь сделать так, чтобы хакеры не могли провести вышеописанную процедуру — и все будет замечательно. Просто? Конечно, описать задачу значительно проще, чем ее реализовать, но мы не ищем легких путей.
[ad#intext-inside]
Соответственно, система защиты Kali AP состоит из трех модулей, каждый из которых отвечает за свой участок защиты. Во-первых, это «антиотладка» — подсистема, которая предназначена для того, чтобы не дать хакеру запустить приложение под отладчиком. Если Kali засекает попытки «подобраться» к приложению с отладчиком — приложение, скорей всего, «упадет», не дав хакеру сделать свое черное дело.
Но, допустим, хакеру удалось таки заставить программу работать под отладчиком, и тогда в действие вступает вторая подсистема защиты — «антидамп». Как я писал выше, приложение, защищенное с помощью Apple DRM, на старте вычитывает свои зашифрованные ключи и после этого загружается в память незашифрованным. В случае с Kali все сложнее, потому что благодаря Kali приложение в памяти фактически никогда не является цельным, исполняемый код (не исходный код — об этом ниже) программы проходит через различные участки, где он вначале модифицируется, а затем пересобирается обратно, и все это завязано на проверку целостности защиты, поэтому без нее, даже если получить «слепок» памяти (который, скорей всего, будет сильно испорченным), программа целостно не соберется.
Третья важная подсистема Kali (я ее уже упомянул выше) — это проверка целостности защиты приложения в целях обнаружения попыток ее взлома. Она состоит из трех компонентов, поочередной проверки различных уровней — проверки самой себя, проверки приложения и проверки различных элементов приложения. Для обеспечения успешной работы последнего компонента в приложение случайным образом внедряются различные проверочные модули, которые и отлавливают любое вмешательство в действия защиты.
Таким образом, благодаря тесному взаимодействию трех подсистем, достигается определенная непробиваемость системы, по крайней мере, с первого наскока. Неудивительно, что хакеры, участвующие в создании инструмента для взлома под названием Crackulous, пощупав iPref с защитой, сказали, что «The protection actually doesnt look bad. On first look, I would say there wont be a crack for that for some time.» («Защита, вообще-то, выглядит неплохо. На первый взгляд, я бы сказал, что какое-то время ее не взломают»).
Но надо также помнить, что невзламываемых систем не бывает — все, что написано одним человеком, другим может быть взломано. Поэтому мы прекрасно понимаем, что рано или поздно появится какой-то гений-подросток, у которого слишком много свободного времени, и он таки что-то наковыряет и взломает Kali (может быть). Именно поэтому код модулей защиты — полиморфен, то есть он периодически меняется. Имеется в виду, что для различных приложений в разные периоды времени могут быть использованы различные подходы в кодировании, что приведет к тому, что создать автоматический Kali-Crackulous будет если не невозможно, то крайне сложно.
Теперь что касается взаимодействия Kali и разработчиков сторонних приложений, как происходит процесс внедрения защиты. По этому поводу тоже было много воплей, что, де, ripdev хочет получить доступ к исходным кодам всех программ. Это не так — Kali не работает с исходным кодом приложения. Написав свою программу, ее разработчик создает релизную версию для ее закачки в App Store, приходит к нам на сервер и закачивает на него приложение (всё это происходит в автоматическом режиме, как часть процесса построения приложения в Xcode).
На сервере приложение обрабатывается скриптом, который создает из готового приложения защищенную версию, добавляя к исполняемому коду приложения код защиты, и после этого разработчик получает готовую версию, которую можно подавать в App Store. Такое «завернутое» в Kali приложение прекрасно проходит проверку в App Store и становится доступным покупателям.
Еще одна тема для беспокойства, которую неоднократно высказывали в обсуждениях Kali заинтересованные лица — это поведение приложения на телефоне пользователя. В частности, многих интересовало, «стучит» ли Kali куда-то на удаленные сервера, проверяя лицензионность приложений. Нет, Kali работает в абсолютно автономном режиме, для работы приложения не требуется подключение к интернету, и никакой передачи данных (а тем более — конфиденциальных данных пользователя) приложение с Kali не осуществляет.
Более того, никаких целенаправленных действий при обнаружении взлома Kali тоже не делает — она не наносит вреда ни данным пользователя, ни его телефону. Да и пользователь (легитимного приложения, приобретенного в App Store) никогда и не узнает, что в его приложении есть какая-то там защита, для него это все выглядит абсолютно прозрачно, точно так же, как и раньше.
[ad#intext-inside]
Ну и последняя тема, волновавшая потенциальных заказчиков такой системы — а что будет в случае успешного взлома Kali? Соглашение, которое разработчики подписывают при использовании Kali, гласит, что сервис предоставляется без гарантий 100% защиты от взлома, да и кто ее согласится дать? Даже разработчики защиты для игрушек делают ее с обещанием, что она продержится «хотя бы два дня после релиза» (по крайней мере, они на это надеются). Мы же точно можем обещать, что если Kali для какого-то конкретного приложения взломают — мы обновим систему и следующую версию приложения можно будет упаковать в обновленную Kali, на которую хакерам опять потребуется время и силы. А разработчики смогут с помощью новых возможностей привлекать пользователей на более поздние версии приложений — ведь их время не будет тратиться на то, чтобы придумать, как защититься от пиратов.
Победит ли Kali пиратство? Нет, конечно, мы на это и не рассчитываем — ведь понятно, что не все разработчики согласны разглашать свои продажи и к тому же отдавать процент с полученных денег. Поэтому будет достаточно много приложений, которые по-прежнему можно будет взламывать и распространять по интернету. Пока что можно сказать, что первые приложения с Kali уже ушли в App Store и скоро там появятся — к сожалению, мы не можем раскрывать названия этих приложений по просьбе заказчиков. Но, по крайней мере, тот факт, что мы не сидим сложа руки, и не надеемся на то, что «пиратство — это как реклама приложения», нам очень сильно нравится. А еще параллельно Kali помогает другим разработчикам, и мешает пиратам — есть в этом какое-то странное удовольствие 🙂

49 thoughts on “Как работает Kali AP

  1. хмм. Зря ты так поддерживаешь ripdev. Всем давно уже известно кто они, что они. Тебе тем более.
    Теперь получается пираты против пират?

      • Ну тебе ли не знать о заявлении Apple касательно jailbreak — и тебе ли не знать на чем ripdev заработал “стартовые”.
        Мы конечно привыкли к подобным оборотам, но лицемерие – это совсем другое. Хоть себя бы не обманывали.

        • Дебаты по законности джейлбрейка не закончены. Точка зрения Эппл – это точка зрения корпорации, но она противоречит “общественному” мнению.
          Мы “заработали” стартовые выпустив первую неЭппловую бесплатную русскую клавиатуру. В разработке джейлбрейка мы участия не принимали (хотя жаль – интересно).
          И я вас помню – и ваше лицемерие тоже. И, пожалуйста, не обманывайте не себя – вы в курсе, не обманывайте и не путайте других.

          • т.е. хотите сказать, что “этой самой русской клавиатурой” вы не продвигали джейлбрек?
            Косвенно вы на нем и зарабатывали, заставляя и уговаривая безответственных делать этот самый взлом.
            Может, по поводу apple я и идеалист, но с моими доводами вам и в прошлые разы было крайне сложно спорить, в связи с чем, вам пришлось употреблять множество оскорблений и даже пришлось перейти на “ты”, хотя доводы так и не были оспорены.

          • Мы никогда никого не заставляли и не уговаривали. Найдите хоть один мой пост по “уговорам”.
            Заработок на бесплатной клаве? Вы бредите.
            Точно так же предоставьте пожалуйста ссылку на мои оскорбления вас.

          • Уже забыли места нашего общения? ЛС форума, где меня забанил ваш товарищ за недружественные высказывания и aim.
            в остальном, думаю, я был понят. Если не вами, то другими читателями.

          • Это весело – вас забанил не я, за ваши “недружественные” высказывания, АИМ не со мной, поругались в ЛС…. У вас температура.

        • Мне знать о заявлении Apple о jailbreak, но мне также знать, что по этому поводу думают такие уважаемые компании, как, например, Skype и Mozilla. и я свое мнение относительно джейлбрейка уже неоднократно высказывал — пока не будет альтернативы App Store, то JB is the way to go. Я бы посмотрел на тебя, если бы вдруг оказалось, что ты софт на Мак можешь поставить только из App Store, и versiontracker/macupdate/piratebay внезапно перестали существовать. ripdev не зарабатывал деньги на jb как таковом, а на продукте, который можно было ставить на jb телефон — и тогда на это как-то мало кто жаловался, когда не было официальной локализации и клавиатуры — все юзали и спасибо говорили (потому что альтернативы не было). так что не стоит сейчас выходить и рвать на себе рубашку с видом “борец с джейлбрейком”. и для тех, кто до сих пор не прочитал статью про пиратов, повторю: jailbreak НЕ РАВНО пиратство.

  2. Выходит разработчик воспользовавшийся вашими услугами выкладывает в аппстор приложение подписанное третьей стороной и модифицированное третьей стороной. Кроме того что это не секюрно (никто не может сказать что именно вы туда встроили), это еще и наверняка нарушает лицензионные соглашения.

    • приложение подписывается подписью владельца _после_ того, как в него была внедрена Kali, так что в App Store подается правильно подписанное приложение, и никаких нарушений лицензионного соглашения нет.
      А насчет того, “что мы туда встроили” — а что, мы должны каждому разработчику выкладывать детальную информацию по алгоритму защиты? Мы приложение защищаем, при этом никакой утечки информации из приложения нет — в чем тут несекьюрность?

      • т.е. source не виден? Не раскрывается перед ripdev’ом?
        Я вот не могу заручится, что он не будет использоватся некоторыми представителями команды для собственной выгоды.

        • Опять передергиваете – код нам не виден. И мы никогда не использовали чужих работ – вы это тоже знаете. И вот вашего ручательства точно никто не спросит – вы для всех аморфный yeleleo – никому неизвестный передергиватель и ни за что никогда не отвечаете – даже за собственное вранье.

          • Да, вы сразу поняли о ком речь.
            Не оправдывайтесь – выглядите виноватым. Сколько лет, а так и не научились хотя бы скрывать хамство – стыдно!
            А чужие работы очень даже используете – был на форуме(в т.ч. и на хакинтоше) с самого начала и помню, что это совсем не вы вышли на методику руссификации, тогда еще не руссифицированного телефона.
            А обо мне лучше молчите – во-первых я редко что обещаю, а во-вторых – если обещаю, то и ручаюсь.
            Слова о моем вранье от вас слышать просто смешно, не говоря уже о том, что безосновательно.

          • Ну тут оправдываетесь вы а не я. Конечно о русификации лучше всего знают на хакинтоше – это основной форум по русификации приложений в мире. И я писал не о русификации а о клавиатуре. Из нее и появились практически все неЭппловые национальные клавы.
            Первый перевод на русский интерфейса сделал AlexeiSH в Питере. Первый полный перевод – alexxb5 – наш товарищ.
            Скрипт который во всем мире использовали для аплоада локализации в фон не наш (мы это никогда и не говорили), но мы его не использовали в своей версии.
            Обещания и ручания злопыхателя – ффффуф, не считайте читателей блога дураками – они обидятся….

          • нет кнопки “ответить” под каментом – пишу сюда:
            Не стоит передергивать. На хакинтоше выложили методику(!), именно методику. Вы только лишь поменяли буковки, согласно словарю.
            Про клавиатуру говорить не буду – тогда я уже за вами не следил, помню, первые клятвенные обещания сделать ее бесплатной и последующее изменение мнения — после этого для многих ripdev превратился из “робингуда” в клятво-отступника.
            Я прекрасно понимаю ваш принцип – его можно перефразировать так: “Проще просить прощения, чем разрешения” – иными словами вы хотите забыть о нарушениях своих сегодняшних принципов вами же, но год назад. Или два года.

          • На хакинтоше была выложена методика локализации на любой язык. Ее использовал AlexeiSH в первой локализации – она к нам не имеет отношения. На хакинтоше она была выложена именно для таких проектов. К установке локализации в РП она тоже не имеет отношения поскольку у нас свой вариант. Занимался и отвечал за локализацию Кирилл Мурзин – его многие знают по первым русским локализациям Эппловой оси более 12 лет назад. Тогда хакинтош еще был “в пеленках”.
            Клавиатура ВСЕГДА была бесплатной и была выложена отдельно. После версии прошивки 2.0 когда Эппл уже сделала ру клаву мы перестали ее поддерживать. Вложили в РП для себя и фанатов. Зачем вы врете?
            Мы принципы которые установили в сентябре 2007 года не нарушали и не будем.

          • yeleleo вы неадекватны – вы даже не смотрите и не помните что сами пишите.

          • ну да… “помню первые клятвенные обещания сделать ее бесплатной и последующее изменение мнения” – как-то так, пишу с телефона поэтому не могу копипастить, перечитайте свои коменты

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

          • @alexmak, каюсь, откоментил не прочитав. Основание есть в любом случае. Не в обиду тебе и не многим другим.

          • @yeleleo, бугага. действительно, зачем читать, если ты и так уже все знаешь? основания, видимо, появляются точно так же — не читая, не вникая, не понимая.

          • @alexmak, ты же понимаешь, что и без source можно много чего интересного из софтины достать. Поживем – увидим. Врямя рассудит.

          • @yeleleo, ты, пожалуйста, определись, а то тебя сначала сильно волнует, не получаем ли мы исходники, а потом, когда я сказал, что НЕ получаем, то, оказывается, это уже и неважно, потому что “много чего блаблабла”. если ты хочешь гадость сказать — то можно не придумывать причин, чего уж там.

          • @yeleleo, не ставлю перед собой столь низкие цели. Просто мне проще будет доказать свою правату post factum.
            Ты не поверишь, я буду рад, если спустя какое-то время все окажется иначе, чем я думаю.

    • в этом предложении, конечно же, речь идет о нескольких разных категориях, но все это основано именно на тех комментариях, которые мы уже получили от этих самых категорий.

  3. а как вы определяете размер лицензионных отчислений с авторов приложений, защищенных вашей защитой ? собираете статистику по запущенным приложениям ? через методы callhome ? какие есть гарантии что незащищенное приложение до того как вы его защитите или после не будет выложено в пиратских cydia/installer на радость других пользователей ? а также будет использоваться вами или иными лицами при выполнении платных процедур взлома программного обеспечения телефонов с установкой аля “пакет полезных программ за 1000руб”

    • Размер отчислений опубликован на страничке посвященной Кали на нашем сайте. Мы не собираем статистику вообще – нам ее предоставляет девелопер. Гарантий взлома нет – прочитайте внимательно статью Алекса, там все есть.
      Мы не получаем незашифрованных приложений (зашифрованных тоже не получаем), не оказываем платных услуг по взлому (с чего вы это взяли?) и не работаем с “пакетами полезных программ за 1000 руб.”

      • как не получаете приложений!? вы получаете файл приложений который не защищен, и именно его защищаете своей защитой.

        • Вы еще раз внимательнее прочитайте статью – нам не посылают файл – его сам девелопер пропускает через автомат на сервере. Мы не получаем никаких файлов.

          • ничто не мешает вашему “автомату” делать резервную копию незащищенного приложения на сервере, и гарантии имелись ввиду выше именно те что этот незащищенный файл будет потом где либо использован третьими лицами.

          • Уху. И ничего не мешает Livejornal потырить вашу личную информацию и использовать ее где-либо через третьих лиц….

    • ну вот зачем сразу думать плохо и пытаться в комментариях представить нас злодеями? (это я про callhome). Нет, подсчет проданных копий — на совести разработчика, который получает статистику от Apple и показывает ее нам. Отношения строятся на доверии — точно так же, как разработчик доверят нам, что мы не будем делать с его программой все те ужасы, что мы описали. Потому что достаточно сделать так с одной программой — и у нас больше никогда не будет заказчиков на Kali, зачем оно нам, спрашивается, если хотя бы немного логично подумать? И нет, никаких “пакетов полезных программ”. ненавижу такой negative thinking, не стоит думать о нас хуже, чем есть на самом деле, в пору выпускать статью “мифы о рипдев”.

      • причем исходный код тут, не в нем дело, я про то что программа которая будет отправлена на защиту – ее скопмилированный вариант может появиться в “сборнике лучших программ для iphone за 1000руб” который всякие умельцы будут ставить,
        поскольку в kali может быть такая утечка со стороны недобросовестного персонала имеющего собственные выгоды.
        мое мнение, что если какое отрицательное мнение у пользователей и возникло, то именно благодаря всяким умельцам которые ставят кучу взломанных программ при взломе терминала клиента в нагрузку.
        о том что это возможно – смотрите комментарий выше, на который я уже не смог ответить изза странных ограничений на комментиарии в вашем блоге. (если нет места их сворачивать вглубь, то что мешает их публиковать и не сворачивать в дерево, тоесть публиковать последовательно плоско)
        и обязательно выпускайте статью про мифы, поскольку все эти мифы были получены в результате чтения коммунити, форумов и прочих открытых источников – изза отсуствия официальной информации

        • @bad, Нет, с нашей стороны к серверу, “заворачивающему” программы в Кали, имеет доступ ограниченное количество людей, поэтому мы имеем основания полагать, что никакой утечки незащищенных программ не будет — как я написал выше, это было бы disaster для репутации компании, поэтому мы со своей стороны сделаем так, чтобы это не произошло. И вообще в ripdev “недобросовестного персонала”, способного целенаправленно повредить компании, нет. и Ripdev, естественно, никакого отношения к вышеобозначенным “умельцам” не имеет — это их собственное творчество, за которое я бы лично сильно-пресильно бил по голове. В свое время маковских дилеров били, может, и до этих барыг доберутся.
          что касается ограничений комментариев — так работает плагин, который обеспечивает вложенность комментов.
          Про мифы — посмотрим 🙂

          • @alexmak, но, лучше предусмотреть защиту от “дурака”, “больных звёздной болезнью”, и т.п. 🙂

        • @bad, вот теперь все на своих местах – на ровных местах форумов, если вы ним их перечислите то станет понятно что у вас все bad, потому что эти форумы специализируются и развились на популяризации хаков и краков. Я то думал что вам интересно, ан нет. Все проще. Хехехехехехе…..

  4. ВОПРОС “ЗНАТОКАМ” :
    Предложите альтернативные способы дополнительной защиты для приложений, кроме стандартной защиты предлагаемой AppStore?
    P.S. Вопрос не адресован разработчикам Kali.

    • @lykoz.livejournal.com/, незначительно — доп проверки несколько замедляют код, но это замедление не всё время и оно достаточно несущественно

Leave a Reply