两个插件同时hook一个APP,一个插件可以hook另一个插件的方法吗?

同标题,求大佬解答! 如果能hook,有什么注意点呢?

可以 黑吃黑就是这样干的

1 Like

可以,先进先钩,后进后钩。

CY是根据插件开头字母顺序加载

后进的勾先进的?还是 先进的勾后进的呀? 菜鸡求解答

1 Like

要不然你举个栗子,具体问题具体分析吧。

B 插件 想hook A插件 不让弹这个框。 名字该怎么取呀。

让自己的插件先进去,把A插件的hook操作扼杀在萌芽里。

1 Like

感觉不大对劲啊,我不想hook APP 的方法。就想hook A插件的方法呀,扼杀了 还咋hook啊

你要搞清楚一点,让自己的插件先进去,是为了执行替换,并不是执行真正的目标函数。先让自己的进去,是为了屏蔽A插件,这不是很容易理解吗

那怎样让自己的插件先进去呢?

去学习一下

  1. mach-o根据自己的Load command怎样去确定加载动态库的顺序?

  2. 几种不同的入口函数顺序?

  3. cydia substrate是怎样确定动态库加载顺序?

1 Like

感谢指导!!

1 Like

还有一种办法让A先进去 a执行之前 把自己插件切断a的hook链

ZZZZ.dylib

1 Like

行之有效哦

如果目标A.dylib中有一个TestObj类,且在A.dylib的构造函数(形如_logosLocalCtor_17e62166)中就调用了TestObj类的方法1

如果此时我们编写了一个动态库叫zzzz.dylib 去hook A.dylib中的TestObj类的方法1,此时好像没有什么作用啊,[TestObj 方法1]已经早早就执行完毕了,hook不住啊!!!

说白了就是想后来者居上,看看A.dylib的代码是写在 __attribute__修饰的constructor中还是+load中,如果是__attribute__中,可以把你的代码写在自己动态库的+load中,+load早于constructor方法执行。如果A.dylib也是写在+load中 那就otool命令看看 A.dylib是不是插入在目标App最后一个,是的话就干掉A的,添加自己的再添加A。

我这里目前关注是越狱环境下,动态库都是放在/Library/MobileSubstrate/DynamicLibraries/

“如果是__attribute__中,可以把你的代码写在自己动态库的+load中,+load早于constructor方法执行” 这个方法也尝试过,换句话说就是让自己写的dylib优先A.dylib加载执行,但会有问题,自己的这个dylib加载执行的时候 A.dylib都还没加载,hook A.dylib中的 [TestObj 方法1] 根本就hook不到,因为内存中都找不到这个TestObj类 应该是这个原因失效的,我在lldb中也尝试过提前断点TestObj类 也是断不到

1 Like

学习了