- 参照狗神的帖子,mach-o文件的load command加上了自己的dylib路径,如下:
- tweak的代码如下:
- 结果dylib的构造方法没有调用。。。请问有人遇到这样的问题吗?
- 注:root daemon权限
确定dylib被加载了吗?
谢谢狗神。。。看上去没有加载,我该如何排查?
你这下把我问住了
如果是我,可能会看看log里有没有什么线索,再把daemon给reload一下试试
多谢狗神。。
ps: 我是你的粉丝
1 个赞
我这里提供下我的想法和思路:
- 看下日志
zzw===*
检查是否加载了dylib - 然后我看了下你用了
MSHookFunction
是否把substitute.dylib
也加入了LC之中 - 最后还有种办法是直接用lldb调试器挂上daemon,然后直接在调试器里面加载dylib测试
1 个赞
感谢解答。。。
- zzw===*日志未打印,dylib应该没有加载。
- substrate.dlib没有加入LC中,是daemon特殊需要这样做吗?
- 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,不生效。。。是啥原因?