iOS12 非官方重签名工具研究遇到问题,想请教一下同道中人

貌似还有一个工具签名ipa的,叫做Cydia Impactor,没用过,只知道他在爱思助手给用户重签名Chimera iOS12的 越狱工具

感谢提醒,我去研究研究

一年。。。。:rofl:

我的意思是暂停了将近1年没有去管这事,最近才重新重视这个项目,现在我就是想看看有没有跟我一样在研究这块的人,学习下别人的思路:grinning:

非常感谢!非常感谢!非常感谢!

大概看了一下

  1. reprovision只支持支持32位和64位 iOS 9~11.4 b3 的【越狱】设备。pass
  2. DerekSelander 的 dsresign 是调用mac环境下的标准codesign。pass
  3. inside-code-signing 这篇文章是详细介绍codesign内部原理,这些资料在我去年写重签名工具时早就翻烂了。
  4. 目前来看cydia impactor 好像可以参考一下。

非常感谢 @pengkeming@9BD83913 提供的信息!

大神有没有可以联系方式可否交流下

苹果的openssl采用的是自己开发的LibreSSL,和标准的openssl有差异,这种差异会不会导致触发ios12的检测机制从而判断为非官方codesign?

  1. 解答你这个疑问,其实是没差别的,就是openssl在生成CMS段的时候对于插入数据的方式很生硬
  2. Cydia Impactor 使用的也是 ldid 的源码,不过版本预估比你能下到的还超前

感谢 @Young 的回复!

这是ldid中采用openssl签名的代码片段:

    std::vector<const char *> args;
    args.push_back(_openssl_path.c_str());
    args.push_back("cms");
    args.push_back("-sign");
    args.push_back("-binary");
    args.push_back("-outform");
    args.push_back("DER");
    args.push_back("-md");
    args.push_back("SHA1");
    args.push_back("-signer");
    args.push_back(_cert_path.c_str());
    args.push_back("-inkey");
    args.push_back(_key_path.c_str());
    args.push_back("-in");
    args.push_back(in_file_path.c_str());
    args.push_back("-out");
    args.push_back(out_file_path.c_str());

    // Worldwide Developer Relations certificates.
    args.push_back("-certfile");
    args.push_back(_applecerts_path.c_str());
    args.push_back(NULL);
    execvp(_openssl_path.c_str(), (char **) &args[0]);

我也保留了原样不变,看命令行参数里是有CMS的,但不知道为啥这样签出来的包iOS12就是不认呢?

我也试过Impactor,发现的确是可以在iOS12中安装的,但需要登录自己的appleId并且还要输入专用密码。我的理解是这样操作是利用了苹果支持临时开发证书的特性所以才能安装,如果用正规的开发者证书是否就可以正常签名安装呢? (关于Impactor的源码网上没有找到,最近正在逆向看里面的逻辑,希望能找到点线索)

既然Impactor也是ldid的源码,如果有更新的版本但没有放出来而已,说明已经搞定了ios12的签名机制,感觉还是有机会的 O(∩_∩)O~

全都一样,没区别

再次感谢你的回复!不过我对回复的理解有两种情况:

一是目前ldid最多只能达到 在ios12中安装重签名的APP需要登录自己的appleId并且还要输入专用密码 的程度?而不像官方codesign一样签完后直接安装运行的效果?

二是impactor实际上已经完全解决ios12重签名问题,但需要使用者自己提供签名证书,登录自己的appleId并且再输入专用密码 仅仅只是生成重签名证书而已,其它操作完全一样。

不知道你想表达的是哪种情况呢?如果是第二种的话,这就更加坚定我对impactor研究的决心。

免费个签,收费个签,企业签名,都是一样的签名方式,双重验证到一站式自动签名打包 ,客官了解一下

刚想到前段时间苹果强制双重验证耶,一站式应该不行吧

可以的,用impactor亲测,但要单独生成一个app安装密码就可以了

CMS的内容,你把它从二进制文件中截取出来,作为一个单独的文件,然后放到linux里,用openssl就能分析它的格式了。
mac也有Openssl,但是没有CMS的功能,所以要用linux上的

1 个赞

你重写的工具是开源的吗?:thinking:

厉害了,在看看…

也可以接入验证码,只是可能不那么稳定,验证码服务器经常嗝屁,倒是可以在一台绑定的机器上生成验证码

之前研究过一下下,可以只用验证码登陆一次之后再续命,只要把cookie抓出来然后保活就OK了

这样方式行不通吧,token时效性很短,基本上1分钟内就失效了,自动化流程不适用