Pull to refresh

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

Reading time2 min
Views3.7K
Вот в этом посте автор указал в качестве одного из применений 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. ?
Tags:
Hubs:
+5
Comments10

Articles