Hook root daemon失败

  1. 参照狗神的帖子,mach-o文件的load command加上了自己的dylib路径,如下:
    image
  2. tweak的代码如下:
  3. 结果dylib的构造方法没有调用。。。请问有人遇到这样的问题吗?
  4. 注:root daemon权限

确定dylib被加载了吗?

谢谢狗神。。。看上去没有加载,我该如何排查?

你这下把我问住了:cry:
如果是我,可能会看看log里有没有什么线索,再把daemon给reload一下试试

多谢狗神。。
ps: 我是你的粉丝:upside_down_face:

1 个赞

我这里提供下我的想法和思路:

  • 看下日志zzw===*检查是否加载了dylib
  • 然后我看了下你用了MSHookFunction 是否把substitute.dylib也加入了LC之中
  • 最后还有种办法是直接用lldb调试器挂上daemon,然后直接在调试器里面加载dylib测试
1 个赞

感谢解答。。。

  1. zzw===*日志未打印,dylib应该没有加载。
  2. substrate.dlib没有加入LC中,是daemon特殊需要这样做吗?
  3. lldb调试已尝试。。。

是因为你用了MSHookFunction,所以需要添加进去。不过你的zzw===*都没打印,我感觉是你LC添加的问题。你看下这个进程的所有日志,搜下和这个dylib相关的看下加载的时候报什么错,以及其他信息。

另外lldb调试器已尝试是什么意思?如果调试器中加载能够成功hook的话,那么你就重点看下LC的添加问题。

1 个赞

substrate.dylib这个不是会在theos编译的时候一起打到我的dylib里面去吗?还需要额外在LC添加吗?

theos编译的时候只会在dylib中增加一个LC,里面指定了substrate.dylib的路径。你可以看下这个路径是否正确。
另外我个人建议最好还是上调试器,在里面看很简单就能知道哪些模块加载情况,以及其他操作。

多谢多谢,豁然开朗。。。

原因找到了,由于daemon是自动launch的,而我在LC注入的dylib是随着daemon打包成deb一起安装的,所以daemon启动的时候,找不到我的dylib,需要重新launch才行。。。

狗神,我在root App的dylib里面,尝试reload daemon,不生效。。。是啥原因?
image