有没有办法,我的iPhone程序恢复到出厂设置?(Is there a way to program

2019-07-20 22:58发布

我开发一个应用程序越狱,如果它是由应用程序商店拒绝我不在乎。 我已经找到一种方法来彻底消灭我的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?