Android程序外发行为的管控方法、系统、电子设备及介质与流程

    专利查询2025-02-26  27


    本发明涉及程序管控,具体地涉及一种android程序外发行为的管控方法、系统、电子设备及介质。


    背景技术:

    1、现有管控技术如内核层hook,是通过编写内核模块,替换内核层系统调用表的地址,使得系统函数调用如open、read、write、send等函数指向自己编写的函数实现地址,在对系统调用的参数进行检查后,根据业务判断,选择调用替换之前的系统调用或者直接返回错误信息。此类方案的缺点是与系统内核版本强相关,当系统升级时需要重新进行适配编译,而且只能对系统底层api进行管控;另外一种用户层的preload技术,利用程序动态库链接的加载优先级,对ld_preload或者/etc/ld.so.preload进行修改,实现标准库libc的api函数如open、readdir、sendmsg等,覆盖现有c库的api,实现管控的目的,此种方案的缺点在于只能对系统原生的软件进行管控,win模拟器程序、android模拟器程序由于存在一个兼容层,而该兼容层会屏蔽动态链接库的preload加载,导致preload技术无法对模拟器程序进行管控。


    技术实现思路

    1、本发明实施例的目的是提供一种android程序外发行为的管控方法、系统、电子设备及介质,用于全部或至少部分的解决上述现有技术中存在的技术问题。

    2、为了实现上述目的,本发明实施例提供一种android程序外发行为的管控方法,包括:

    3、遍历系统/proc目录,识别android程序的进程id列表;

    4、对进程id列表中的每个进程使用ptrace指令的ptrace_attach、ptrace_getregset、ptrace_setregset以及ptrace_peekdata跟踪调试,以实现对android程序收发文件的行为进行管控。

    5、可选的,遍历系统/proc目录,识别android程序的进程id列表,包括:

    6、遍历系统/proc目录,获取/proc/{pid}/exe符号链接文件的最终指向,若是andorid程序路径,则遍历其路径下的/proc/{pid}/task目录,获取其子线程的id,最终得到一个进程id的列表。

    7、可选的,对进程id列表中的每个进程使用ptrace指令的ptrace_attach、ptrace_getregset、ptrace_setregset以及ptrace_peekdata跟踪调试,以实现对android程序收发文件的行为进行管控,包括:

    8、对进程id列表中的每个进程执行ptrace_attach指令,以进行跟踪调试;

    9、设置跟踪选项,以捕获系统调用和跟踪子进程,其中,对首次加入列表的进程调用ptrace_setoptions指令;

    10、等待被跟踪进程进入stop状态,并基于信号值判断是否因系统调用进入stop状态,若是系统调用,则调用ptrace_getregset获取直接参数信息以及调用ptrace_peekdata获取指针参数信息;

    11、基于获取的直接参数信息和指针参数信息,判断是否允许文件读取外发,若不允许文件读取外发,则修改系统调用参数并调用ptrace_setregset使修改生效以阻断文件读取外发。

    12、可选的,基于获取的直接参数信息和指针参数信息,判断是否允许文件读取外发,若不允许文件读取外发,则修改系统调用参数并调用ptrace_setregset使修改生效以阻断文件读取外发,包括:

    13、若不允许文件读取外发,则修改文件路径指针的偏移量使其偏移到路径末尾的终止符,并调用ptrace_setregset使修改生效。

    14、可选的,若不是系统调用,则调用ptrace_cont使被stop的进程继续运行。

    15、另一方面,本发明还提供一种android程序外发行为的管控系统,包括:

    16、遍历模块,用于遍历系统/proc目录,识别android程序的进程id列表;

    17、管控模块,用于对进程id列表中的每个进程使用ptrace指令的ptrace_attach、ptrace_getregset、ptrace_setregset以及ptrace_peekdata跟踪调试,以实现对android程序收发文件的行为进行管控。

    18、可选的,所述管控模块具体用于:

    19、对进程id列表中的每个进程执行ptrace_attach指令,以进行跟踪调试;

    20、设置跟踪选项,以捕获系统调用和跟踪子进程,其中,对首次加入列表的进程调用ptrace_setoptions指令;

    21、等待被跟踪进程进入stop状态,并基于信号值判断是否因系统调用进入stop状态,若是系统调用,则调用ptrace_getregset获取直接参数信息以及调用ptrace_peekdata获取指针参数信息;

    22、基于获取的直接参数信息和指针参数信息,判断是否允许文件读取外发,若不允许文件读取外发,则修改系统调用参数并调用ptrace_setregset使修改生效以阻断文件读取外发。

    23、可选的,所述管控模块具体用于:

    24、若不允许文件读取外发,则修改文件路径指针的偏移量使其偏移到路径末尾的终止符,并调用ptrace_setregset使修改生效。

    25、另一方面,本发明还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上进行运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述所述的android程序外发行为的管控方法的步骤。

    26、另一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述所述的android程序外发行为的管控方法的步骤。

    27、通过上述技术方案,利用用户层ptrace对进程跟踪调试的功能,对android程序进行读取外发的过程进行审计管控,从而实现android程序的外发进行管控的功能,且避免了内核层hook方案系统兼容性差,用户层preload hook方案无法管控android版应用程序的问题。

    28、本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。



    技术特征:

    1.一种android程序外发行为的管控方法,其特征在于,包括:

    2.根据权利要求1所述的android程序外发行为的管控方法,其特征在于,遍历系统/proc目录,识别android程序的进程id列表,包括:

    3.根据权利要求1所述的android程序外发行为的管控方法,其特征在于,对进程id列表中的每个进程使用ptrace指令的ptrace_attach、ptrace_getregset、ptrace_setregset以及ptrace_peekdata跟踪调试,以实现对android程序收发文件的行为进行管控,包括:

    4.根据权利要求3所述的android程序外发行为的管控方法,其特征在于,基于获取的直接参数信息和指针参数信息,判断是否允许文件读取外发,若不允许文件读取外发,则修改系统调用参数并调用ptrace_setregset使修改生效以阻断文件读取外发,包括:

    5.根据权利要求3所述的android程序外发行为的管控方法,其特征在于,若不是系统调用,则调用ptrace_cont使被stop的进程继续运行。

    6.一种android程序外发行为的管控系统,其特征在于,包括:

    7.根据权利要求6所述的android程序外发行为的管控系统,其特征在于,所述管控模块具体用于:

    8.根据权利要求7所述的android程序外发行为的管控系统,其特征在于,所述管控模块具体用于:

    9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上进行运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5任一项所述的android程序外发行为的管控方法的步骤。

    10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5任一项所述的android程序外发行为的管控方法的步骤。


    技术总结
    本发明实施例提供一种Android程序外发行为的管控方法、系统、电子设备及介质,属于程序管控领域。该方法包括:遍历系统/proc目录,识别Android程序的进程ID列表;对每个进程使用ptrace指令的PTRACE_ATTACH、PTRACE_GETREGSET、PTRACE_SETREGSET及PTRACE_PEEKDATA跟踪调试,以实现对Android程序收发文件的行为进行管控。通过利用ptrace对进程跟踪调试的功能,对Android程序进行读取外发的过程进行审计管控,避免了内核层hook方案系统兼容性差,用户层preload hook方案无法管控Android版应用程序的问题。

    技术研发人员:王金国,王刚刚,谷涛
    受保护的技术使用者:中孚安全技术有限公司
    技术研发日:
    技术公布日:2024/11/26
    转载请注明原文地址:https://tc.8miu.com/read-26103.html

    最新回复(0)