美文网首页
iOS应用防护

iOS应用防护

作者: Cwwng | 来源:发表于2020-12-04 00:19 被阅读0次

1、背景

iOS应用发布市场之后,可以被动态调式。这样我们的应用代码完全暴露。

2、ptrace防护

创建mac应用,可以查找到以下ptrace源码。

#ifndef    _SYS_PTRACE_H_
#define    _SYS_PTRACE_H_

#include <sys/appleapiopts.h>
#include <sys/cdefs.h>

enum {
    ePtAttachDeprecated __deprecated_enum_msg("PT_ATTACH is deprecated. See PT_ATTACHEXC") = 10
};


#define    PT_TRACE_ME    0    /* 子进程正在被追踪 child declares it's being traced */
#define    PT_READ_I    1    /* read word in child's I space */
#define    PT_READ_D    2    /* read word in child's D space */
#define    PT_READ_U    3    /* read word in child's user structure */
#define    PT_WRITE_I    4    /* write word in child's I space */
#define    PT_WRITE_D    5    /* write word in child's D space */
#define    PT_WRITE_U    6    /* write word in child's user structure */
#define    PT_CONTINUE    7    /* continue the child */
#define    PT_KILL        8    /* kill the child process */
#define    PT_STEP        9    /* single step the child */
#define    PT_ATTACH    ePtAttachDeprecated    /* trace some running process */
#define    PT_DETACH    11    /* stop tracing a process */
#define    PT_SIGEXC    12    /* signals as exceptions for current_proc */
#define PT_THUPDATE    13    /* signal for thread# */
#define PT_ATTACHEXC    14    /* attach to running process with signal exception */

#define    PT_FORCEQUOTA    30    /* Enforce quota for root */
#define    PT_DENY_ATTACH    31

#define    PT_FIRSTMACH    32    /* for machine-specific requests */

__BEGIN_DECLS


int    ptrace(int _request, pid_t _pid, caddr_t _addr, int _data);


__END_DECLS

#endif    /* !_SYS_PTRACE_H_ */

在iOS项目中应用

#import "ViewController.h"
#import "MyPtraceHeader.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.view.backgroundColor = [UIColor yellowColor];
    
    //  项目拒绝被附加
    ptrace(PT_DENY_ATTACH, 0, 0, 0);
}

@end

这样,项目Xcode调试状态就会直接退出。

3、破解ptrace

创建动态库,使用fishhook来hook系统函数,使得ptrace失效。


截屏2020-12-03 下午11.58.28.png
#import "HookCode.h"
#import "fishhook.h"
#import "MyPtraceHeader.h"

@implementation HookCode

// 定义指针,保存真实的ptrace
int (*ptrace_p)(int _request, pid_t _pid, caddr_t _addr, int _data);

// 定义一个函数,用来hook ptrace
int myPtrace(int _request, pid_t _pid, caddr_t _addr, int _data){
    
    // 如果不是拒绝附加,继续执行ptrace函数
    if (_request != PT_DENY_ATTACH) {
        return ptrace_p(_request,_pid,_addr,_data);
    }
    // 如果是拒绝附加,直接返回
    return 0;
}

+ (void)load{
    
    // 进行交换
    struct rebinding ptraceBind;
    // 函数的名称
    ptraceBind.name = "ptrace";
    // 新的函数地址
    ptraceBind.replacement = myPtrace;
    // 保存原始函数地址的变量的指针
    ptraceBind.replaced = (void *)&ptrace_p;
    // 定义数组
    struct rebinding rebs[] = {ptraceBind};
    /*
    arg1 : 存放rebinding结构体的数组
    arg2 : 数组的长度
    */
    // 真正交换
    rebind_symbols(rebs, 1);
}

@end

相关文章

  • iOS应用代码注入防护

    iOS应用代码注入防护 iOS应用代码注入防护

  • iOS应用防护

    1、背景 iOS应用发布市场之后,可以被动态调式。这样我们的应用代码完全暴露。 2、ptrace防护 创建mac应...

  • Ios应用安全学习

    iOS应用安全 攻易防难,唯有缜密、多层的防护网络才能可靠的保护我们iOS应用程序的安全。那么,一个完善的iOS应...

  • iOS应用之逆向防护

    iOS的逆向步骤一般为: 脱壳可执行文件 使用IDE或Hopper反编译分析代码逻辑 使用class-dump加l...

  • iOS应用代码注入防护

    在应用开发过程中,我们不仅仅需要完成正常的业务逻辑,考虑应用性能、代码健壮相关的问题,我们有时还需要考虑到应用安全...

  • iOS应用代码注入防护

    在应用开发过程中,我们不仅仅需要完成正常的业务逻辑,考虑应用性能、代码健壮相关的问题,我们有时还需要考虑到应用安全...

  • iOS应用安全防护框架概述

    本文采集于 念茜攻易防难,唯有缜密、多层的防护网络才能可靠的保护我们iOS应用程序的安全。那么,一个完善的iOS应...

  • iOS防护

    当项目发展到一定程度的时候,就需要考虑对程序做一些防护处理。本文列举了一些常用的防护策略,也是市面上大部分的防护策...

  • iOS防护----越狱检测

    如何检测越狱手机一直是iOS应用安全防护的第一道门槛。在应用开发过程中,我们希望知道设备是否越狱,正以什么权限运行...

  • Android安全防护之旅---字符串批量加密工具(AndStr

    一、支付宝防护策略 现在很多应用在为了安全对应用做了很多防护方式,之前我也介绍了很多防护策略:Android中几行...

网友评论

      本文标题:iOS应用防护

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