美文网首页
sysctl --1反反调试

sysctl --1反反调试

作者: yxc木易星辰 | 来源:发表于2019-05-16 15:40 被阅读0次

    //Monkey就是用这种方式进攻的

    1、创建一个动态库Inject,引入fishhook及sysctl头文件

    2、创建一个继承自NSObject的类 如 XCInject

    3、编码

    #import "XCInject.h"

    #import "fishhook.h"

    #import <sys/sysctl.h>

    //原始函数的地址

    int (*sysctl_p)(int*,u_int,void*,size_t*,void*,size_t);

    //自定义函数

    intmySysctl(int*name,u_intnamelen,void*info,size_t*infosize,void*newInfo,size_tnewinfosize) {

        if(namelen ==4&&

            name[0] ==CTL_KERN&&

            name[1] ==KERN_PROC&&

            name[3] ==KERN_PROC_PID&&

            info && (int)*infosize ==sizeof(structkinfo_proc)) {

            interr =sysctl_p(name, namelen, info, infosize, newInfo, newinfosize);

            //拿出info 做判断

            structkinfo_proc*myInfo = (structkinfo_proc*)info;

            if((myInfo ->kp_proc.p_flag&P_TRACED) !=0) {

                //使用异或反

                myInfo->kp_proc.p_flag^=P_TRACED;

                returnerr;

            }

        }

        returnsysctl_p(name, namelen, info, infosize, newInfo, newinfosize);

    }

    //如下方法即可对简单的sysctl 反调试进行破解

    //对于sysctl反调试1进行该动态库注入后,可以检测到debugserver且可进行调试

    + (void)load {

        rebind_symbols((struct rebinding[1]){{"sysctl",mySysctl,(void *)&sysctl_p}}, 1);

    }

    @end

    相关文章

      网友评论

          本文标题:sysctl --1反反调试

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