我们使用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一样声明一个字典或者数组之类的容器呢?如果可以的话该怎么创建呢,代码格式是怎么样
感谢,有思路了。
哈。RevealLoader也是这样。
PreferencesBundle的话你可以里面的代码里修改plist
在tweak的代码里面可以修改,但是在沙盒下的app修改不了,可能权限的缘故吧
不要修改filter,这是一种不好的做法,虽然也可以达到目的
Nah每个app都要注入我觉得才是不吼的
嗯,知道了,我现在是按照你的说法去做的,系统生成的文件还是不动它吧,谢了
我现在改为hook类了
请问下tweak在系统哪个路径下可以写入数据呢?不在任意一个沙盒里。我写了好多都是没权限写入失败的
试试
/var/mobile/Library/Preferences/
嗯,NavilleZhang今天也是说这路径可以写入,我也试了确实可以,真的感谢二位,哈哈
Applist 是不是干这个的啊,我之前看过。但是没写出demo出来。
是的.
Demo:https://github.com/Naville/WTFJH/blob/master/layout/Library/PreferenceLoader/Preferences/WTFJH.plist
狗神,这个支持ios9么
你问我资次不资次,我说资次