@LuaSaltFish wrote:
iOS11越狱发行半年有余,Cycript这个最好用的运行时刻更新似乎因为神仙打架的原因而不支持iOS11.笔者只能将目光投入到lldb+debugserver。
一
按照debugserver的配置办法从设备中拷贝debugserver到电脑,除了小黄书提到的4个权限需要额外签名 platform-application 否则会被直接干掉。原本以为就此结束可以开心的用debugserver调试。但是现实中做到这一步确实可以运行debugserver但基本会出现以下问题
debugserver-@(#)PROGRAM:debugserver PROJECT:debugserver-360.0.26.14
for arm64.
Attaching to process Preferences…
error: failed to attach to process named: “” (os/kern) invalid argument
按照@Ouroboros大佬提示的原因,需要使用jailbreak_client提权。
二
按照大佬给的代码。#include <spawn.h> int main(int argc, char *argv[], char *envp[]) { if (argc < 2) { fprintf(stderr, "usage: %s program args...\n", argv[0]); return EXIT_FAILURE; } int ret, 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)); return ret; } char buf[200]; snprintf(buf, sizeof(buf), "/electra/jailbreakd_client %d 1", pid); system(buf); kill(pid, SIGCONT); waitpid(pid, &status, 0); return 0; }
使用theos的tool模版制作一个小的命令行工具,我这里用的名字是JBDO。make package install 后ssh进入设备
三
执行命令JBDO debugserver *:1234 -a “Preferences”提示如下
debugserver-@(#)PROGRAM:debugserver PROJECT:debugserver-360.0.26.14 for arm64. Attaching to process Preferences... Listening to port 1234 for a connection from *... Failed to get connection from a remote gdb process. Exiting.
还是不行。通过简单搜索,发现debugserver只能绑定iOS设备本地ip。可是lldb for ios同样没有iOS11的版本。只好祭出usbmux
四
使用python运行tcp tcprelay.py 监听端口:监听端口新建另一个终端窗口 lldb
process connect connect://localhost:监听端口
挺卡的,即使usb有线也用了数十秒
Process 2788 stopped * thread #1: tid = 0xb3313, 0x0000000181bd4bc4 libsystem_kernel.dylib`mach_msg_trap + 8, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP frame #0: 0x0000000181bd4bc4 libsystem_kernel.dylib`mach_msg_trap + 8 libsystem_kernel.dylib`mach_msg_trap: -> 0x181bd4bc4 <+8>: ret libsystem_kernel.dylib`mach_msg_overwrite_trap: 0x181bd4bc8 <+0>: movn x16, #0x1f 0x181bd4bcc <+4>: svc #0x80 0x181bd4bd0 <+8>: ret (lldb)
至此,iOS11上面的lldb+debugserver就完成了。感谢群里大佬们的指点。希望能帮到遇到同样问题的坛友。
Posts: 2
Participants: 2