美文网首页
关于debugserver与lldb的配置

关于debugserver与lldb的配置

作者: Jack专注 | 来源:发表于2018-07-19 15:31 被阅读0次

    设备: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的配置

          本文链接:https://www.haomeiwen.com/subject/cuttmftx.html