2013-05-07 10 views
5

pomocą polecenia otool -tV SpringBoardServices, jestem w stanie uzyskać funkcji C w SpringBoardServices ramowej binarny ..iOS SpringBoardServices dostać UIApplication

widzę SBFrontmostApplicationDisplayIdentifier które dadzą mi identyfikator z najważniejszych aplikacji. Czy ten id może być użyty do uzyskania UIApplication? Ostatecznie chcę uzyskać najwyższy widok, który pochłania zdarzenia dotykowe i jego typ, jak UIButton itp.?

Każda pomoc doceniona.

+0

Jak daleko się posunąłeś? –

Odpowiedz

3

To nie jest prawdziwa odpowiedź, ale raczej kilka myśli na ten temat.

C vs Cel C API

  • Ogólnie rzecz biorąc, istnieją dwa rodzaje API: C API (np SBFrontmostApplicationDisplayIdentifier) ​​i celem C API.

  • Wierzę, że wszystkie C API działają tylko z typami pierwotnymi (łańcuchy, liczby całkowite i tak dalej). Nie widziałem żadnego C API, które zwraca obiekt C celu.

  • SBFrontmostApplicationDisplayIdentifier zwraca id (który jest tylko ciągiem znaków). Jako przykład "com.apple.Preferences" w aplikacji Preferencje.

  • wierzę, będziesz miał więcej szczęścia szuka Objective C API, która zwraca wszelkiego rodzaju obiektów

Inter-proces komunikacji

  • Nie ma prosty sposób na transfer obiekt (szczególnie złożone obiekty wskazujące na inne obiekty, które wskazuje na inne obiekty itd.) między procesami. Jeśli się nad tym zastanowisz, obiekt UIApplication może odwoływać się do połowy aplikacji. Jedynym sposobem jest serializacja WSZYSTKIEGO na jednym końcu i deserializacja na innym końcu.

  • Biorąc pod uwagę problemy związane z serializacją obiektów, większość API, które wymaga komunikacji między procesami, przekazuje sobie nawzajem proste struktury z najbardziej krytycznymi informacjami. I widziałem dokładnie ten wzorzec podczas inżynierii wstecznej iOS plików binarnych.

UIApplication

  • Zgaduję że UIApplication nigdy obiektów pozostawia miejsca procesu. Faktycznie istnienie klasy SBApplication (odziedziczonej po SBDisplay) w Springboard jest swego rodzaju pośrednim potwierdzeniem tego.

Pomysły

  • spróbować spojrzeć na BackboardService

  • Spróbuj przejrzeć wszystkie API w SpringboardService

  • chciałbym spróbować straszyć na cokolwiek związanego z wyświetlacza.

P.S. Chciałbym zobaczyć to rozwiązanie, ponieważ nie znam żadnych interfejsów API, które dają wgląd w interfejs aplikacji innej firmy.

+0

Witaj, Victor - Czy kiedykolwiek używałeś GSEventRegisterEventCallBack? Czy to może być pomocne w uzyskaniu zdarzenia, gdy widok zostanie dodany lub usunięty? Wiem, że to jest trochę niejasne pytanie, ale nie mogłem uzyskać działa GSEventRegisterEventCallBack, więc pytam, czy go używasz? – Jailbroken

+0

Nie użyłem tego. Powiedziałbym, że to naprawdę ciekawy kierunek badań. Dodałem informacje, które znalazłem dla 10-15 minut inżynierii wstecznej w osobnym pytaniu, które napisałeś. Czy testujesz go również na prawdziwym urządzeniu lub Symulatorze? –