Ios13如何注入dylib到launchd进程

IOS13系统下,奥德赛越狱。

执行cynject注入自己的dylib(空dylib未链接任何三方dylib)失败。

但是注入到其他一些进程能成功,比如installd。

通过观察launchd进程加载到模块,似乎奥德赛本身也未注入任何dylib到launchd进程。

我查看了electra在ios12的越狱代码是会注入dylib到launchd进程的。

(所以好奇奥德赛ios13是如何拦截posix_spawn而加载tweak呢)

请问哪位大佬知道为何ios13是这种情况吗

1 逆向下substrate,虽然有混淆
2 参考下 substitute 源码

坐等大佬解决后分享方法

虽然我不知道是怎么越狱的,但是我猜这种形式是不能注入的。因为我们现在使用的,是越狱的后天条件,要注入launchd,需要先天条件,起码与substrate是同一级别的,这是一个逻辑悖论。所以,如果不会自己捣鼓越狱漏洞,应该是不可能了。

1 Like

目前研究的情况来看, 苹果应该是从ios12开始, 对launchd和amfid这两个进程做了特殊防护, 我看chimera在ios12上面的越狱源码, 其绕过签名检测也不是像在ios11上面那样直接注入dylib到amfid进程, 而是把amfid进程的校验函数改成一个非法值(比如0x12345), 然后设置了amfid进程的异常端口, amfid进程校验程序签名的时候, 会抛出异常, 然后chimera的amfidebilite进程会捕获到这个异常, 从而控制amfid进程的签名校验流程.
在ios13上面的奥德赛越狱, 也有这个amfidebilite进程, 虽然奥德赛没有开源, 但是通过IDA逆向分析, 基本上和ios12上的一致.
而奥德赛在ios13上面还会有一个单独的jailbreakd进程, 通过IDA逆向分析其部分流程和amfidebilite类似, 应该也是通过类似的方式控制了launchd进程的posix_spawn.

啊哈, 我开始在冷星的github上看只有electra和chimera, 我以为odyssey没有开源.
3Q我先瞧瞧

这个开源里面似乎并不包含jailbreakd这个bin的源码

1 Like