设备:iPhone6 ios11.0.3越狱系统
环境:Mac 10.13.4 Xcode9.3
1、从手机目录导出debugsever到电脑 scp root@手机ip:/Developer/usr/bin/debugserver ...path/debugserver
2、生成权限ent.plist文件 ios11系统上看需要包含platform-application权限文件内容:
3、利用ldid 对debugserver进行权限设置 ldid -Sent.plist debugserver
4、将设置好权限的debugserver执行文件 拷贝会手机 scp ...path/debugsever root@手机ip:/usr/bin
5、ssh 到手机给刚刚上传的debugserver加上执行权限 ssh root@手机ip 然后执行 chmod +x /usr/bin/debugserver
6、这个时候如果执行、/usr/bin/debugserver localhost:1234 "SpringBoard" 回出现错误:error: failed to attach to process named: "" (os/kern) invalid argument 查阅资料后发现原来是在ios11系统行需要使用jailbreak_client提权
7、提权方式(来源于iosre论坛):通过theos下tool模块创建一个工程(工程名随意高兴就好)DebugAssist,然后将main.mm中代码修改为
#include
externchar**environ;
voidrun_cmd(constchar*cmd)
{
pid_t pid;
constchar*argv[] = {"sh","-c", cmd,NULL};
intstatus;
status = posix_spawn(&pid,"/bin/sh",NULL,NULL, (char*const*)argv, environ);
if(status ==0) {
if(waitpid(pid, &status,0) == -1) {
perror("waitpid");
}
}
}
int main(intargc,char*argv[],char*envp[])
{
if(argc <2)
{
fprintf(stderr,"usage: %s program args...\n", argv[0]);
returnEXIT_FAILURE;
}
intret, status;
pid_t pid;
posix_spawnattr_t attr;
posix_spawnattr_init(&attr);
posix_spawnattr_setflags(&attr, POSIX_SPAWN_START_SUSPENDED);
ret = posix_spawnp(&pid, argv[1],NULL, &attr, &argv[1], envp);
posix_spawnattr_destroy(&attr);
if(ret !=0)
{
printf("posix_spawnp failed with %d: %s\n", ret, strerror(ret));
returnret;
}
charbuf[200];
snprintf(buf,sizeof(buf), "/electra/jailbreakd_client %d 1", pid);
run_cmd(buf);
kill(pid, SIGCONT);
waitpid(pid, &status,0);
return 0;
}
8、make上面的DebugAssist工程 生成可执行文件DebugAssist ,同样使用ent.plist 添加权限,然后上传到手机的/usr/bin 目录并赋予执行权限 ,这样调用一下 DebugAssist /usr/bin/debugserver localhost:1234 -a "SpringBoard" 就正常了
9、因为debugserver只能绑定iOS设备本地ip localhost 所以我们还需要使用到usbmuxd 进行端口的转发,可以通过http://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz 下载到
10、打开Mac终端并运行python ...path/usbmuxd-1.0.8/python-client/tcprelay.py 22:2222
11、新建Mac终端并运行python ...path/usbmuxd-1.0.8/python-client/tcprelay.py 1234:1234
12、ssh到手机并执行 DebugAssist /usr/bin/debugserver localhost:1234 -a "SpringBoard"
13、新建Mac终端并运行lldb 输入执行process connect connect://localhost:1234
14、等待就可以看到能正常的动态调试了