又尝试了一下,SIGKILL - CODESIGNING
跟root还是mobile貌似没关系。
我搞了个最简单的命令行程序,名叫hello
,以及一个最简单的tweak,名叫hello.dylib
,其plist这样写的:
{
Filter = {
Executables = (
hello
);
};
}
做的尝试如下:
- 直接运行:
./hello
,log显示hello.dylib并未加载,以mobile身份运行su mobile -c ./hello
,依然未加载 - 显式指定DYLD_INSERT_LIBRARIES方式运行
DYLD_INSERT_LIBRARIES=/Library/MobileSubstrate/DynamicLibraries/hello.dylib su mobile -c ./hello
,依然未加载 - 换成
DYLD_INSERT_LIBRARIES=/usr/lib/tweakloader.dylib su mobile -c ./hello
,模拟tweak的正常加载流程,依然未能被加载 - 用狗神提到的颅内炸弹
insert_dylib
方式强行插入hello.dylib,log显示加载成功。但是一旦hello.dylib中使用了MSHookFunction,就被killed 9,无论root身份还是mobile身份运行
疑问:
-
DYLD_INSERT_LIBRARIES
为何不起作用呢?已经是mobile身份,且自己写的命令行程序,根本没有__RESTRICT
这玩意的 - 为何一旦hello.dylib中使用MSHookFunction,就被killed 9,难道MSHook只对AppStore程序有用,对命令行工具无效?应该不至于吧,iOS系统自带的各种daemon不也被照样hook的嘛,一定是我漏掉了什么东西吧。