Theos твики для классных методов сбой приложения - PullRequest
0 голосов
/ 14 января 2020

У меня есть приложение с обнаружением джейлбрейка при запуске, которое отображается как всплывающее окно 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
...