Вот в этом посте автор указал в качестве одного из применений Reveal App «знакомство с приложением, написанным другим разработчиком». Идея отличная, ведь, как известно, разобрать что-то чужое — отличный способ обучения. Изучать интерфейс можно чтобы принять чужую работу (если исходники по договору не положены), или отловить баг и отписаться автору приложения из App Store. Одно «но» — для подобных действий в приложение должен быть встроен Reveal SDK, что в production версии почти невероятно. И тут возникает причина поставить jailbreak, который позволит подгрузить нужный dylib (в нашем случае libReveal.dylib) с любым приложением (пока исключений не нашел). Решение не моё, оригинальный пост тут. Но у меня есть чем его дополнить.
Итак…
- Ставим jailbreak (в случае с iOS 7 чтобы встал новый jailbreak от http://evasi0n.com, пришлось сделать полный сброс, восстановление через iTunes и повторную установку jailbreak)
- Из Cydia ставим OpenSSH, MobileSubstrate, Respring (с дефолтными репозиториями должно поставиться, если не ставится — закройте Cydia, запустите заново, возможно, нужно чтобы она обновилась)
- Копируем либы 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
- Создаем в /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» — то, что интересовало. - Делаем Respring (через приложение Respring), запускаем приложение, которое хотели изучить и смотрим его в Reveal.
Метод работает для iOS 6, но не работает для iOS 5, т.к. она не поддерживается в Reveal.
P.S.: Подозреваю, что все, кому это было нужно, с данным способом знакомы. Но до выхода jailbreak для iOS 7 ковыряться в приложениях было не так интересно — для старых iOS почти все тропки уже исхожены.
Автор: SOb_S