TikTok越狱检测之二 <调试器检测>

2024-05-24 22:44

本文主要是介绍TikTok越狱检测之二 <调试器检测>,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来了,调试器检测。总结如下,多多指教:

检测app 是否被附加调试:
原理就是检测父进程是否 launchd启动,在OS X和iOS 系统中,用户环境始于launchd,为用户态出现的第一个进程,为所有的进程的祖先,launchd 的进程PID = 1,
正常情况下,app的启动都是launchd来启动的。当app 被调试的时候,PID 的值则变成了调试器的PID,不等于 1

下面是检测TikTok app 是否被附加调试三种方法,
1.是通过 sysctl函数调用
2.通过getppid 函数调用
3.利用汇编代码svc 调用
检测和反检测都是一目了然的,矛和盾的关系都是平等的。

//非Debug状态,返回值为1,Debug状态返回Debugserver进程id
//首先,它检查父进程 id (ppid) 是否与 /sbin/launchd 相同,后者为 1。不相等则为调试状态

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

+(pid_t)GetParentPidByProc {

    int name[4];

    name[0= CTL_KERN;

    name[1= KERN_PROC;

    name[2= KERN_PROC_PID;

    name[3= getpid();

    struct kinfo_proc info;

    size_t info_size = sizeof(info);

    info.kp_proc.p_flag = 0;

    /*查询成功返回0*/

    int error = sysctl(name, sizeof(name) / sizeof(*name), &info, &info_size, NULL, 0);

    if (error == 0) {

        return  info.kp_eproc.e_ppid;

    }

    return 0;

}

//非Debug状态,返回值为1,Debug状态返回Debugserver进程id
//首先,它检查父进程 id (ppid) 是否与 /sbin/launchd 相同,后者为 1。不相等则为调试状态

1

2

3

4

5

6

7

8

9

10

+(pid_t) GetParentPid{

    bool bRet = false;

    pid_t LAUNCHD_PID = 1;

     

    pid_t ppid = getppid();

    if (ppid == LAUNCHD_PID) {

        bRet = true;

    }

    return ppid;

}

//通过svc 汇编代码来调用,非Debug状态,返回值为1,Debug状态返回Debugserver进程id

1

2

3

4

5

6

7

8

9

10

11

12

+(pid_t) GetParentPidBySvc{

    NSInteger ppid = 0;

    __asm__ volatile(

                     "mov x16,#39\t\n"

                     "svc 0x80\t\n"

                     "mov %0,x0\t\n"

                     :"=r"(ppid)

                     :

                     :

                     );

    return (pid_t)ppid;

}

这篇关于TikTok越狱检测之二 <调试器检测>的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/999744

相关文章

基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别

转发来源:https://swift.ctolib.com/ooooverflow-chinese-ocr.html chinese-ocr 基于CTPN(tensorflow)+CRNN(pytorch)+CTC的不定长文本检测和识别 环境部署 sh setup.sh 使用环境: python 3.6 + tensorflow 1.10 +pytorch 0.4.1 注:CPU环境

基于深度学习的轮廓检测

基于深度学习的轮廓检测 轮廓检测是计算机视觉中的一项关键任务,旨在识别图像中物体的边界或轮廓。传统的轮廓检测方法如Canny边缘检测和Sobel算子依赖于梯度计算和阈值分割。而基于深度学习的方法通过训练神经网络来自动学习图像中的轮廓特征,能够在复杂背景和噪声条件下实现更精确和鲁棒的检测效果。 深度学习在轮廓检测中的优势 自动特征提取:深度学习模型能够自动从数据中学习多层次的特征表示,而不需要

自动驾驶---Perception之Lidar点云3D检测

1 背景         Lidar点云技术的出现是基于摄影测量技术的发展、计算机及高新技术的推动以及全球定位系统和惯性导航系统的发展,使得通过激光束获取高精度的三维数据成为可能。随着技术的不断进步和应用领域的拓展,Lidar点云技术将在测绘、遥感、环境监测、机器人等领域发挥越来越重要的作用。         目前全球范围内纯视觉方案的车企主要包括特斯拉和集越,在达到同等性能的前提下,纯视觉方

YOLOv9摄像头或视频实时检测

1、下载yolov9的项目 地址:YOLOv9 2、使用下面代码进行检测 import torchimport cv2from models.experimental import attempt_loadfrom utils.general import non_max_suppression, scale_boxesfrom utils.plots import plot_o

Java内存泄漏检测和分析介绍

在Java中,内存泄漏检测和分析是一个重要的任务,可以通过以下几种方式进行:   1. 使用VisualVM VisualVM是一个可视化工具,可以监控、分析Java应用程序的内存消耗。它可以显示堆内存、垃圾收集、线程等信息,并且可以对内存泄漏进行分析。 2. 使用Eclipse Memory Analyzer Eclipse Memory Analyzer(MAT)是一个强大的工具,可

基于CDMA的多用户水下无线光通信(3)——解相关多用户检测

继续上一篇博文,本文将介绍基于解相关的多用户检测算法。解相关检测器的优点是因不需要估计各个用户的接收信号幅值而具有抗远近效应的能力。常规的解相关检测器有运算量大和实时性差的缺点,本文针对异步CDMA的MAI主要来自干扰用户的相邻三个比特周期的特点,给出了基于相邻三个匹配滤波器输出数据的截断解相关检测算法。(我不知道怎么改公式里的字体,有的字母在公式中重复使用了,请根据上下文判断字母含义) 1

前景检测算法_3(GMM)

因为监控发展的需求,目前前景检测的研究还是很多的,也出现了很多新的方法和思路。个人了解的大概概括为以下一些: 帧差、背景减除(GMM、CodeBook、 SOBS、 SACON、 VIBE、 W4、多帧平均……)、光流(稀疏光流、稠密光流)、运动竞争(Motion Competition)、运动模版(运动历史图像)、时间熵……等等。如果加上他们的改进版,那就是很大的一个家族了。

2023-2024 学年第二学期小学数学六年级期末质量检测模拟(制作:王胤皓)(90分钟)

word效果预览: 一、我会填 1. 1.\hspace{0.5em} 1. 一个多位数,亿位上是次小的素数,千位上是最小的质数的立方,十万位是 10 10 10 和 15 15 15 的最大公约数,万位是最小的合数,十位上的数既不是质数也不是合数,这个数是 ( \hspace{4em} ),约等于 ( \hspace{1em} ) 万 2. 2.\hspace{0.5em} 2.

【目标检测】DAB-DETR

一、引言 论文: DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR 作者: IDEA 代码: DAB-DETR 注意: 该算法是对DETR的改进,在学习该算法前,建议掌握多头注意力、Sinusoidal位置编码、DETR等相关知识。 特点: 将Decoder中Query的角色解耦为图像内容和物体位置,明确了DETR收敛慢的原因在

biostar handbook(十)|如何进行变异检测

变异检测流程 什么是基因组变异 基因组变异是一个定义比较模糊的概念. 所谓的变异是相对于一个完美的“参考基因组”而言。但是其实完美的“参考基因组”并不存在,因为我们只是选择某一个物种里的其中似乎比较正常的个体进行测序组装,然后基于它进行后续的研究。简单的说,参考和变异是相对而言,变异也可能完全正常。 常见的基因组变异一般可以归为如下几类: SNP, 单核苷酸多态性, 一