我的主要问题是,我如何反向工程一个已经存在但在新版本iOS中已被修改的私有API函数?
我创建了一个iOS应用程序来使用IOSurface和IOMobileFramebuffer记录屏幕内容。打开framebuffer的主要函数是
这些函数从应用程序的第一个版本开始就被使用,并且在所有iOS 7和8的版本上都可以正常工作。然而,在最新的iOS 9 beta(即beta 5)上,函数
StackOverflow上的另一个用户似乎也遇到了同样的问题:IOMobileFramebufferGetLayerDefaultSurface function failed on iOS 9。我们有一个名为“_framebufferConnection”的IOMobileFramebufferConnection引用和一个名为“_screenSurface”的IOSurfaceRef。以下是当前的代码:
我创建了一个iOS应用程序来使用IOSurface和IOMobileFramebuffer记录屏幕内容。打开framebuffer的主要函数是
IOMobileFramebufferGetMainDisplay(connect)
和IOMobileFramebufferGetLayerDefaultSurface
。这些函数从应用程序的第一个版本开始就被使用,并且在所有iOS 7和8的版本上都可以正常工作。然而,在最新的iOS 9 beta(即beta 5)上,函数
IOMobileFramebufferGetLayerDefaultSurface
不起作用。该函数没有返回0,当成功打开framebuffer时应该返回0。StackOverflow上的另一个用户似乎也遇到了同样的问题:IOMobileFramebufferGetLayerDefaultSurface function failed on iOS 9。我们有一个名为“_framebufferConnection”的IOMobileFramebufferConnection引用和一个名为“_screenSurface”的IOSurfaceRef。以下是当前的代码:
IOMobileFramebufferGetMainDisplay(&_framebufferConnection);
IOMobileFramebufferGetLayerDefaultSurface(_framebufferConnection, 0, &_screenSurface;
如前所述,这些在iOS 7-8上完美运行,但在iOS 9上,第二个函数会崩溃。我还查看了具有符号的两个版本的二进制文件并进行了比较。与iOS 8.4.1二进制文件相比,LDR的第二个参数在iOS 9中略有不同。因此,回到主要问题,我如何反向工程IOMobileFramebufferGetLayerDefaultSurface
,或者看看它在iOS 9上实际上是如何被修改的?