Meine Hauptfrage ist, wie kann ich eine private API-Funktion, die bereits existiert, aber in einer neuen Version von iOS geändert wurde, zurückentwickeln?IOMobileFramebufferGetLayerDefaultSurface funktioniert nicht auf iOS 9
Ich habe eine iOS-Anwendung erstellt, um den Bildschirminhalt mit IOSurface und IOMobileFramebuffer aufzuzeichnen. Die Hauptfunktionen, die der Framebuffer zum Öffnen verwendet, sind IOMobileFramebufferGetMainDisplay(connect)
und IOMobileFramebufferGetLayerDefaultSurface
.
Diese Funktionen sind seit der ersten Version der App verwendet worden, und sie haben auf allen Versionen von iOS 7 und 8 jedoch auf die neuesten iOS 9 Beta, die Beta 5 gearbeitet, funktioniert die Funktion IOMobileFramebufferGetLayerDefaultSurface
nicht Arbeit. Die Funktion gibt 0 nicht zurück, wie es sollte, wenn es den Framebuffer erfolgreich öffnet.
Dieser andere Benutzer auf StackOverflow scheint auch das gleiche Problem zu haben: IOMobileFramebufferGetLayerDefaultSurface function failed on iOS 9. Hier ist der aktuelle Code Wir haben ein Verweis auf IOMobileFramebufferConnection „_framebufferConnection“ genannt und ein IOSurfaceRef „_screenSurface“ genannt:
IOMobileFramebufferGetMainDisplay(&_framebufferConnection); IOMobileFramebufferGetLayerDefaultSurface(_framebufferConnection, 0, &_screenSurface;
Wie bereits erwähnt vor, diese perfekt funktionieren auf iOS 8.7, aber auf iOS 9, Die zweite Funktion stürzt ab. Ich habe auch die Binärdateien mit den Symbolen für beide Versionen angeschaut und verglichen. Der zweite Parameter des LDR unterscheidet sich in iOS 9 geringfügig von dem des iOS 8.4.1-Binärprogramms. Also, zurück zur Hauptfrage, wie kann ich Reverse Engineering IOMobileFramebufferGetLayerDefaultSurface
, oder sehen, wie in welcher Weise es tatsächlich auf iOS 9 geändert wurde?
welche ios9-version verwenden sie? –
iOS 9 Beta 5. Aber das gleiche gilt für alle iOS 9 Betas/Versionen. – Pyrology