iOS安全攻防: GDB依附的攻与防

一 、GDB动态调试:

1、首先在越狱机中打开你要调试的app。

2、通过ssh远程连接到iOS设备。
$ yueyuhui:~ root# ssh [email protected]

3、使用adv-cmds的工具,查询系统中正在运行中的进程号。
$ yueyuhui:~ root# ps -ax

4 、在查询结果中搜索app,找到要附件的进程id。


iOS安全攻防: GDB依附的攻与防_第1张图片
WechatIMG29466.jpeg

5、使用GDB 附加1698号(微信)进程。
$ yueyuhui:~ root# gdb -p 1698

6、开始正式调试app....

二 、阻止GDB依附:

  1. 首先在main.m中导入函数库;
#import 
#import 

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]));
    }
}

你可能感兴趣的:(iOS安全攻防: GDB依附的攻与防)