CN116662024B - 进程间通信监控方法、装置、电子设备及存储介质 - Google Patents

进程间通信监控方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116662024B
CN116662024B CN202211738894.5A CN202211738894A CN116662024B CN 116662024 B CN116662024 B CN 116662024B CN 202211738894 A CN202211738894 A CN 202211738894A CN 116662024 B CN116662024 B CN 116662024B
Authority
CN
China
Prior art keywords
binder
asynchronous
target application
application process
preset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202211738894.5A
Other languages
English (en)
Other versions
CN116662024A (zh
Inventor
刘帅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202211738894.5A priority Critical patent/CN116662024B/zh
Publication of CN116662024A publication Critical patent/CN116662024A/zh
Application granted granted Critical
Publication of CN116662024B publication Critical patent/CN116662024B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Telephonic Communication Services (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及通信技术领域,公开一种进程间通信监控方法、装置、电子设备及存储介质。该方法包括:响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对目标应用进程的异步Binder调用进行监测,异步Binder调用请求包括预设的服务申请标识;在监测到目标应用进程触发预设的告警后,基于服务申请标识对目标应用进程的异步Binder调用进行持续监测;若目标应用进程的异步Binder调用满足预设条件,则判定目标应用进程存在恶意申请Binder服务。本申请实现了对异步Binder调用中异常申请进行有效监控,避免异步Binder资源耗尽导致的卡死黑屏故障。

Description

进程间通信监控方法、装置、电子设备及存储介质
技术领域
本申请涉及通信技术领域,尤其涉及一种进程间通信监控方法、装置、电子设备及存储介质。
背景技术
Binder是安卓设备的IPC(Inter-Process Communication,进程间通信)通信机制,不同进程间可以通过Binder进行服务请求和内容通信。其中,Binder调用分同步调用和异步调用,异步binder调用存在内存和数量的限制,当异步binder资源耗尽后,就会导致进程间通信受到阻塞,发生Android设备卡死黑屏等故障。
针对当前该类问题,业界有采用在安卓S版本上增加异步binder buffer的spam告警方案:当某pid(进程标识)占用Binder个数超过50,或者该pid占用内存超过binder总内存的25%时,判定为发生了异步Binder恶意占用问题,将error日志打印到流水中并限制此次binder调用申请。为了防止误判,该告警(spam warning)只对固定pid生效一次。
当前方案的不足点在于:对固定pid只打一次告警,不能捕捉到真正的故障点,而且告警只能打到流水日志里面,一些商用Android设备,为了提升性能,面对该类问题都会将logcat日志关闭,这就更加大了针对该类问题的定位难度。
发明内容
本申请提供一种进程间通信监控方法、装置、电子设备及存储介质,目的在于对异步binder调用中异常申请进行有效监控,避免异步binder资源耗尽导致的卡死黑屏故障。
第一方面,本申请提供了一种进程间通信监控方法,所述方法应用于服务端,所述方法包括:
响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,所述异步Binder调用请求包括预设的服务申请标识;
在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测;
若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
本申请所提供的进程间通信监控方法,通过响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,所述异步Binder调用请求包括预设的服务申请标识;在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测;若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。由此,在通过异步调用告警机制监测到目标应用进程的异步Binder调用触发预设的告警后,基于服务申请标识继续对同一个目标应用进程的异步Binder调用进行监测,若满足预设条件,比如,目标应用进程在预设时间内重复发送异步Binder调用请求的次数超过预设次数,则判定目标应用进程存在恶意申请Binder服务。从而实现了对异步Binder调用中异常申请进行有效监控,避免异步Binder资源耗尽导致的卡死黑屏故障。
在一种可能的实现方式中,所述响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测的步骤包括:
响应于目标应用进程通过transact函数发送的异步Binder调用请求;
根据所述异步Binder调用请求,监测所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数;
若所述目标应用进程申请异步Binder服务的个数超过第一预设阈值,和/或占用Binder内存资源的占用数超过第二预设阈值,则判定监测到所述目标应用进程触发预设的告警。
在另一种可能的实现方式中,所述在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测的步骤包括:
在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识,监测所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数;
若所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数超过预设次数,则判定所述目标应用进程的异步Binder调用满足预设条件。
在另一种可能的实现方式中,所述判定监测到所述目标应用进程触发预设的告警的步骤之后,还包括:
将预设的异步恶意请求检测标识位置为true,并记录当前时间戳,保存所述目标应用进程的异步Binder调用请求中的服务申请标识的数值,以对所述目标应用进程的异步Binder调用进行持续监测。
在另一种可能的实现方式中,所述在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识,监测所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数的步骤包括:
在监测到所述目标应用进程触发预设的告警后,若接收到所述transact函数再次发送的异步Binder调用请求,则对比所述transact函数传入的服务申请标识与保存的服务申请标识的数值是否相同;
若相同,则判定所述目标应用进程通过所述transact函数再次发送异步Binder调用请求;
将所述异步恶意请求检测标识位置为false,并将Binder申请次数加1;
计算当前时间与记录的时间戳之间的差值;
若当前时间与记录的时间戳之间的差值小于预设时间,则继续监测所述目标应用进程通过transact函数重复发送异步Binder调用请求的操作;
基于所述Binder申请次数统计得到所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数。
在另一种可能的实现方式中,所述计算当前时间与记录的时间戳之间的差值的步骤之后还包括:
若当前时间与记录的时间戳之间的差值大于或等于预设时间,则清空保存的服务申请标识的数值。
在另一种可能的实现方式中,所述对比所述transact函数传入的服务申请标识与保存的服务申请标识的数值是否相同的步骤之后还包括:
若所述transact函数传入的服务申请标识与保存的服务申请标识的数值不相同,则计算当前时间与记录的时间戳之间的差值;
若当前时间与记录的时间戳之间的差值大于或等于预设时间,则清空保存的服务申请标识的数值。
在另一种可能的实现方式中,所述方法还包括:
针对存在恶意申请Binder服务的目标应用进程,生成调用栈信息;
将所述调用栈信息存储到本地设备预设的日志目录下,或者,将所述调用栈信息上报至云端。
第二方面,本申请提供了一种进程间通信监控方法,所述方法应用于客户端,所述方法包括:
响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,所述异步Binder调用请求包括预设的服务申请标识;
将所述目标应用进程的异步Binder调用请求发送给服务端,由所述服务端基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
本申请所提供的进程间通信监控方法,响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,所述异步Binder调用请求包括预设的服务申请标识;将所述目标应用进程的异步Binder调用请求发送给服务端,由所述服务端基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。由此,在通过异步调用告警机制监测到目标应用进程的异步Binder调用触发预设的告警后,基于服务申请标识继续对同一个目标应用进程的异步Binder调用进行监测,若满足预设条件,比如,目标应用进程在预设时间内重复发送异步Binder调用请求的次数超过预设次数,则判定目标应用进程存在恶意申请Binder服务。从而实现了对异步Binder调用中异常申请进行有效监控,避免异步Binder资源耗尽导致的卡死黑屏故障。
第三方面,本申请提供一种进程间通信监控系统,包括客户端与服务端,其中:
所述客户端,包括APK模块,用于响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,将所述目标应用进程的异步Binder调用请求发送给服务端,所述异步Binder调用请求包括预设的服务申请标识;
所述客户端,用于响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
由此,在通过异步调用告警机制监测到目标应用进程的异步Binder调用触发预设的告警后,基于服务申请标识继续对同一个目标应用进程的异步Binder调用进行监测,若满足预设条件,比如,目标应用进程在预设时间内重复发送异步Binder调用请求的次数超过预设次数,则判定目标应用进程存在恶意申请Binder服务。从而实现了对异步Binder调用中异常申请进行有效监控,避免异步Binder资源耗尽导致的卡死黑屏故障。
在一种可能的实现方式中,所述服务端包括:IPC线程状态模块、Binder驱动模块和进程状态模块,其中:
所述IPC线程状态模块,用于接收所述APK模块发送的目标应用进程的异步Binder调用请求,根据所述异步Binder调用请求,将异步binder服务数据写入Binder驱动模块;
所述Binder驱动模块,用于基于预设的异步调用告警机制,监测所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数,若所述目标应用进程申请异步Binder服务的个数超过第一预设阈值,和/或占用Binder内存资源的占用数超过第二预设阈值,则判定监测到所述目标应用进程触发预设的告警,将预设的异步恶意请求检测标识位置为true,并将所述异步恶意请求检测标识位发送给IPC线程状态模块;
所述IPC线程状态模块,还用于将所述异步恶意请求检测标识位发送给所述进程状态模块;
所述进程状态模块,用于判断所述异步恶意请求检测标识位是否为true,在判断所述异步恶意请求检测标识位为true时,记录当前时间戳,保存当前异步Binder调用请求中的服务申请标识的数值,基于所述当前时间戳及服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务,生成调用栈信息,存储到本地设备预设的日志目录下,或者,将所述调用栈信息上报至云端。
第四方面,一种进程间通信监控装置,所述装置包括:
第一监测模块,用于响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,所述异步Binder调用请求包括预设的服务申请标识;
第二监测模块,用于在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测;
判断模块,用于若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
第五方面,本申请提供一种进程间通信监控装置,所述装置包括:
请求模块,用于响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,所述异步Binder调用请求包括预设的服务申请标识;
发送模块,用于将所述目标应用进程的异步Binder调用请求发送给服务端,由所述服务端基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
第六方面,本申请提供了一种电子设备,包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中,所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行如上述可能的实现方式中任一项所述的进程间通信监控方法。
第七方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得处理器执行如上述可能的实现方式中任一项所述的进程间通信监控方法。
第八方面,本申请提供了一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述可能的实现方式中任一项所述的进程间通信监控方法。
作为一种可能的实现方式,该芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行上述可能的实现方式中任一项所述进程间通信监控方法。
附图说明
图1为现有技术中一种序章主题APP进程调用异常导致手机发生卡死黑屏的一个示意性场景图;
图2为本申请实施例提供的电子设备的一种结构示意图;
图3为本申请实施例提供的电子设备的一种软件结构框图;
图4为本申请实施例提供的进程间通信监控方法中一种APP客户端与服务端交互示意图;
图5为本申请实施例涉及的进程间通信监控系统架构示意图;
图6为本申请实施例提供的进程间通信监控方法的交互流程图;
图7为本申请实施例提供的进程间通信监控方法的底层逻辑处理流程示意图;
图8为本申请实施例中标识位处理函数的一种具体处理流程示意图;
图9为本申请实施例中标识位处理函数的另一种具体处理流程示意图;
图10为本申请实施例中调用栈信息上报到云端的处理流程示意图;
图11为本申请另一个实施例提供的进程间通信监控方法的流程示意图;
图12为本申请提供的一种进程间通信监控装置的功能模块示意图;
图13为本申请提供的另一种进程间通信监控装置的功能模块示意图。
具体实施方式
本申请说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了下述各实施例的描述清楚简洁,首先给出相关技术中,异步Binder资源耗尽后,导致进程间通信受到阻塞,发生Android设备卡死黑屏等故障的几种场景介绍:
场景一:某产品中,用户安装序章主题APP后手机出现卡死黑屏问题。该主题是APP形式,当动态壁纸播放异常时,频繁触发seekTo重播,导致media进程的binder占满耗尽,手机发生卡死黑屏问题;
场景二:某产品中,剪映APP大量加载缩略图过程中binder占满耗尽,手机发生卡死黑屏问题;
场景三:某产品中,天翼云盘大量发起DNS请求导致binder占满耗尽,手机发生卡死黑屏问题。
参照图1,图1为现有技术中一种序章主题APP进程调用异常导致手机发生卡死黑屏的一个示意性场景图。
如图1所示,以序章主题APP为例,在序章主题播放失败后,系统会立刻调取start,重复播放桌面壁纸动画,其中,start播放会调取media服务器,通过binder通知Audio服务(oneway形式)。当桌面壁纸动画播放失败时,App就会陷入一直重试的死循环,并且时间交互非常短。当binder耗尽后,这个一直重试的死循环便一直持续。
针对当前该类问题,业界有采用在安卓S版本上增加异步binder buffer的spam告警方案:当某pid(进程标识)占用Binder个数超过50,或者该pid占用内存超过binder总内存的25%时,判定为发生了异步Binder恶意占用问题,将error日志打印到流水中并限制此次binder调用申请。为了防止误判,该告警(spam warning)只对固定pid生效一次。
当前方案的不足点在于:对固定pid只打一次告警,不能捕捉到真正的故障点,而且告警只能打到流水日志里面,一些商用Android设备,为了提升性能,面对该类问题都会将logcat日志关闭,这就更加大了针对该类问题的定位难度,这对问题定位效率和用户体验都带来负面影响。
基于上述技术方案中存在的问题,本申请提供了一种进程间通信监控方法、装置、电子设备及存储介质,可以对异步binder调用中异常申请进行有效监控,避免异步binder资源耗尽导致的卡死黑屏故障,提高用户体验。
本申请所提供的进程间通信监控方法,可以适用于手机、平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、手持计算机、上网本、个人数字助理(Personal Digital Assistant,PDA)、可穿戴电子设备、智能手表等电子设备。其中,适用该进程间通信监控方法的电子设备,其结构可以如图2所示。
如图2所示,图2为本申请提供的一种电子设备的组成示例图,电子设备200可以包括处理器210,外部存储器接口220,内部存储器221,通用串行总线(universal serialbus,USB)接口230,充电管理模块240,电源管理模块241,电池242,天线1,天线2,移动通信模块250,无线通信模块260,音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,传感器模块280,摄像头293,显示屏294等。
其中,传感器模块280可以包括压力传感器280A,陀螺仪传感器280B,气压传感器280C,磁传感器280D,加速度传感器280E,距离传感器280F,接近光传感器280G,指纹传感器280H,温度传感器280J,触摸传感器280K,环境光传感器280L,骨传导传感器280M等。
可以理解的是,本实施例示意的结构并不构成对该电子设备200的具体限定。在另一些实施例中,该电子设备200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备200的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器210中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器210中的存储器为高速缓冲存储器。该存储器可以保存处理器210刚用过或循环使用的指令或数据。如果处理器210需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器210的等待时间,因而提高了系统的效率。
在一些实施例中,处理器210可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备200的结构限定。在本申请另一些实施例中,电子设备200也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块240用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块240可以通过USB接口230接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块240可以通过电子设备200的无线充电线圈接收无线充电输入。充电管理模块240为电池242充电的同时,还可以通过电源管理模块241为电子设备200供电。
电源管理模块241用于连接电池242,充电管理模块240与处理器210。电源管理模块241接收电池242和/或充电管理模块240的输入,为处理器210,内部存储器221,显示屏294,摄像头293,和无线通信模块260等供电。电源管理模块241还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块241也可以设置于处理器210中。在另一些实施例中,电源管理模块241和充电管理模块240也可以设置于同一个器件中。
电子设备200的无线通信功能可以通过天线1,天线2,移动通信模块250,无线通信模块260,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备200中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块250可以提供应用在电子设备200上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块250可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块250可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块250还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块250的至少部分功能模块可以被设置于处理器210中。在一些实施例中,移动通信模块250的至少部分功能模块可以与处理器210的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器270A,受话器270B等)输出声音信号,或通过显示屏294显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器210,与移动通信模块250或其他功能模块设置在同一个器件中。
无线通信模块260可以提供应用在电子设备200上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块260可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块260经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器210。无线通信模块260还可以从处理器210接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,电子设备200的天线1和移动通信模块250耦合,天线2和无线通信模块260耦合,使得电子设备200可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
电子设备200通过GPU,显示屏294,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏294和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏294用于显示图像,视频等。显示屏294包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oled,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备200可以包括1个或N个显示屏294,N为大于1的正整数。
电子设备200的显示屏294上可以显示一系列图形用户界面(graphical userinterface,GUI),这些GUI都是该电子设备200的主屏幕。一般来说,电子设备200的显示屏294的尺寸是固定的,只能在该电子设备200的显示屏294中显示有限的控件。控件是一种GUI元素,它是一种软件组件,包含在应用程序中,控制着该应用程序处理的所有数据以及关于这些数据的交互操作,用户可以通过直接操作(direct manipulation)来与控件交互,从而对应用程序的有关信息进行读取或者编辑。一般而言,控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。例如,在本申请实施例中,显示屏294可以显示虚拟按键(一键编排、开始编排、场景编排)。
电子设备200可以通过ISP,摄像头293,视频编解码器,GPU,显示屏294以及应用处理器等实现拍摄功能。
ISP用于处理摄像头293反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头293中。
摄像头293用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备200可以包括1个或N个摄像头293,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备200在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备200可以支持一种或多种视频编解码器。这样,电子设备200可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备200的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口220可以用于连接外部存储卡,例如MicroSD卡,实现扩展电子设备200的存储能力。外部存储卡通过外部存储器接口220与处理器210通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器221可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器210通过运行存储在内部存储器221的指令,从而执行电子设备200的各种功能应用以及数据处理。例如,在本实施例中,处理器210可以通过执行存储在内部存储器221中的指令,进行场景编排。内部存储器221可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备200使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器221可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器210通过运行存储在内部存储器221的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备200的各种功能应用以及数据处理。
电子设备200可以通过音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块270用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块270还可以用于对音频信号编码和解码。在一些实施例中,音频模块270可以设置于处理器210中,或将音频模块270的部分功能模块设置于处理器210中。
扬声器270A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备200可以通过扬声器270A收听音乐,或收听免提通话。
受话器270B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备200接听电话或语音信息时,可以通过将受话器270B靠近人耳接听语音。
麦克风270C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风270C发声,将声音信号输入到麦克风270C。电子设备200可以设置至少一个麦克风270C。在另一些实施例中,电子设备200可以设置两个麦克风270C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备200还可以设置三个,四个或更多麦克风270C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口270D用于连接有线耳机。耳机接口270D可以是USB接口230,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
在一些实施例中,电子设备200还可以包括按键290、马达291、指示器292以及SIM卡接口295(或eSIM卡)等一项或多项,本申请实施例对此不作任何限制。
另外,在上述部件之上,运行有操作系统。例如鸿蒙系统,iOS操作系统,Android开源操作系统,Windows操作系统等。在该操作系统上可以安装运行应用程序。
图3为本申请实施例提供的电子设备的一种软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在本申请的一些实施例中,电子设备的软件架构至少包括三层,从上至下分别为应用程序层,应用程序框架层,以及硬件抽象层。
应用程序层可以包括一系列应用程序包。这些应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,进程间通信监控程序等应用程序。
在本申请实施例中,应用程序层中包含若干个具有用户界面(User Interface,UI)的APP,例如短信、序章主题或其他能够使用系统View控件的APP。
在本申请的一些实施例中,APP可以包括View控件、确认对话框,APK模块。控件可用于在电子设备的UI界面上显示需要展示的内容。确认对话框可用于在界面上展示用户要访问的对象及其相关信息,以供用户根据自身需求进行操作。本实施例中确认对话框可以以焦点窗口(Focus Window)的状态来呈现,该焦点窗口的背景颜色与背景窗口的颜色可以存在一定的视觉差,用于区分两种窗口。APK模块可以对用户的应用相关操作进行响应,比如响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,将目标应用进程的异步Binder调用请求发送给应用程序框架层。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。如图3所示,应用程序框架层可以包括窗口管理器(Window Manager),内容提供器,视图系统(View System),电话管理器(Telephony Manager),资源管理器,通知管理器(Notification Manager),软件包管理器(Package Manager)等。例如,在本申请的一些实施例中,应用程序框架层还可以包括输入管理器(InputManager),应用管理器(ActivityManager),IPC线程状态模块(即IPCThreadState模块,进程间通信状态模块)、Binder驱动模块和进程状态模块(ProcessState模块)。
其中,输入管理器用于处理系统的输入事件(按键操作、触摸事件等)。
应用管理器用于管理应用程序生命周期并提供常用的导航回退功能,处理相应的终端应用业务。
IPC线程状态模块,用于接收APK模块发送的目标应用进程的异步Binder调用请求,根据异步Binder调用请求,将异步binder服务数据写入Binder驱动模块;
Binder驱动模块,用于基于预设的异步调用告警机制,监测目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数,若所述目标应用进程申请异步Binder服务的个数超过第一预设阈值,和/或占用Binder内存资源的占用数超过第二预设阈值,则判定监测到所述目标应用进程触发预设的告警,将预设的异步恶意请求检测标识位置为true,并将所述异步恶意请求检测标识位发送给IPC线程状态模块;
IPC线程状态模块,还用于将所述异步恶意请求检测标识位发送给所述进程状态模块;
进程状态模块,用于判断所述异步恶意请求检测标识位是否为true,在判断所述异步恶意请求检测标识位为true时,记录当前时间戳,保存当前异步Binder调用请求中的服务申请标识的数值,基于所述当前时间戳及服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务,生成调用栈信息,存储到本地设备预设的日志目录下,或者,将所述调用栈信息上报至云端。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
硬件抽象层为电子设备200的操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。在本申请的一些实施例中,硬件抽象层包括网络通信模块、设备连接模块(MagicLink)、设备管理模块。该网络通信模块可用于检测电子设备200是否处于联网状态。本申请中联网状态是指电子设备200能够通过上述移动通信模块250或者无线通信模块260与其他电子设备进行通信,该通信可以发生在一个封闭的局域网上,也可以通过互联网进行通信。本申请方案中涉及电子设备200与PC端在局域网内的近场通信。
发现连接模块(MagicLink),用于与PC端通过局域网内的广播包交互,进行自发现自组网。
设备管理模块,用于电子设备200的上下线管理。
为了便于理解,本申请以下实施例将以具有图2和图3所示结构的电子设备200为例,结合附图和应用场景,对本申请实施例提供的进程间通信监控方法进行具体阐述。
本申请实施例涉及的技术术语:
IPC,Inter-Process Communication,进程间通信。基于Android系统的多进程通信的应用场景包括:保活、webview、加载图片、push推送、与系统服务通信等。
Binder:是Android系统中实现的一种高效的IPC机制,Binder服务相当于DNS服务器,用于分发客户端请求,并将请求发送到服务端处理,服务端再将结果返回客户端。不同进程间可以通过Binder进行服务请求和内容通信,平常接触到的各种XxxManager,以及绑定Service时都在使用Binder进行跨进程操作。其中,Binder调用分同步调用和异步调用。
本实施例方法执行主体可以为电子设备,也可以为承载于电子设备上的装置或系统,该装置或系统可以实现进程间通信监控功能,其可以通过应用软件的形式安装于电子设备上。该电子设备可以为PC端、终端设备等,在本申请的方法实施例中,分别以服务端和客户端进行举例,客户端所在的终端设备可以为手机、PAD、智慧屏等移动终端。
本申请方案中涉及应用客户端与服务端通信,实现进程间通信监控。该客户端所在的终端设备可以是图2和图3所示结构的电子设备,具体可以为手机、PAD、智慧屏等,其操作系统可以为鸿蒙系统,iOS操作系统,Android开源操作系统,Windows操作系统等,本实施例以Android设备进行举例。
本申请实施例考虑到:Android设备因异步Binder恶意调用导致异步binder资源耗尽后,就会导致进程间通信受到阻塞,发生Android设备卡死黑屏等故障。针对该类问题,相关技术并没有非常好的监控手段,特别是商用Android设备,为了提升性能,面对该类问题都会将logcat日志关闭,这就更加大了针对该类问题的定位难度,影响了用户的体验效果。
由此,本申请实施例提出解决方案:
在通过异步调用告警机制监测到目标应用进程的异步Binder调用触发预设的告警后,基于服务申请标识继续对同一个目标应用进程的异步Binder调用进行监测,若满足预设条件,比如,目标应用进程在预设时间内重复发送异步Binder调用请求的次数超过预设次数,则判定目标应用进程存在恶意申请Binder服务。从而可以实现对异步Binder调用中异常申请进行有效监控,避免异步Binder资源耗尽导致的卡死黑屏故障,提高用户体验。
以下具体介绍本申请实施例Android设备应用客户端与服务端通信,实现进程间通信监控的具体场景:
以序章主题APP为例,如图1所示,在序章主题播放失败后,系统会立刻调取start,重复播放桌面壁纸动画,其中,start播放会调取media服务器,通过binder通知Audio服务(oneway形式)。当桌面壁纸动画播放失败时,App就会陷入一直重试的死循环,并且时间交互非常短。当binder耗尽后,这个一直重试的死循环便一直持续。
为此,本实施例提出改进方案,如图4所示,以某个目标APP的客户端与服务端交互实现对进程间通信进行监控为例,具体流程如下:
首先,在目标APP的客户端触发对目标应用的操作指令后,客户端启动目标应用进程,将该目标应用进程的异步Binder调用请求发送给服务端;
然后,服务端响应于目标应用进程的异步Binder调用请求,对目标应用进程的异步Binder调用进行监测,当监测到目标应用进程占用Binder个数超过50,或者该目标应用进程占用内存超过binder总内存的25%时,判定为发生了异步Binder恶意占用,触发spamoneway告警,保存服务标识handle、code;
然后,服务端继续对目标应用进程的异步Binder调用进行监测,其中,如果再次监测到异步Binder调用,且进行异步Binder调用申请的服务标识handle、code相同,则认为是同一个目标应用进程在申请异步Binder服务,如果监测到该目标应用进程在50ms内又发送了10次及其以上的异步Binder调用请求,则可以判断该目标应用进程在恶意申请binder服务,生成进程栈信息存储在本地日志目录下或上报到云端。
由此,在通过异步调用告警机制监测到目标应用进程的异步Binder调用触发预设的告警后,基于服务申请标识继续对同一个目标应用进程的异步Binder调用进行监测,若满足预设条件,比如,目标应用进程在预设时间内重复发送异步Binder调用请求的次数超过预设次数,则判定目标应用进程存在恶意申请Binder服务。从而实现了对异步Binder调用中异常申请进行有效监控,避免异步Binder资源耗尽导致的卡死黑屏故障。
参照图5,图5为本申请实施例涉及的进程间通信监控系统架构示意图。
如图5所示,本实施例提出一种进程间通信监控系统,该系统可以应用于Android设备,Android设备上可以安装各种应用程序,不同应用进程间可以通过安卓设备的IPC通信机制申请Binder服务,其中,Binder服务的调用分同步调用和异步调用,异步binder调用存在内存和数量的限制,当异步binder资源耗尽后,就会导致进程间通信受到阻塞,发生Android设备卡死黑屏等故障。
本申请方案主要是对异步binder调用中异常申请进行有效监控,避免异步binder资源耗尽导致的卡死黑屏故障。
具体地,如图5所示,Android设备可以包括前端的应用客户端和后端的服务端或称服务器,其中:
客户端配置有APK模块,即应用模块,客户端通过APK模块响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,将所述目标应用进程的异步Binder调用请求发送给服务端,所述异步Binder调用请求包括预设的服务申请标识;
所述服务端,用于响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
在一种可能的实施方式中,服务端可以包括:IPC线程状态模块(即IPCThreadState模块,进程间通信状态模块)、Binder驱动模块和进程状态模块(ProcessState模块),其中:
所述IPC线程状态模块,用于接收所述APK模块发送的目标应用进程的异步Binder调用请求,根据所述异步Binder调用请求,将异步binder服务数据写入Binder驱动模块;
所述Binder驱动模块,用于基于预设的异步调用告警机制,监测所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数,若所述目标应用进程申请异步Binder服务的个数超过第一预设阈值,和/或占用Binder内存资源的占用数超过第二预设阈值,则判定监测到所述目标应用进程触发预设的告警,将预设的异步恶意请求检测标识位置为true,并将所述异步恶意请求检测标识位发送给IPC线程状态模块;
所述IPC线程状态模块,还用于将所述异步恶意请求检测标识位发送给所述进程状态模块;
所述进程状态模块,用于判断所述异步恶意请求检测标识位是否为true,在判断所述异步恶意请求检测标识位为true时,记录当前时间戳,保存当前异步Binder调用请求中的服务申请标识的数值,基于所述当前时间戳及服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务,生成调用栈信息,存储到本地设备预设的日志目录下,或者,将所述调用栈信息上报至云端。
本实施例通过上述方案,在通过异步调用告警机制监测到目标应用进程的异步Binder调用触发预设的告警后,基于服务申请标识继续对同一个目标应用进程的异步Binder调用进行监测,若满足预设条件,比如,目标应用进程在预设时间内重复发送异步Binder调用请求的次数超过预设次数,则判定目标应用进程存在恶意申请Binder服务。从而实现了对异步Binder调用中异常申请进行有效监控,避免异步Binder资源耗尽导致的卡死黑屏故障。
基于上述场景及系统架构的描述,以下对本实施例的方案进行详细阐述:
参照图6,图6为本申请一个实施例提供的进程间通信监控方法的流程图。
如图6所示,本申请实施例提供的进程间通信监控方法应用于服务端,所述方法包括:
步骤S601,响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,所述异步Binder调用请求包括预设的服务申请标识;
本实施例方法执行主体可以为电子设备,也可以为承载于电子设备上的装置或系统,该装置或系统可以实现进程间通信监控功能,其可以通过应用软件的形式安装于电子设备上。该电子设备可以为PC端、终端设备等,在本申请的方法实施例中,以服务端进行举例。
本申请方案中涉及应用客户端与服务端通信实现进程间通信监控。该客户端所在的终端设备可以是图2和图3所示结构的电子设备,具体可以为手机、PAD、智慧屏等等移动终端,其操作系统可以为鸿蒙系统,iOS操作系统,Android开源操作系统,Windows操作系统等,本实施例以Android设备进行举例。
在本实施例中,服务端响应于应用客户端发送的目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测。
其中,客户端可以根据应用使用情况,触发目标应用进程,比如根据用户对应用的操作,启动目标应用进程,目标应用进程在需要申请异步Binder服务时,触发异步Binder调用请求。客户端将目标应用进程的异步Binder调用请求发送给服务端。
在一种可能的实施方式中,客户端侧的APK模块通过transact函数请求申请异步Binder服务,触发异步Binder调用请求。客户端侧的APK模块在申请Binder服务的transact函数中会区分Binder服务的调用是同步调用还是异步调用。
对于服务端而言,服务端会通过不同的接口提供给APK模块不同的调用服务,比如,通过同步接口接收同步binder调用申请,通过异步接口接收异步Binder调用申请。
因此,若服务端通过同步接口接收到binder调用申请,则认为APK模块申请同步Binder调用;若通过异步接口接收到binder调用申请,则认为APK模块申请异步Binder调用(oneway)。
服务端在接收到目标应用的客户端发送的目标应用进程的异步Binder调用请求后,基于预设的异步调用告警机制对目标应用进程的异步Binder调用进行监测。
在一种可能的实施方式中,异步调用告警机制可以基于进行异步Binder调用的应用进程正在使用的Binder服务的个数来设置,其中,应用进程正在使用的Binder服务的个数即该应用进程占用Binder服务的个数,Binder个数相当于申请Binder服务的个数,也可以称为调用Binder服务的个数。在设置异步调用告警机制时,可以采用以下策略:设置应用进程申请异步Binder服务的个数超过预设阈值(比如50个),则判定该应用进程触发告警。
在另一种可能的实施方式中,异步调用告警机制可以基于进行异步Binder调用的应用进程占用内存的大小来设置。比如,申请异步Binder服务的应用进程占用Binder内存资源的占用数超过预设阈值(比如预设比例,如50%),则判定该应用进程触发告警。
在另一种可能的实施方式中,还可以结合上述两种情况来设置异步调用告警机制,比如,应用进程申请异步Binder服务的个数超过预设阈值(比如50个),且应用进程占用Binder内存资源的占用数超过预设阈值(比如预设比例,如50%),则判定该应用进程触发告警。
具体地,作为一种可能的实施方式,所述响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测的步骤可以包括:
响应于目标应用进程通过transact函数发送的异步Binder调用请求;
根据所述异步Binder调用请求,监测所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数;
若所述目标应用进程申请异步Binder服务的个数超过第一预设阈值,和/或占用Binder内存资源的占用数超过第二预设阈值,则判定监测到所述目标应用进程触发预设的告警。
其中,第一预设阈值、第二预设阈值可以根据实际情况进行设置,比如,第一预设阈值为50个,第二预设阈值可以为50%。
举例如下:
在某pid(进程)占用Binder个数超过50,或者该pid占用内存超过Binder总内存的25%时,判定为可能发生了异步Binder恶意占用问题,触发spam oneway告警。
进一步地,在一种可能的实施方式中,在判定监测到所述目标应用进程触发预设的告警的之后,还可以采用如下方案:
将预设的异步恶意请求检测标识位置为true,并记录当前时间戳,保存所述目标应用进程的异步Binder调用请求中的服务申请标识的数值,以对目标应用进程的异步Binder调用进行持续监测。
步骤S602,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测;
在本实施例中,客户端发送的目标应用进程的异步Binder调用请求包括预设的服务申请标识。
在一种可能的实施方式中,该服务申请标识可以包括:service名称。
在另一种可能的实施方式中,所述服务申请标识可以包括:service名称和Binder申请函数名称。
本实施例通过在目标应用进程的异步Binder调用请求中携带服务申请标识,可以在监测到目标应用进程触发预设的告警后,基于该服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,通过服务申请标识可以判断再次申请异步Binder服务的应用进程与前面申请异步Binder服务出现告警的目标应用进程是否是同一个进程。
在一种可能的实施方式中,在Apk模块申请异步Binder服务时,可以通过transact函数发送handle,code,data,reply flags变量给服务端的IPCThreadState模块(IPC线程状态模块),以请求申请异步Binder服务。
其中,handle代表申请Binder服务的service名称,code代表申请Binder服务的函数名称。
在相关技术中,“service名称”和“binder申请函数名称”是两个变量标识位,通常用来判断申请Binder服务的应用进程占用Binder个数和内存,在本申请中,新增“service名称”和“binder申请函数名称”两个标识位的功能,通过这两个标识位来判断是否是同一个Binder服务申请者。
其中,“service名称”一般对应一个服务申请者(即目标应用进程),同一个服务申请者的APK调用函数可能不一样,如果采用两个标识位,对服务申请者的定位就比较准确,当然,也可以用一个service名称确定是否是同一个服务申请者,只是准确性相对低一些。
本实施例考虑到:相关技术在Android S版本上提供了一个告警机制,当某个应用进程占用Binder个数超过50,或者占用Binder内存超过Binder总内存1/4时,就会在logcat日志中输出spam oneway的告警的栈信息。本实施例正是利用该告警机制进一步增加判断条件,即新增“service名称”和“binder申请函数名称”两个标识位来判断是否同一个Binder服务申请者。
如果同一个Binder服务申请者后续在预设时间内又申请Binder服务多次,可以以此判断该应用进程满足恶意申请的条件。
进一步地,在一种可能的实施方式中,所述在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测的步骤可以包括:
在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识,监测所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数;
如前所述,在判定监测到所述目标应用进程触发预设的告警的之后,还可以将预设的异步恶意请求检测标识位置为true,并记录当前时间戳,保存所述目标应用进程的异步Binder调用请求中的服务申请标识的数值,以对目标应用进程的异步Binder调用进行持续监测。
基于此,在一种可能的实施方式中,在监测到所述目标应用进程触发预设的告警后,若接收到所述transact函数再次发送的异步Binder调用请求,则对比所述transact函数传入的服务申请标识与保存的服务申请标识的数值是否相同;
若相同,则判定所述目标应用进程通过所述transact函数再次发送异步Binder调用请求;
将所述异步恶意请求检测标识位置为false,并将Binder申请次数加1;
计算当前时间与记录的时间戳之间的差值;
若当前时间与记录的时间戳之间的差值小于预设时间,则继续监测所述目标应用进程通过transact函数重复发送异步Binder调用请求的操作;
基于所述Binder申请次数统计得到所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数。
在一种可能的实施方式中,若当前时间与记录的时间戳之间的差值大于或等于预设时间,则清空保存的服务申请标识的数值。
在一种可能的实施方式中,若通过对比所述transact函数传入的服务申请标识与保存的服务申请标识的数值,判定transact函数传入的服务申请标识与保存的服务申请标识的数值不相同,则计算当前时间与记录的时间戳之间的差值;若当前时间与记录的时间戳之间的差值大于或等于预设时间,则清空保存的服务申请标识的数值。
在监测所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数后,若所述目标应用进程在预设时间内(比如50ms内)通过transact函数重复发送异步Binder调用请求的次数超过预设次数(比如10次),则判定该目标应用进程的异步Binder调用满足预设条件。
步骤S603,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
若所述目标应用进程在预设时间内(比如50ms内)通过transact函数重复发送异步Binder调用请求的次数超过预设次数(比如10次),则判定该目标应用进程的异步Binder调用满足预设条件,进而判定所述目标应用进程存在恶意申请Binder服务。
场景举例如下:
当某应用进程已经触发spam oneway告警后,先保存handle、code的数值,如果在50ms内又发送了10次及以上的transact请求(即通过transact函数发送的异步Binder调用请求),则可以判断该应用进程在恶意申请Binder服务,这时可以将该应用进程的栈信息保存并上传到云端,从而可以更准确的监控到用户异步Binder资源耗尽异常。
本实施例通过上述方案,响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,所述异步Binder调用请求包括预设的服务申请标识;在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测;若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。由此,在通过异步调用告警机制监测到目标应用进程的异步Binder调用触发预设的告警后,基于服务申请标识继续对同一个目标应用进程的异步Binder调用进行监测,若满足预设条件,比如,目标应用进程在预设时间内重复发送异步Binder调用请求的次数超过预设次数,则判定目标应用进程存在恶意申请Binder服务。从而实现了对异步Binder调用中异常申请进行有效监控,避免异步Binder资源耗尽导致的卡死黑屏故障,提升系统应用性能。
进一步地,参照图6所示,所述方法还包括:
步骤S604,针对存在恶意申请Binder服务的目标应用进程,生成调用栈信息;
步骤S605,将所述调用栈信息存储到本地设备预设的日志目录下,或者,将所述调用栈信息上报至云端。
在一种可能的实施方式中,可以将调用栈信息存储到本地设备预设的日志目录:data/vendor/log/spam_oneway下,或者,将所述调用栈信息上报至云端。
本实施例方案可以对异步Binder资源耗尽提供一种预警手段,即可以通过对进程间通信进行监控,通过异常判断,生成调用栈信息,将调用栈信息存储到本地设备预设的日志目录下,方便进行异常的异步Binder调用进行分析处理,避免产生Binder资源耗尽,造成卡死黑屏故障,即为Binder资源耗尽可能产生的现象提供一种有效的监控手段;此外,可以提前上报异常信息,通过异常上报,方便开发端进行相应的处理,从而提升系统应用性能。
以下结合图7-图10对本实施例方案进行详细阐述:
本实施例考虑到:相关技术提供一种场景,在Android S版本上提供了一个告警机制,当某个应用进程占用Binder个数超过50,或者占用Binder内存超过Binder总内存1/4时,就会在logcat日志中输出spam oneway的告警的栈信息。本实施例正是利用该告警机制进一步增加判断条件,即新增“service名称”和“binder申请函数名称”两个标识位来判断是否同一个Binder服务申请者。
如果同一个Binder服务申请者后续在预设时间内又申请Binder服务多次,可以以此判断该应用进程在恶意申请Binder服务,这时可以将该应用进程的栈信息保存并上传到云端,从而可以更准确的监控到用户异步Binder资源耗尽异常。
具体地,如图7所示,客户端配置有APK模块,即应用模块,客户端通过APK模块响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,将所述目标应用进程的异步Binder调用请求发送给服务端,所述异步Binder调用请求包括预设的服务申请标识;
所述服务端,用于响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
在一种可能的实施方式中,服务端可以包括:IPC线程状态模块(即IPCThreadState模块,进程间通信状态模块)、Binder驱动模块和进程状态模块(ProcessState模块),其中:
APK模块、IPC线程状态模块、Binder驱动模块和进程状态模块之间进行交互,实现进程间通信的监控的处理流程如下:
步骤1,Apk模块响应于对用户目标应用的操作指令,触发目标应用进程的异步Binder调用请求,申请异步Binder服务,Apk模块通过transact函数发送handle,code,data,reply flags变量给IPC线程状态模块,其中handle代表申请Bnder服务的service名称,code代表申请Binder服务的函数名称。
步骤2,IPC线程状态模块写数据到binder驱动模块,binder驱动模块通过spamoneway(异步恶意请求)告警机制,判断当前目标进程占用Binder服务的个数超过50,或者占用Binder内存超过Binder总内存1/4时,会给oneway_spam_detected(异步恶意请求检测标识)标识位置true(表示异常),并将该oneway_spam_detected标识位发送给IPC线程状态模块。
步骤3,IPC线程状态模块通过waitForResponse(等待响应机制,可以是定时器)等到binder驱动的答复之后,将oneway_spam_detected标识位发送给进程状态模块(ProcessState模块)。
步骤4,进程状态模块首先判断oneway_spam_detected标识位是否为true,当该标识位是true时,存储handle、code数值,同时记录当前时间戳,次数计数器清零。
通过上述过程,在目标应用触发spam oneway告警机制的异常条件时,将oneway_spam_detected标识位置true,并保存service名称和binder申请函数名称。
后续,当同一transact函数重复申请binder服务符合预设条件时,触发告警。具体可以参照图8及图9所示。
由于spam oneway的告警机制只对相同进程(pid)生效一次,所以相同进程再一次申请异步Binder服务(可以通过service名称和Binder申请函数名称确定先后申请Binder服务的进程是否是同一个进程),则认为是一次恶意的申请,然后可以将oneway_spam_detected标识位置为false,记录Binder申请次数加1。
同时计算当前时间与记录的时间戳之间的差值;若当前时间与记录的时间戳之间的差值小于预设时间,则继续监测所述目标应用进程通过transact函数重复发送异步Binder调用请求的操作;基于所述Binder申请次数统计得到所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数。若所述目标应用进程在预设时间内(比如50ms内)通过transact函数重复发送异步Binder调用请求的次数超过预设次数(比如10次),则判定该目标应用进程的异步Binder调用满足预设条件。
其中,在将oneway_spam_detected标识位置为false之后,可以通过oneway_spam_detected标识位处理函数根据监控到的情况进行处理,oneway_spam_detected标识位处理函数具体处理流程可以参照图8及图9所示.
在一种可能的实施方式中,如图8所示,oneway_spam_detected标识位处理函数的具体处理流程可以包括:
步骤1,oneway_spam_detected标识位处理函数检测oneway_spam_detected标识位是否为true,当该标识位是true时,存储handle、code数值,同时记录当前时间戳,次数计数器清零;当检测到oneway_spam_detected标识位是false之后,开始对比传入的handle和code与存储的mHandle和mCode是否相同,如果相同,则判定为该进程又再一次申请binder,于是记录binder申请次数加1。
步骤2,如果当前时间减去记录的时间戳小于50ms,并且相同进程在spam oneway告警之后又重复申请binder超过10次,则认为发生了恶意Binder申请,将调用栈信息输出到Android设备data/vendor/log/spam_oneway下。
步骤3、如果当前时间减去记录的时间戳超过了50ms,则认为Binder申请不是很频繁,清空监控信息。
在另一种可能的实施方式中,如图9所示,oneway_spam_detected标识位处理函数的具体处理流程可以包括:
步骤1,oneway_spam_detected标识位处理函数检测oneway_spam_detected标识位是否为true,当该标识位是true时,存储handle、code数值,同时记录当前时间戳,次数计数器清零;当检测到oneway_spam_detected标识位是false之后,检测当前是否有存储的handle数值;
步骤2,如果当前有存储的handle数值,判断当前时间减去记录的时间戳是否大于50ms,如果当前时间减去记录的时间戳大于50ms,则认为Binder申请不是很频繁,存储变量、次数计数器清零。
步骤3,如果当前时间减去记录的时间戳小于50ms,则对比传入的handle和code与存储的mHandle和mCode是否相同,如果相同,则判定为该进程又再一次申请binder,于是记录binder申请次数加1;如果不相同,则流程结束。
步骤4,如果当前时间减去记录的时间戳小于50ms,并且相同进程在spam oneway告警之后又重复申请binder超过10次,则认为发生了恶意Binder申请,将调用栈信息输出到Android设备data/vendor/log/spam_oneway下,存储变量、次数计数器清零。
进一步地,对spam oneway目录下的调用栈信息上报到云端的处理流程可以参照图10所示。
以手机为例,首先,在手机上开机创建一条spam oneway轮询进程进行异常扫描,该进程可以每天在设置的时间点(比如凌晨4点)触发;
然后,当spam oneway异常扫描开始时,首先判断系统是否空闲,如果系统繁忙则不处理异常上报,此外,如果用户没有连接wifi也不处理异常上报,以节省流量;
当用户系统空闲,并且处于wifi场景下,则扫描data/vendor/log/spam_oneway路径,如果该路径下有文件,则将该文件上传到云端,同时在本地删除已上传成功的文件。
本实施例通过上述方案,当某应用进程已经触发spam oneway告警后,先保存handle、code的数值,如果在预设时间内(比如50ms)内又发送了预设次数(比如10次及以上)的异步Binder调用请求,则可以判断该应用进程在恶意申请Binder服务,这时可以将该应用进程的调用栈信息保存并上传到云端,从而可以更准确的监控到用户异步Binder资源耗尽异常。进而实现了对异步Binder调用中异常申请进行有效监控,避免异步Binder资源耗尽导致的卡死黑屏故障。
相比现有相关技术,当某个进程占用binder个数超过50,或者占用binder内存超过binder总内存1/4时,就会在logcat日志中输出spam oneway的告警的栈信息。现有技术方案的告警信息只是输出到了logcat日志中,当商用Android设备关闭logcat服务后,就会失去监控能力。
本申请实施例提供了故障日志存储和上传云端的处理方案,从而不必依赖logcat日志就能定位到恶意binder申请的问题原因。
此外,现有技术方案仅通过pid标识进程,识别到某进程申请Binder个数超过50,或者申请Binder内存超过Binder总内存1/4,则判断为发生了oneway spam suspect告警。该判断方式很单一,大多数情况并不准确。本申请实施例新增“service名称”和“binder申请函数名称”两个标识位来判断是否是同一个Binder服务申请者,比如,当某进程已经触发oneway spam suspect告警后,如果在50ms内又发送了10次及其以上的transact请求(异步binder调用请求),则可以判断该进程在恶意申请Binder服务,从而可以更准确地监控到该异常并将堆栈日志保存并上传到云端。
参照图11,图11为本申请另一个实施例提供的进程间通信监控方法的流程图。
如图11所示,本申请实施例提供的进程间通信监控方法应用于客户端,所述方法包括:
步骤S1101,响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,所述异步Binder调用请求包括预设的服务申请标识;
步骤S1102,将所述目标应用进程的异步Binder调用请求发送给服务端,由所述服务端基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
本实施例的详细方案可以参照上述图实施例以及图4-6,在此不再赘述。
参照图12,图12为本申请一个实施例提供的进程间通信监控装置的功能模块示意图。
如图12所示,本申请实施例提供的一种进程间通信监控装置1200包括:
第一监测模块1201,用于响应于目标应用进程的异步Binder调用请求,基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,所述异步Binder调用请求包括预设的服务申请标识;
第二监测模块1202,用于在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测;
判断模块1203,用于若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
本实施例实现进程间通信监控的原理,请参照上述各实施例,在此不再赘述。
参照图13,图13为本申请另一个实施例提供的进程间通信监控装置的功能模块示意图。
如图13所示,本申请实施例提供的一种进程间通信监控装置1300包括:
请求模块1301,用于响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,所述异步Binder调用请求包括预设的服务申请标识;
发送模块1302,用于将所述目标应用进程的异步Binder调用请求发送给服务端,由所述服务端基于预设的异步调用告警机制对所述目标应用进程的异步Binder调用进行监测,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
本实施例实现进程间通信监控的原理,请参照上述各实施例,在此不再赘述。
本申请还提供一种电子设备,包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中,所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行如上述可能的实现方式中任一项所述的进程间通信监控方法。
应理解的是,这里的电子设备以功能模块的形式体现。这里的术语“模块”可以通过软件和/或硬件形式实现,对此不作具体限定。例如,“模块”可以是实现上述功能的软件程序、硬件电路或二者结合。所述硬件电路可能包括应用特有集成电路(applicationspecific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得处理器执行如上述可能的实现方式中任一项所述的进程间通信监控方法。
本申请还提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述可能的实现方式中任一项所述的进程间通信监控方法。
作为一种可能的实现方式,该芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行上述可能的实现方式中任一项所述进程间通信监控方法。
存储器可以是只读存储器(read-only memory,ROM)、可存储静态信息和指令的其它类型的静态存储设备、随机存取存储器(random access memory,RAM)或可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者还可以是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质等。
本申请实施例中,“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示单独存在A、同时存在A和B、单独存在B的情况。其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
本领域普通技术人员可以意识到,本文中公开的实施例中描述的各单元及算法步骤,能够以电子硬件、计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,任一功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。本申请的保护范围应以所述权利要求的保护范围为准。

Claims (16)

1.一种进程间通信监控方法,其特征在于,所述方法应用于服务端,所述方法包括:
响应于目标应用进程的异步Binder调用请求,根据所述异步Binder调用请求,监测所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数以判定所述目标应用进程是否触发预设的告警,所述异步Binder调用请求包括预设的服务申请标识;
在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识,监测所述目标应用进程在预设时间内重复发送异步Binder调用请求的次数以判定所述目标应用进程的异步Binder调用是否满足预设条件;
若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
2.根据权利要求1所述的方法,其特征在于,所述响应于目标应用进程的异步Binder调用请求的步骤包括:
响应于目标应用进程通过transact函数发送的异步Binder调用请求;
监测所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数判定所述目标应用进程是否触发预设的告警的步骤包括:
监测所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数;
若所述目标应用进程申请异步Binder服务的个数超过第一预设阈值,和/或占用Binder内存资源的占用数超过第二预设阈值,则判定监测到所述目标应用进程触发预设的告警。
3.根据权利要求2所述的方法,其特征在于,监测所述目标应用进程在预设时间内重复发送异步Binder调用请求的次数以判定所述目标应用进程的异步Binder调用是否满足预设条件的步骤包括:
监测所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数;
若所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数超过预设次数,则判定所述目标应用进程的异步Binder调用满足预设条件。
4.根据权利要求3所述的方法,其特征在于,所述判定监测到所述目标应用进程触发预设的告警的步骤之后,还包括:
将预设的异步恶意请求检测标识位置为true,并记录当前时间戳,保存所述目标应用进程的异步Binder调用请求中的服务申请标识的数值,以对所述目标应用进程的异步Binder调用进行持续监测。
5.根据权利要求4所述的方法,其特征在于,所述在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识,监测所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数的步骤包括:
在监测到所述目标应用进程触发预设的告警后,若接收到所述transact函数再次发送的异步Binder调用请求,则对比所述transact函数传入的服务申请标识与保存的服务申请标识的数值是否相同;
若相同,则判定所述目标应用进程通过所述transact函数再次发送异步Binder调用请求;
将所述异步恶意请求检测标识位置为false,并将Binder申请次数加1;
计算当前时间与记录的时间戳之间的差值;
若当前时间与记录的时间戳之间的差值小于预设时间,则继续监测所述目标应用进程通过transact函数重复发送异步Binder调用请求的操作;
基于所述Binder申请次数统计得到所述目标应用进程在预设时间内通过transact函数重复发送异步Binder调用请求的次数。
6.根据权利要求5所述的方法,其特征在于,所述计算当前时间与记录的时间戳之间的差值的步骤之后还包括:
若当前时间与记录的时间戳之间的差值大于或等于预设时间,则清空保存的服务申请标识的数值。
7.根据权利要求5所述的方法,其特征在于,所述对比所述transact函数传入的服务申请标识与保存的服务申请标识的数值是否相同的步骤之后还包括:
若所述transact函数传入的服务申请标识与保存的服务申请标识的数值不相同,则计算当前时间与记录的时间戳之间的差值;
若当前时间与记录的时间戳之间的差值大于或等于预设时间,则清空保存的服务申请标识的数值。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述方法还包括:
针对存在恶意申请Binder服务的目标应用进程,生成调用栈信息;
将所述调用栈信息存储到本地设备预设的日志目录下,或者,将所述调用栈信息上报至云端。
9.根据权利要求1-7中任一项所述的方法,其特征在于,所述服务申请标识包括:service名称,或者,所述服务申请标识包括:service名称和Binder申请函数名称。
10.一种进程间通信监控方法,其特征在于,所述方法应用于客户端,所述方法包括:
响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,所述异步Binder调用请求包括预设的服务申请标识;
将所述目标应用进程的异步Binder调用请求发送给服务端,由所述服务端基于监测的所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数判定所述目标应用进程是否触发预设的告警,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识监测所述目标应用进程在预设时间内重复发送异步Binder调用请求的次数以判定所述目标应用进程的异步Binder调用是否满足预设条件,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
11.一种进程间通信监控系统,其特征在于,包括客户端与服务端,其中:
所述客户端,包括APK模块,用于响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,将所述目标应用进程的异步Binder调用请求发送给服务端,所述异步Binder调用请求包括预设的服务申请标识;
所述服务端,用于响应于目标应用进程的异步Binder调用请求,监测所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数以判定所述目标应用进程是否触发预设的告警,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识,监测所述目标应用进程在预设时间内重复发送异步Binder调用请求的次数以判定所述目标应用进程的异步Binder调用是否满足预设条件,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
12.根据权利要求11所述的进程间通信监控系统,其特征在于,所述服务端包括:IPC线程状态模块、Binder驱动模块和进程状态模块,其中:
所述IPC线程状态模块,用于接收所述APK模块发送的目标应用进程的异步Binder调用请求,根据所述异步Binder调用请求,将异步binder服务数据写入Binder驱动模块;
所述Binder驱动模块,用于监测所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数,若所述目标应用进程申请异步Binder服务的个数超过第一预设阈值,和/或占用Binder内存资源的占用数超过第二预设阈值,则判定监测到所述目标应用进程触发预设的告警,将预设的异步恶意请求检测标识位置为true,并将所述异步恶意请求检测标识位发送给IPC线程状态模块;
所述IPC线程状态模块,还用于将所述异步恶意请求检测标识位发送给所述进程状态模块;
所述进程状态模块,用于判断所述异步恶意请求检测标识位是否为true,在判断所述异步恶意请求检测标识位为true时,记录当前时间戳,保存当前异步Binder调用请求中的服务申请标识的数值,基于所述当前时间戳及服务申请标识对所述目标应用进程的异步Binder调用进行持续监测,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务,生成调用栈信息,存储到本地设备预设的日志目录下,或者,将所述调用栈信息上报至云端。
13.一种进程间通信监控装置,其特征在于,所述装置包括:
第一监测模块,用于响应于目标应用进程的异步Binder调用请求,根据所述异步Binder调用请求,监测所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数以判定所述目标应用进程是否触发预设的告警,所述异步Binder调用请求包括预设的服务申请标识;
第二监测模块,用于在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识,监测所述目标应用进程在预设时间内重复发送异步Binder调用请求的次数以判定所述目标应用进程的异步Binder调用是否满足预设条件;
判断模块,用于若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
14.一种进程间通信监控装置,其特征在于,所述装置包括:
请求模块,用于响应于对目标应用的操作指令,触发目标应用进程的异步Binder调用请求,所述异步Binder调用请求包括预设的服务申请标识;
发送模块,用于将所述目标应用进程的异步Binder调用请求发送给服务端,由所述服务端基于监测的所述目标应用进程申请异步Binder服务的个数和/或占用Binder内存资源的占用数判定所述目标应用进程是否触发预设的告警,在监测到所述目标应用进程触发预设的告警后,基于所述服务申请标识监测所述目标应用进程在预设时间内重复发送异步Binder调用请求的次数以判定所述目标应用进程的异步Binder调用是否满足预设条件,若所述目标应用进程的异步Binder调用满足预设条件,则判定所述目标应用进程存在恶意申请Binder服务。
15.一种电子设备,其特征在于,包括:一个或多个处理器;存储器;以及一个或多个计算机程序,其中,所述一个或多个计算机程序被存储在所述存储器中,所述一个或多个计算机程序包括指令,当所述指令被所述电子设备执行时,使得所述电子设备执行如权利要求1至9或者10中任一项所述的进程间通信监控方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储了计算机程序,当所述计算机程序被处理器执行时,使得处理器执行如权利要求1至9或者10中任一项所述的进程间通信监控方法。
CN202211738894.5A 2022-12-30 2022-12-30 进程间通信监控方法、装置、电子设备及存储介质 Active CN116662024B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211738894.5A CN116662024B (zh) 2022-12-30 2022-12-30 进程间通信监控方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211738894.5A CN116662024B (zh) 2022-12-30 2022-12-30 进程间通信监控方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116662024A CN116662024A (zh) 2023-08-29
CN116662024B true CN116662024B (zh) 2023-11-07

Family

ID=87721228

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211738894.5A Active CN116662024B (zh) 2022-12-30 2022-12-30 进程间通信监控方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116662024B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117340A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的监控方法、存储介质
CN111556045A (zh) * 2020-04-23 2020-08-18 亚信科技(成都)有限公司 一种恶意程序的检测方法和装置
WO2021223687A1 (zh) * 2020-05-07 2021-11-11 深圳市万普拉斯科技有限公司 通信模式状态切换方法、装置、计算机设备和存储介质
CN114153621A (zh) * 2022-02-09 2022-03-08 荣耀终端有限公司 系统进程调控方法、装置、电子设备及可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102460380B1 (ko) * 2017-09-30 2022-10-27 후아웨이 테크놀러지 컴퍼니 리미티드 시스템 서비스의 타임아웃을 처리하는 방법 및 디바이스

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117340A (zh) * 2018-06-29 2019-01-01 Oppo(重庆)智能科技有限公司 一种移动终端及其进程间通信的监控方法、存储介质
CN111556045A (zh) * 2020-04-23 2020-08-18 亚信科技(成都)有限公司 一种恶意程序的检测方法和装置
WO2021223687A1 (zh) * 2020-05-07 2021-11-11 深圳市万普拉斯科技有限公司 通信模式状态切换方法、装置、计算机设备和存储介质
CN114153621A (zh) * 2022-02-09 2022-03-08 荣耀终端有限公司 系统进程调控方法、装置、电子设备及可读存储介质

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Android下Binder进程间通信机制的分析与研究;王汝言 等;《计算机技术与发展》;第22卷(第9期);第107-115页 *
Performance analysis and optimization of inter process communication in Android;Cangzhou Yuan 等;《2016 6th International Conference on Electronics Information and Emergency Communication (ICEIEC)》;第297-300页 *
Research on android malware detection and interception based on behavior monitoring;Peng Guojun 等;《Wuhan University Journal of Natural Sciences》;第17卷(第5期);第421–427页 *
面向Android应用程序行为的安全监控系统设计与实现;阙斌生;《中国优秀硕士学位论文全文数据库 信息科技辑》;I138-565 *

Also Published As

Publication number Publication date
CN116662024A (zh) 2023-08-29

Similar Documents

Publication Publication Date Title
US11947974B2 (en) Application start method and electronic device
US11683850B2 (en) Bluetooth reconnection method and related apparatus
WO2020062159A1 (zh) 无线充电方法及电子设备
CN113170019B (zh) 一种基于应用的来电显示方法和终端设备
US11843712B2 (en) Address book-based device discovery method, audio and video communication method, and electronic device
US20220159453A1 (en) Method for Using Remote SIM Module and Electronic Device
US20230168802A1 (en) Application Window Management Method, Terminal Device, and Computer-Readable Storage Medium
CN114727101B (zh) 一种天线功率调节方法及电子设备
US11792631B2 (en) Emergency call method and user terminal
EP3893529A1 (en) Communication method based on bluetooth low energy, and related apparatus
EP4345669A1 (en) User privacy protection method and apparatus
CN110609650B (zh) 一种应用状态切换方法及终端设备
CN115119048B (zh) 一种视频流处理方法及电子设备
CN116709476B (zh) 唤醒设备的方法、装置、电子设备及存储介质
CN116662024B (zh) 进程间通信监控方法、装置、电子设备及存储介质
CN117544717A (zh) 风险识别方法和电子设备
US11815990B2 (en) Method for determining faulty computing core in multi-core processor and electronic device
CN116662150B (zh) 应用启动耗时检测方法及相关装置
CN117715001B (zh) 一种ims短信处理方法、电子设备及存储介质
CN117082170B (zh) 一种开关机测试方法、测试系统及共享主机
CN115460445B (zh) 电子设备的投屏方法和电子设备
CN116048545B (zh) 一种弹窗广告的处理方法、电子设备及可读存储介质
CN116707050B (zh) 充放电次数记录方法、装置、电子设备及可读存储介质
CN117130808B (zh) 一种日志采集方法及电子设备
CN117707243B (zh) 一种电子设备的温度控制方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant