关于debugserver与lldb的配置

设备: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、等待就可以看到能正常的动态调试了

你可能感兴趣的:(关于debugserver与lldb的配置)