hook NSFileManager :: fileExistsAtPath(Jailbreak Tweak learning)

时间:2015-04-08 10:26:49

标签: ios objective-c jailbreak theos

我(试图)学习开发越狱调整。目的是摆脱应用程序中的越狱保护(拒绝使用Jailbreak)。

我已经反编译了应用,并将以下代码标识为"越狱检查":

  v24 = objc_msgSend(&OBJC_CLASS___NSMutableDictionary, "new");
  v0 = "defaultManager";
  v1 = objc_msgSend(&OBJC_CLASS___NSFileManager, "defaultManager");
  v2 = objc_retainAutoreleasedReturnValue(v1);
  v3 = (void *)v2;
  v23 = v2;
  v4 = (int)"stringWithFormat:";
  v5 = objc_msgSend(
         &OBJC_CLASS___NSString,
         "stringWithFormat:",
         CFSTR("/%@%@%@%@%@%@%@"),
         CFSTR("App"),
         CFSTR("lic"),
         CFSTR("ati"),
         CFSTR("ons/"),
         CFSTR("Cyd"),
         CFSTR("ia."),
         CFSTR("app"));
  v6 = objc_retainAutoreleasedReturnValue(v5);
  v7 = v6;
  v8 = objc_msgSend(v3, "fileExistsAtPath:", v6);
  if ( (unsigned __int8)v8 )
  {
    v9 = 1;
    v10 = 0;
    v21 = v8;
    v11 = 0;
    v22 = (void *)v8;
  }

应用程序检查/Applications/Cydia.app

是否存在

以下是Tweak.xm的代码:

%hook NSFileManager

- (BOOL)fileExistsAtPath:(NSString *)path{
    if ([path rangeOfString:@"cydia"].location == NSNotFound) {
        return %orig (path);
    } else {
        %log
        return FALSE;
    }
}

%end

虽然我可以从syslog中看到正在检查其他文件,但我没有看到我们正在检查/Applications/Cydia.app。这是我的代码的问题还是仅仅因为其他原因这个代码永远不会被执行?

1 个答案:

答案 0 :(得分:0)

您可以仅更改“越狱检查”方法而无所事事。

for