如何使iOS应用程序篡改?

时间:2016-11-29 07:45:28

标签: ios security monitor tampering

我正在开发一个项目(移动应用),我需要监控对手的行动。所以,我的问题是我如何才能使iOS应用程序显而易见?

e.g。

  • 每当任何对手试图篡改代码时,系统都会提醒管理员注意这些操作
  • 并阻止对手
  • 如果用户尝试在rooted设备上安装应用,则系统可以检测到该。
  • 系统应该能够监控对手的行动。

我找到了像ProGuardSafetyNet这样的Android解决方案,但没有为iOS找到任何内容。

3 个答案:

答案 0 :(得分:8)

我在我的一个项目中使用了这个JailBreak detection

有了这个,你可以防止这种可能性。

    if ([DTTJailbreakDetection isJailbroken]) {

// your custom activity and business logic here
    }

另外,准确地说,您可以使用以下snippet

BOOL isJailbroken()
{
#if !(TARGET_IPHONE_SIMULATOR)

   if ([[NSFileManager defaultManager] fileExistsAtPath:@"/Applications/Cydia.app"] ||
       [[NSFileManager defaultManager] fileExistsAtPath:@"/Library/MobileSubstrate/MobileSubstrate.dylib"] ||
       [[NSFileManager defaultManager] fileExistsAtPath:@"/bin/bash"] ||
       [[NSFileManager defaultManager] fileExistsAtPath:@"/usr/sbin/sshd"] ||
       [[NSFileManager defaultManager] fileExistsAtPath:@"/etc/apt"] ||
       [[NSFileManager defaultManager] fileExistsAtPath:@"/private/var/lib/apt/"] ||
       [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"cydia://package/com.example.package"]])  {
         return YES;
   }

   FILE *f = NULL ;
   if ((f = fopen("/bin/bash", "r")) ||
      (f = fopen("/Applications/Cydia.app", "r")) ||
      (f = fopen("/Library/MobileSubstrate/MobileSubstrate.dylib", "r")) ||
      (f = fopen("/usr/sbin/sshd", "r")) ||
      (f = fopen("/etc/apt", "r")))  {
         fclose(f);
         return YES;
   }
   fclose(f);

   NSError *error;
   NSString *stringToBeWritten = @"This is a test.";
   [stringToBeWritten writeToFile:@"/private/jailbreak.txt" atomically:YES encoding:NSUTF8StringEncoding error:&error];
   [[NSFileManager defaultManager] removeItemAtPath:@"/private/jailbreak.txt" error:nil];
   if(error == nil)
   {
      return YES;
   }

#endif

   return NO;
}

此外,iOS中的Obfuscation - 目标C您可以使用此open source-libraryMethods & Classes

答案 1 :(得分:3)

除了检测越狱设备和混淆代码(如@itechnician提到的),你可以:

无论如何,所有这些都可以在越狱设备上轻松绕过(即使检查它是否已越狱)。最好的方法是使用多种技术,包括混淆,尽可能地使篡改(因此它不值得)。但我不确定你是否可以制作完全防篡改的应用程序。

您可能会发现这些链接很有用:

https://www.coredump.gr/articles/ios-anti-debugging-protections-part-1/ https://www.raywenderlich.com/45645/ios-app-security-analysis-part-1 http://resources.infosecinstitute.com/ios-application-security-part-31-problem-using-third-party-libraries-securing-apps/

这本书有点陈旧,但仍然有用:http://shop.oreilly.com/product/0636920023234.do

这是开源ObjC混淆器/字符串加密器:

答案 2 :(得分:3)

我认为你看起来像ixguard