微信注入动态库,重签名安装后发现Hook不生效问题

之前写了一个微信定位自定义的插件,在越狱机器上使用正常。最近在研究通过微信重签名,让插件在非越狱机器上使用。
操作基本是参考这篇文章来的http://www.jianshu.com/p/40d31abbed5e。重签名安装后发现hook没有生效,对这个问题没有什么头绪不知道是什么原因导致的。先说下我做了什么:
我自己写的dylib对CydiaSubstrate有依赖,所以我注入了两个动态库(libsubstrate.dylib和自己写的dylib)到WeChat可执行文件。按道理如果动态库没有注入成功,微信启动应该是会闪退的,可是微信能正常使用,说明是有加载到的。我自己的猜测是libsubstrate.dylib这个库没有起作用,到底是注入的方式不对,还是库本身的原因?希望各位高手指点指点。

下图是用MachOView查看可执行文件内添加进来的动态库:


另外使用otool -L命令发现libsubstrate.dylib本身就对CydiaSubstrate有依赖,这个是不是也说明libsubstrate.dylib是有问题的?

对CydiaSubstrate有依赖为啥就是有问题?

我是对此有不理解的地方,那篇文章说的是:由于自己的dylib对CydiaSubstrate有依赖才需要引用libsubstrate.dylib来解决。那libsubstrate.dylib本身又对CydiaSubstrate有依赖是不是有点矛盾?

重新尝试了几次后问题解决了,问题应该是出在注入dylib到可执行文件这个步骤。1、libsubstrate.dylib不需要注入只需要拷贝到与可执行文件同级目录下。2、使用insert_dylib工具注入自己写的dylib时,二进制文件的路径不应该是全路径而是相对路径。

是这样的。theos可以编译不依赖substrate的tweak,我将近一年前就在论坛内分享过 http://bbs.iosre.com/t/theos-dylib/4327