Загрузка Reveal SDK с любыми приложениями

    Вот в этом посте автор указал в качестве одного из применений Reveal App «знакомство с приложением, написанным другим разработчиком». Идея отличная, ведь, как известно, разобрать что-то чужое — отличный способ обучения. Изучать интерфейс можно чтобы принять чужую работу (если исходники по договору не положены), или отловить баг и отписаться автору приложения из App Store. Одно «но» — для подобных действий в приложение должен быть встроен Reveal SDK, что в production версии почти невероятно. И тут возникает причина поставить jailbreak, который позволит подгрузить нужный dylib (в нашем случае libReveal.dylib) с любым приложением (пока исключений не нашел). Решение не моё, оригинальный пост тут. Но у меня есть чем его дополнить.

    Итак…
    1. Ставим jailbreak (в случае с iOS 7 чтобы встал новый jailbreak от http://evasi0n.com, пришлось сделать полный сброс, восстановление через iTunes и повторную установку jailbreak)
    2. Из Cydia ставим OpenSSH, MobileSubstrate (с дефолтными репозиториями должно поставиться, если не ставится — закройте Cydia, запустите заново, возможно, нужно чтобы она обновилась)
    3. Копируем либы Reveal на устройство (дефолтный пароль от root для свежепоставленного OpenSSH — alpine):
      $ scp -r Reveal.framework root@x.x.x.x:/System/Library/Frameworks
      $ scp libReveal.dylib root@x.x.x.x:/Library/MobileSubstrate/DynamicLibraries
      
    4. Создаем в /Library/MobileSubstrate/DynamicLibraries/ файл libReveal.plist и вписываем в него фильтр для запуска библиотеки (для этого удобнее подключиться через SFTP):
      { Filter = { Bundles = ( "com.apple.MobileSMS"; "net.whatsapp.WhatsApp" ); }; }
      
      Как написано тут, Bundles — массив, но если не будет работать, попробуйте оставить только одно имя бандла, как у автора оригинального поста. Самый простой способ получить имя бандла нужного приложения — завершить его и посмотреть вывод в Xcode (Organizer, устройство, Console). Увидите что-то вроде
      com.apple.launchd[1] (UIKitApplication:com.tapbots.Tweetbot3[0x3811][1141]) : (UIKitApplication:com.tapbots.Tweetbot3[0x3811]) Exited: Killed: 9.
      Тут "com.tapbots.Tweetbot3" — как раз имя бандла.

      Делаем Respring:
      $ ssh root@x.x.x.x killall SpringBoard
      
      запускаем приложение, которое хотели изучить и смотрим его в Reveal.
    5. ?
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 10

      +1
      И что, правда там что-то интересное?
        +1
        Там — это где? Замените на существительное и я смогу точнее ответить. В общем же случае можно утверждать, что почти в любом «там» есть «что-то» интересное.
          0
          В tweetbot3 например. Мне кажется что смотреть через revel на готовый UI без исходников, это как смотреть на выхлоп голого HTML — те же div'ы и все.
            0
            Именно в нем — не знаю, к примеру можно посмотреть конструкцию нижнего меню, там вроде dynamic items используются, я вот с ними еще ничего не писал. Tweetbot был взят для примера, первое что попалось в логе.
              0
              Ну вы же увидите квадратики вьюх и все. Вот была бы возможность на архитектуру их взглянуть…
                0
                Я увижу иерархию, типы объектов, параметры CALayer, возможно, по составу элементов пойму, кастомизировали контрол или нет. Если хочется большего, можно конечно получить набор заголовочных файлов сдампив приложение, но если задача сформулирована заказчиком «— Хотим как тут», возможно Reveal-а будет достаточно.
          0
          Было б интересно посмотреть, как устроена анимация вот в этом приложении
          itunes.apple.com/ru/app/duolingo-learn-languages-for/id570060128?mt=8
          когда нажимаешь на синий круг с яйцом.
            0
            Ну вот и посмотрите. Если напишите тут — будет совсем хорошо.
              0
              Купить Reveal, сделать джейл? Нет, спасибо.
          +1
          Люблю копаться в чужих программах, спасибо за топик!

          Only users with full accounts can post comments. Log in, please.