动态链接库hook问题

如果一个动态链接库a 寄生在app1下, a里面调用了一个系统的动态链接库libMobileGestalt.dylib下的y方法, 我现在新编译一个动态链接库b hook了系统动态库libMobileGestalt.dylib下的y方法 要怎么操作才能让a库里面 调用libMobileGestalt.dylib里面y方法的时候调用到b里面hook之后重写的方法呢。还有就是b链接库里面,Bundles应该是a的bundleID还是app1的bundleID.写a的bundleID的时候发现 a链接库加载的时候 b 链接库都不会加载进。希望大神不吝赐教

b的目标应该是app1,你调试的时候注意看看b有没有被加载,是在a.dylib和libMobileGestalt.dylib的之前还是之后加载

这个是a的plist文件

assertiond
backboardd


当app1还没启动的时候a就已经加载了 并且后台还自己开启了任务并调用y方法,也就是说 app1还没启动的时候 a已经开始跑了libMobileGestalt.dylib的方法(不确定a是自己开了进程还是什么,但是log显示确实是这样),所以b的目标选app1就无意义了。这该怎么弄了

你把syslog贴上来看看,看看这几个dylib的加载顺序

加载顺序是先 b 再a ,系统加载信息太多我就不贴了。libMobileGestalt.dylib是在a里面通过dlopen动态加载的。a里面我是在%ctor里面dlopen了libMobileGestalt.dylib,然后dlsym到符号地址去执行MSHookFunction。 所以加载顺序是这样的 加载a,a的ctor里面加载libMobileGestalt.dylib , 加载b ,然后b的某一个方法里面去加载libMobileGestalt.dylib。