又尝试了一下,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的嘛,一定是我漏掉了什么东西吧。