iOS 11.3.1上使用bfinject注入dylib后的问题

又尝试了一下,SIGKILL - CODESIGNING跟root还是mobile貌似没关系。
我搞了个最简单的命令行程序,名叫hello,以及一个最简单的tweak,名叫hello.dylib,其plist这样写的:

{
	Filter = {
		Executables = (
			hello
		);
	};
}

做的尝试如下:

  1. 直接运行:./hello,log显示hello.dylib并未加载,以mobile身份运行su mobile -c ./hello,依然未加载
  2. 显式指定DYLD_INSERT_LIBRARIES方式运行DYLD_INSERT_LIBRARIES=/Library/MobileSubstrate/DynamicLibraries/hello.dylib su mobile -c ./hello,依然未加载
  3. 换成DYLD_INSERT_LIBRARIES=/usr/lib/tweakloader.dylib su mobile -c ./hello,模拟tweak的正常加载流程,依然未能被加载
  4. 用狗神提到的颅内炸弹insert_dylib方式强行插入hello.dylib,log显示加载成功。但是一旦hello.dylib中使用了MSHookFunction,就被killed 9,无论root身份还是mobile身份运行

疑问:

  1. DYLD_INSERT_LIBRARIES为何不起作用呢?已经是mobile身份,且自己写的命令行程序,根本没有__RESTRICT这玩意的
  2. 为何一旦hello.dylib中使用MSHookFunction,就被killed 9,难道MSHook只对AppStore程序有用,对命令行工具无效?应该不至于吧,iOS系统自带的各种daemon不也被照样hook的嘛,一定是我漏掉了什么东西吧。
1 个赞