iOS应用禁止动态调试

作者: 权宜平和 | 来源:发表于2019-07-17 11:30 被阅读0次

闲话少说,直接上步骤

步骤一、打开main.m文件,导入头文件#import <dlfcn.h>

如图所示:


导入头文件

步骤二、定义禁用调试代码

typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
#if !defined(PT_DENY_ATTACH)
#define PT_DENY_ATTACH 31
#endif

void disable_gdb()
{
    void *handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
    ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
    ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
    dlclose(handle);
}

如图所示:


定义禁用调试代码

步骤三、调用禁止调试代码

int main(int argc, char * argv[])
{
    disable_gdb();
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([T_TAppDelegate class]));
    }
}

如图所示:


调用禁止调试代码

此时您用模拟器或真机调试您的APP的时候会发现调试不了,现象就是----xcode编译运行完毕代码的时候,突然就和模拟器或真机断开连接了。此时说明已经可以禁止其他人动态调试您的应用了。


此时可能会有人问,那我想测试的时候可以调试,打包之后禁止调试,该如何做呢。遇到这个疑问请看下面的代码:
int main(int argc, char * argv[])
{
#ifdef RELEASE
    disable_gdb(); // 只在release(archive)时调用这个代码
#endif
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([^_^AppDelegate class]));
    }
}

最后祝大家工作顺利!

相关文章

  • iOS应用禁止动态调试

    闲话少说,直接上步骤 步骤一、打开main.m文件,导入头文件#import 如图所示: 步骤...

  • iOS 项目中安全相关

    动态调试攻击风险 非 DEBUG 模式下禁止调试

  • 使用Reveal软件调试项目UI

    前言 Reveal是一个iOS程序调试UI的工具。使用Reveal,我们可以在iOS开发时动态地查看和修改应用程序...

  • Reveal 界面调试工具

    Reveal是一个iOS程序界面调试工具,使用Reveal,我们可以在iOS开发时动态的查看和修改应用程序的界面,...

  • iOS安全防护方案

    1.阻止动态调试 GDB、LLDB是Xcode内置的动态调试工具。使用GDB、LLDB可以动态的调试你的应用程序(...

  • iOS界面调试工具 Reveal

    作用 Reveal是一个iOS程序界面调试工具。使用Reveal,我们可以在iOS开发时动态地查看和修改应用程序的...

  • Reveal调试UI利器

    Reveal Reveal是分析、调试iOS应用UI的利器。 Reveal能够在运行时调试和修改iOS应用程序。它...

  • iOS 给APP安全升级

    检测设备是否越狱 检测设备网络环境是否开启代理 APP 禁止动态调试 如果你在Xcode调试环境下,去掉#ifnd...

  • iOS界面调试工具Reveal 配置

    一、 简介 Reveal 是一个界面调试工具。使用Reveal,我们可以在iOS开发时动态地查看和修改应用程序的界...

  • iOS逆向之HOOK原理介绍

    上一篇文章地址: iOS逆向之动态调试 (LLDB)介绍 上篇文章讲了如何使用LLDB进行动态调试. 如果你对文...

网友评论

    本文标题:iOS应用禁止动态调试

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