mikiyan1978’s 脱獄情報日記

脱獄に関する情報を発信します

rebootアプリの作成方法

Respringアプリに引き続き
起動するとreboot
するアプリを作っていきましょう。

コードは

#import "XXRootViewController.h"
#include <sys/sysctl.h>

//systemf
int systemf(const char *cmd, ...) {
    va_list ap;
    va_start(ap, cmd);
    NSString *cmdstr = [[NSString alloc] initWithFormat:@(cmd) arguments:ap];
    va_end(ap);
    return system([cmdstr UTF8String]);
}

@implementation XXRootViewController {
}

- (void)loadView {
    systemf("reboot");
}
@end

ほぼ同じですね。しかしここまではrebootしてくれません。
そこでこのアプリ自体に権限を与えてあげます。
Makefileの最後に

after-stage::
	$(ECHO_NOTHING)chmod 06755 $(THEOS_STAGING_DIR)/Applications/rebootapp.app/rebootapp $(ECHO_END)

これを追加してください。プロジェクト名がrebootapp
の場合です。
注意ですが下の画像の部分はスペースでは無くタブとなります。したがって上記のコードをコピペして下さい。

次にmain.mファイルを下記のように
setuid(0);
setgid(0);
を追加してください。

#import "XXAppDelegate.h"

int main(int argc, char *argv[]) {
    setuid(0);
    setgid(0);
	@autoreleasepool {
		return UIApplicationMain(argc, argv, nil, NSStringFromClass(XXAppDelegate.class));
	}
}

あとはビルドして完了です。