我开发一个应用程序越狱,如果它是由应用程序商店拒绝我不在乎。 我已经找到一种方法来彻底消灭我的iPhone使用这种方式有没有一种方法以编程方式彻底消灭iPhone的数据? 。 没有与然而,这方法的问题。 这让我的iPhone不值钱,我必须使用iTunes来恢复它。 我只是想恢复出厂设置我的iPhone编程。
Answer 1:
有一个在SpringboardServices私人框架私人API SBDataReset。 它抹布的所有数据。
您可以查看下面的代码 ,例如如何使用它。
使用这个API应该有“com.apple.springboard.wipedevice”有权工作的应用程序。
BTW。 一个更替代方法是使用MDM协议。 它具有擦除命令。 但是,它需要更多的方式机械(MDM服务器,注册用户)。
更新1
它看起来像在链接的示例代码已经过时。 我看着偏好和夫妇它采用SBDataReset的iOS软件的其他作品的,它看起来像新的说法被引入到SBDataReset。
试试下面的代码(对不起,我没有越狱的iOS设备,现在,所以我不能尝试对我自己)
#import <UIKit/UIKit.h>
#import <UIKit/UIApplication.h>
#include <dlfcn.h>
#include <stdio.h>
// 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是砖抹模式。
免责声明作为提供该代码。 我不知道,如果设备将在砖模式被消灭会发生什么。
文章来源: Is there a way to programmatically restore my iPhone to factory settings?