У меня есть приложение с обнаружением джейлбрейка при запуске, которое отображается как всплывающее окно UIWindow _isConstraintedByScreenJail
Я нашел правильный метод, основанный на трассировке frida, и добавил его в свой твик. Твик прекрасно работает и устанавливается, но я не уверен, срабатывает он или нет. Я добавил UI Alert, чтобы увидеть, отображается ли его правильный метод.
frida-trace
-[UIStatusBarWindow _isConstrainedByScreenJail]
-[UIWindow _isConstrainedByScreenJail]
-[UIWindow _isConstrainedByScreenJail]
-[BcomiPadAppDelegate setJailBroken:0x1]
+[BSCheckForNotAllowedDevice isJailBroken]
+[BSCheckForNotAllowedDevice showNotAllowedAlert:0x102a18a70]
| +[BSCheckForNotAllowedDevice reason]
бункерный вывод для структуры метода для обнаружения джейлбрейка:
/* u/class AppDelegate */
-(void)setJailBroken:(bool)arg2 {
*(int8_t *)(int64_t *)&self->_jailBroken = arg2;
return;
}
/* u/class BSCheckForNotAllowedDevice */
+(bool)isJailBroken {
tweak.x
%hook BcomiPadAppDelegate
-(void)setJailBroken:(bool)arg2 {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Hello World!"
message:@"This is my first tweak and I'm happy!"
delegate:nil
cancelButtonTitle:@"Youhou!"
otherButtonTitles:nil];
[alert show];
%orig(NO)
return;
}
%end
%hook ANSMetadata
-(bool)computeIsJailbroken {
return NO;
}
-(bool)isJailbroken {
return NO;
}
%end
РЕДАКТИРОВАТЬ: начальный UIAlert срабатывает, и теперь это FALSE setJailBroken:0x0
, однако метод класса и другие isJailBroken вылетает приложение. Есть 2 других метода isJailBroken, но в разных классах. Только при этом происходит сбой приложения.
/* u/class BSCheckForNotAllowedDevice */
+(bool)isJailBroken {
перехват этого метода приводит к тому, что приложение обрабатывает sh
%hook BSCheckForNotAllowedDevice
+(BOOL)isJailBroken{
return NO;
}
%end