Reveal App + jailbreak = друзья

в 15:33, , рубрики: Evasi0n, iOS, jailbreak, mobile development, reveal, Reveal App, разработка под iOS, метки: , , , ,

Вот в этом посте автор указал в качестве одного из применений 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, Respring (с дефолтными репозиториями должно поставиться, если не ставится — закройте 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]) <Notice>: (UIKitApplication:com.tapbots.Tweetbot3[0x3811]) Exited: Killed: 9.
    Тут «com.tapbots.Tweetbot3» — то, что интересовало.

  5. Делаем Respring (через приложение Respring), запускаем приложение, которое хотели изучить и смотрим его в Reveal.

Метод работает для iOS 6, но не работает для iOS 5, т.к. она не поддерживается в Reveal.

P.S.: Подозреваю, что все, кому это было нужно, с данным способом знакомы. Но до выхода jailbreak для iOS 7 ковыряться в приложениях было не так интересно — для старых iOS почти все тропки уже исхожены.

Автор: SOb_S

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js