一 、GDB动态调试:
1、首先在越狱机中打开你要调试的app。
2、通过ssh远程连接到iOS设备。
$ yueyuhui:~ root# ssh root@172.20.10.2
3、使用adv-cmds的工具,查询系统中正在运行中的进程号。
$ yueyuhui:~ root# ps -ax
4 、在查询结果中搜索app,找到要附件的进程id。
WechatIMG29466.jpeg
5、使用GDB 附加1698号(微信)进程。
$ yueyuhui:~ root# gdb -p 1698
6、开始正式调试app....
二 、阻止GDB依附:
- 首先在main.m中导入函数库;
#import <dlfcn.h>
#import <sys/types.h>
2.编写GDB附加检测函数
#if !defined(PT_DENT_ATTACH)
#define PT_DENT_ATTACH 31
#endif
typedef int (*ptrace_ptr_t)(int _request, pid_t pid, caddr_t _addr, int _data);
void disable_gdb() {
void * handle = dlopen(0, RTLD_GLOBAL|RTLD_NOW);
ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
ptrace_ptr(PT_DENT_ATTACH, 0, 0, 0);
dlclose(handle);
}
3.在main函数中调用函数;
int main(int argc, char * argv[]) {
/**防止GDB挂起*/
#ifndef DUBUG
disable_gdb();
#endif
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
网友评论