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