有没有办法以编程方式将我的iPhone恢复到出厂设置?

我正在开发一个越狱的应用程序,我不在乎它是否被应用程序商店拒绝。我已经找到了一种方法来完全消灭我的iPhone使用这种方式有没有办法以编程方式完全消灭iPhone数据? 然而,这种方法存在问题。它使我的iphone毫无价值,我必须使用iTunes恢复它。 我只是想以编程方式恢复我的iphone。任何人都可以帮我吗?

SpringboardServices私有框架中有一个私有API SBDataReset。 它会擦除所有数据。

您可以检查以下代码 ,例如如何使用它。

使用此API的应用程序应具有“com.apple.springboard.wipedevice”权限。

BTW。 另一种选择是使用MDM协议。 它有一个擦除命令。 但是,它需要更多的机器(MDM服务器,注册用户)。

更新1

看起来链接中的示例代码已过时。 我查看了偏好设置以及其他一些使用SBDataReset的iOS软件,看起来新的参数被引入SBDataReset。

试试下面的代码(对不起,我现在没有越狱的iOS设备,所以我不能自己尝试)

#import  #import  #include  #include  // Framework Paths #define SBSERVPATH "/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices" #define UIKITPATH "/System/Library/Framework/UIKit.framework/UIKit" #define WIPE_MODE_NORMAL 4 int main(int argc, char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Fetch the SpringBoard server port mach_port_t *p; void *uikit = dlopen(UIKITPATH, RTLD_LAZY); int (*SBSSpringBoardServerPort)() = dlsym(uikit, "SBSSpringBoardServerPort"); p = SBSSpringBoardServerPort(); dlclose(uikit); // Getting DataReset proc void *sbserv = dlopen(SBSERVPATH, RTLD_LAZY); int (*dataReset)(mach_port_t* port, int wipeMode) = dlsym(sbserv, "SBDataReset"); dataReset(p, WIPE_MODE_NORMAL); dlclose(sbserv); [pool release]; } 

请注意,SBDataReset函数有第二个参数。

看起来4是普通擦除模式,6是砖擦除模式。

免责声明此代码按原样提供。 我不知道如果在砖块模式下擦除设备将会发生什么。

Interesting Posts