LLDB 调试
$ debugserver *:端口号 -a 进程(某个app进程)
LLDB 启动
开启LLDB
$ lldb
连接 debugserver
process connect connect://手机ip地址
连接成功,程序被断住,输入 c 继续
导出 debugserver 描述文件
$ ldid -e debugserver(可执行文件名) > 文件名.entitlement
描述文件添加权限字段
get-task-allow -> YES
task_for_pid_allow -> YES
签名权限文件
$ ldid -S权限文件 可执行文件
签名后debugserver 拷贝到手机的 usr/bin 目录下(原来所在目录是只读的,所以换目录)
调试防护:
debugserver 根据 ptrace(process trace 进程跟踪)
此函数提供了一个进程,监听控制另外一个进程,并且可以检测被控制进程的内存和寄存器里面的数据!他可以用来实现断点调试和系统调用跟踪。
- 引入头文件 #import <sys/ptrace.h>
将该文件中的代码赋值出来,新建一个自己的类,将代码复制进去,删除引入的头文件
目的是声明 ptrace 函数 - 调用函数 ptrace(PT_DENY_ATTACH(拒绝访问), 0, 0, 0);
第一个参数:ptrace 要做的事情
第二个参数:要操作进程的ID
第三个(数据)/第四个(数据)参数:取决于arg1 - 此时,debugserver 将不能连接应用进行调试
资源代码地址:https://download.csdn.net/download/kangpengpeng1/72023511