Есть ли способ программно восстановить заводские настройки моего iphone?


Я разрабатываю для взломанного приложения, и мне все равно, если его отклонит магазин приложений.Я нашел способ полностью стереть мой iphone, используя этот способ Есть ли способ полностью стереть данные iPhone программно? .Существует проблема с этим методом however.It делает мой iphone бесполезным, и я должен восстановить его с помощью itunes. Я просто хочу восстановить свой iphone на заводе программно.Кто-нибудь может мне помочь ?

1 4

1 ответ:

Существует частный API SBDataReset в SpringboardServices private framework. Он стирает все данные.

Вы можете проверить следующий код, например, как его использовать.

Приложение, которое использует этот API, должно иметь "com.яблоко.плацдарм.wipedevice " право на работу.

Кстати. Еще одна альтернатива - использование протокола MDM. Он имеет команду очистки. Однако для этого требуется гораздо больше машин (MDM-сервер, регистрация пользователя).

Обновление 1

Похоже, что пример кода в ссылке устарел. Я заглянул в Настройки и пару других частей программного обеспечения iOS, которое использует SBDataReset, и похоже, что новый аргумент был введен в 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-кирпичная очистка режим.

Отказ от ответственности настоящий Кодекс предоставляется как есть. Я понятия не имею, что произойдет, если устройство будет стерто в кирпичном режиме.