关于如何实现动态hook想要的bundleId的问题

我们使用Theos搭建的Tweak项目的时候需要指定这个Tweak想要Hook的app,然后打包到手机上的时候,会在/Library/MobileSubstrate/DynamicLibraries/xxxxx.plist下描述所想hook的bundleId。但是如果我想动态的hook不同的bundleId那又该怎么办呢?比如我有一个app可以控制我的tweak所hook的bundleId,比如说这分钟我想hook app1,而下分钟我想hook app2,那么该怎么修改上面的plist呢,如果在app上面直接使用NSFileManager去操作那个plist的话,会发现是没效果的,但是该怎么实现动态hook不同的bundleId呢?

1 个赞

hook所有的bundle,然后在代码里加软开关:

%hook fooClass

- (void)barMethod
{
     if (shouldHook)
     {
          // Do something here
     }
    %orig;
}

%end

请问我该怎么指定hook所有的bundle呢?

还有请问一下,Tweak项目里面的.xm文件是否可以像OC一样声明一个字典或者数组之类的容器呢?如果可以的话该怎么创建呢,代码格式是怎么样

感谢:pray:,有思路了。

哈。RevealLoader也是这样。

PreferencesBundle的话你可以里面的代码里修改plist

在tweak的代码里面可以修改,但是在沙盒下的app修改不了,可能权限的缘故吧

不要修改filter,这是一种不好的做法,虽然也可以达到目的

Nah每个app都要注入我觉得才是不吼的

嗯,知道了,我现在是按照你的说法去做的,系统生成的文件还是不动它吧,谢了

我现在改为hook类了

请问下tweak在系统哪个路径下可以写入数据呢?不在任意一个沙盒里。我写了好多都是没权限写入失败的:joy::joy:

试试

/var/mobile/Library/Preferences/

嗯,NavilleZhang今天也是说这路径可以写入,我也试了确实可以,真的感谢二位,哈哈:joy::joy:

Applist 是不是干这个的啊,我之前看过。但是没写出demo出来。

是的.

Demo:https://github.com/Naville/WTFJH/blob/master/layout/Library/PreferenceLoader/Preferences/WTFJH.plist

狗神,这个支持ios9么

你问我资次不资次,我说资次