CN114489841B - 一种快速检测安卓系统幽灵进程限制的方法 - Google Patents
一种快速检测安卓系统幽灵进程限制的方法 Download PDFInfo
- Publication number
- CN114489841B CN114489841B CN202210044752.2A CN202210044752A CN114489841B CN 114489841 B CN114489841 B CN 114489841B CN 202210044752 A CN202210044752 A CN 202210044752A CN 114489841 B CN114489841 B CN 114489841B
- Authority
- CN
- China
- Prior art keywords
- ghost
- android system
- processes
- target application
- limitation
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种快速检测安卓系统幽灵进程限制的方法,包括如下步骤:安装目标应用程序至安卓系统终端设备;启动目标应用程序,根据要判断的安卓系统幽灵进程限制的数值,使用目标应用程序的主进程创建预定个数的进程,创建的进程执行休眠操作;启动新进程,所述新进程为Zygote fork的进程;在启动的新进程中制造ANR,触发安卓系统的幽灵进程回收机制;检测创建的进程的存活数量;根据检测结果判断安卓系统是否存在幽灵进程限制以及幽灵进程限制的数量。本发明通过在通过创建进程、触发ANR、检测进程是否被回收的方式来检测安卓系统的幽灵进程限制,具有很好的通用性和时效性。
Description
技术领域
本发明属于安卓系统应用技术领域,具体涉及一种快速检测安卓系统幽灵进程限制的方法。
背景技术
安卓(Android)系统由于其开源的特性,得到了较为广泛的应用,各大手机厂商均投入生产、设计自己的安卓系统,安卓系统已成为最具影响力的手机操作系统。
安卓系统的更新速度很快,现在已经更新到了安卓12,在安卓12系统上,为了有效管控程序耗电、CPU性能占用,安卓12通过cgroup机制可以标记程序自行fork(创建)的进程,从而进行管理,安卓程序的进程为zygote系统进程创建而来,由Zygote fork出来的进程,是受系统管理的进程。对于程序自行创建的进程,安卓标记为PhantomProcess(幽灵进程,即为安卓程序的子进程,zygote系统进程的孙子和孙子辈分以下的进程。对于幽灵进程有明确的CPU占用限制和进程数上限限制,安卓12系统对于幽灵进程的限制的上限为32个,幽灵进程的限制会导致部分未主动兼容安卓12的程序存在不兼容现象。
现有的技术方案中,可通过更改系统设置可以将此限制更改为2147483647,此时可视为没有限制。此限制可以通过adb命令来查询: adb shell "/system/bin/device_config get activity_manager max_phantom_processes",但是普通的安卓应用没有权限通过此方法来查询的。
综上所述,亟需提供一种具备很好的通用性和时效性的快速检测安卓系统幽灵进程限制的方法。
发明内容
本发明的目的是提供一种具备很好的通用性和时效性的快速检测安卓系统幽灵进程限制的方法。
上述目的是通过如下技术方案实现:一种快速检测安卓系统幽灵进程限制的方法,包括如下步骤:
S1,安装目标应用程序至安卓系统终端设备;
S2,启动目标应用程序,根据要判断的安卓系统幽灵进程限制的数值,使用目标应用程序的主进程fork预定个数的进程,创建的进程执行sleep操作;
S3,启动新进程,所述新进程为Zygote fork的进程;
S4,在步骤S3中启动的新进程中制造ANR,触发安卓系统的幽灵进程回收机制;
S5,检测所述步骤S2中创建的进程的存活数量;
S6,根据步骤S5的检测结果判断安卓系统是否存在幽灵进程限制以及幽灵进程限制的数量。
需要说明的是,本领域技术人员应当清楚在编写目标应用程序代码的过程中可根据所要实现的功能与步骤编制这样一个目标应用程序。
步骤S2中创建的进程的预定个数是根据要判断的数值(安卓系统幽灵进程限制的数量)设定,如果要检测的是默认进程限制,即32个幽灵进程的限制,那么步骤S2中创建的预定个数的进程,要至少比32个进程要多,即至少33个进程,比如创建64个进程。因为安卓系统会定期杀死幽灵进程或在某些情况下触发幽灵进程的回收机制,直到进程数量少于或等于幽灵进程数量限制,若要有进程被杀掉,则要创建多于上述限制数量的进程。
进一步的技术方案是,所述步骤S4中调用appNotResponding在新进程中直接触发ANR。 一般情况下App主线程5秒钟没有响应就会触发ANR,本发明直接调用appNotResponding方法可以直接触发ANR,响应快速。
进一步的技术方案是,所述步骤S3中启动的进程为Service进程或BroadcastReceiver进程。如果安卓应用的界面线程处于阻塞状态的时间过长,会触发“应用无响应”(ANR) 错误。如果应用位于前台,系统会向用户显示一个应用无响应的对话框。一般情况下触发ANR会产生App没有响应的系统弹窗,但是如果该进程没有界面的话就不会产生此弹窗,一般情况下Service进程或Broadcast Receiver进程时没有界面的,因此不会产生系统弹窗。
进一步的技术方案是,在编写目标应用程序时在AndroidManifest.xml声明独立进程的Service或Broadcast Receiver。如此,可以在启动Service或Broadcast Receiver时启动新的进程,在新的进程中进行Service或Broadcast Receiver的活动。
进一步的技术方案是,所述步骤S6中判断标准为:若步骤S2中创建的进程都在运行,则安卓系统的幽灵进程限制的数量大于要判断的数值;若少于步骤S2中创建的进程正在运行,则安卓系统的幽灵进程限制的数量小于或等于要判断的数值。
进一步的技术方案是,所述步骤S5中,在目标应用程序的主进程中调用waitpid函数检测所述步骤S2中创建的进程的状态。
进一步的技术方案是,所述步骤S6后还包括步骤S7:杀掉步骤S2中创建的所有进程的步骤。如此,以减少对系统资源的占用。
进一步的技术方案是,所述步骤S7中,在目标应用程序的主进程中调用kill函数杀死所有在S2中创建的进程,并调用waitpid防止产生僵尸进程。
本发明通过在通过创建进程、触发ANR、检测进程是否被回收的方式来检测安卓系统的幽灵进程限制,具有很好的通用性和时效性。
具体实施方式
以下结合具体实施例对本发明作进一步描述,以助于更好地理解本发明,但本发明的保护范围并不仅限于这些实施例。
本发明实施例如下,一种快速检测安卓系统幽灵进程限制的方法,包括如下步骤:
S1,安装目标应用程序至安卓系统终端设备;
S2,启动目标应用程序,根据要判断的安卓系统幽灵进程限制的数值,使用目标应用程序的主进程fork预定个数的进程,创建的进程执行sleep(循环休眠)操作;
S3,启动新进程,所述新进程为Zygote fork的进程;
S4,在步骤S3中启动的新进程中制造ANR(应用无响应),触发安卓系统的幽灵进程回收机制;
S5,检测所述步骤S2中创建的进程的存活数量;
S6,根据步骤S5的检测结果判断安卓系统是否存在幽灵进程限制以及幽灵进程限制的数量。
需要说明的是,本领域技术人员应当清楚在编写目标应用程序代码的过程中可根据所要实现的功能与步骤编制这样一个目标应用程序。
步骤S2中创建的进程的预定个数是根据要判断的数值(安卓系统幽灵进程限制的数量)设定,如果要检测的是默认进程限制,即32个幽灵进程的限制,那么步骤S2中创建的预定个数的进程,要至少比32个进程要多,即至少33个进程,比如创建64个进程。因为安卓系统会定期杀死幽灵进程或在某些情况下触发幽灵进程的回收机制,直到进程数量少于或等于幽灵进程数量限制,若要有进程被杀掉,则要创建多于上述限制数量的进程。
在上述实施例的基础上,本发明另一实施例中,所述步骤S4中调用appNotResponding在新进程中直接触发ANR。 一般情况下App主线程5秒钟没有响应就会触发ANR,本发明直接调用appNotResponding方法可以直接触发ANR,响应快速。
在上述实施例的基础上,本发明另一实施例中,所述步骤S3中启动的进程为Service进程(服务)或Broadcast Receiver进程(广播接收者)。如果安卓应用的界面线程处于阻塞状态的时间过长,会触发“应用无响应”(ANR) 错误。如果应用位于前台,系统会向用户显示一个应用无响应的对话框。一般情况下触发ANR会产生App没有响应的系统弹窗,但是如果该进程没有界面的话就不会产生此弹窗,一般情况下Service进程或BroadcastReceiver进程时没有界面的,因此不会产生系统弹窗。
在上述实施例的基础上,本发明另一实施例中,在编写目标应用程序时在AndroidManifest.xml声明独立进程的Service或Broadcast Receiver。如此,可以在启动Service或Broadcast Receiver时启动新的进程,在新的进程中进行Service或BroadcastReceiver的活动。
在上述实施例的基础上,本发明另一实施例中,所述步骤S6中判断标准为:若步骤S2中创建的进程都在运行,则安卓系统的幽灵进程限制的数量大于要判断的数值;若少于步骤S2中创建的进程正在运行,则安卓系统的幽灵进程限制的数量小于或等于要判断的数值。
在上述实施例的基础上,本发明另一实施例中,所述步骤S5中,在目标应用程序的主进程中调用waitpid函数检测所述步骤S2中创建的进程的状态。
在上述实施例的基础上,本发明另一实施例中,所述步骤S6后还包括步骤S7:杀掉步骤S2中创建的所有进程的步骤。如此,以减少对系统资源的占用。
在上述实施例的基础上,本发明另一实施例中,所述步骤S7中,在目标应用程序的主进程中调用kill函数杀死所有在S2中创建的进程,并调用waitpid防止产生僵尸进程。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (8)
1.一种快速检测安卓系统幽灵进程限制的方法,其特征在于,包括如下步骤:
S1,安装目标应用程序至安卓系统终端设备;
S2,启动目标应用程序,根据要判断的安卓系统幽灵进程限制的数值,使用目标应用程序的主进程fork预定个数的进程,创建的进程执行sleep操作;
S3,启动新进程,所述新进程为Zygote fork的进程;
S4,在步骤S3中启动的新进程中制造应用无响应ANR,触发安卓系统的幽灵进程回收机制;
S5,检测所述步骤S2中创建的进程的存活数量;
S6,根据步骤S5的检测结果判断安卓系统是否存在幽灵进程限制以及幽灵进程限制的数量。
2.根据权利要求1所述的快速检测安卓系统幽灵进程限制的方法,其特征在于,所述步骤S4中调用appNotResponding在新进程中直接触发ANR。
3.根据权利要求2所述的快速检测安卓系统幽灵进程限制的方法,其特征在于,所述步骤S3中启动的进程为Service进程或Broadcast Receiver进程。
4.根据权利要求3所述的快速检测安卓系统幽灵进程限制的方法,其特征在于,在编写目标应用程序时在AndroidManifest.xml声明独立进程的Service或Broadcast Receiver。
5.根据权利要求1~4任意一项所述的快速检测安卓系统幽灵进程限制的方法,其特征在于,所述步骤S6中判断标准为:若步骤S2中创建的进程都在运行,则安卓系统的幽灵进程限制的数量大于要判断的数值;若少于步骤S2中创建的进程正在运行,则安卓系统的幽灵进程限制的数量小于或等于要判断的数值。
6.根据权利要求5所述的快速检测安卓系统幽灵进程限制的方法,其特征在于,所述步骤S5中,在目标应用程序的主进程中调用waitpid函数检测所述步骤S2中创建的进程的状态。
7.根据权利要求5所述的快速检测安卓系统幽灵进程限制的方法,其特征在于,所述步骤S6后还包括步骤S7:杀掉步骤S2中创建的所有进程的步骤。
8.根据权利要求7所述的快速检测安卓系统幽灵进程限制的方法,其特征在于,所述步骤S7中,在目标应用程序的主进程中调用kill函数杀死所有在S2中创建的进程,并调用waitpid防止产生僵尸进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210044752.2A CN114489841B (zh) | 2022-01-14 | 2022-01-14 | 一种快速检测安卓系统幽灵进程限制的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210044752.2A CN114489841B (zh) | 2022-01-14 | 2022-01-14 | 一种快速检测安卓系统幽灵进程限制的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114489841A CN114489841A (zh) | 2022-05-13 |
CN114489841B true CN114489841B (zh) | 2023-07-25 |
Family
ID=81511219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210044752.2A Active CN114489841B (zh) | 2022-01-14 | 2022-01-14 | 一种快速检测安卓系统幽灵进程限制的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114489841B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376256A (zh) * | 2014-12-02 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序进程孵化控制方法及装置 |
WO2016008414A1 (zh) * | 2014-07-18 | 2016-01-21 | 广州金山网络科技有限公司 | 一种安卓系统Activity的安全性确定方法及装置 |
CN106775861A (zh) * | 2016-12-08 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 应用程序卸载的自我监听方法及其系统 |
US10171290B1 (en) * | 2016-08-25 | 2019-01-01 | Sprint Communications Company L.P. | Systems and methods for real-time correction of core applications |
CN110990874A (zh) * | 2019-12-04 | 2020-04-10 | 厦门安胜网络科技有限公司 | 一种用于Android文件的安全防护方法和系统 |
CN112416549A (zh) * | 2020-11-18 | 2021-02-26 | 珠海格力电器股份有限公司 | 进程管理方法、装置、电子设备和存储介质 |
CN113190282A (zh) * | 2021-04-07 | 2021-07-30 | 北京鲸鲮信息系统技术有限公司 | 安卓运行环境构建的方法及装置 |
-
2022
- 2022-01-14 CN CN202210044752.2A patent/CN114489841B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016008414A1 (zh) * | 2014-07-18 | 2016-01-21 | 广州金山网络科技有限公司 | 一种安卓系统Activity的安全性确定方法及装置 |
CN104376256A (zh) * | 2014-12-02 | 2015-02-25 | 北京奇虎科技有限公司 | 应用程序进程孵化控制方法及装置 |
US10171290B1 (en) * | 2016-08-25 | 2019-01-01 | Sprint Communications Company L.P. | Systems and methods for real-time correction of core applications |
CN106775861A (zh) * | 2016-12-08 | 2017-05-31 | 武汉斗鱼网络科技有限公司 | 应用程序卸载的自我监听方法及其系统 |
CN110990874A (zh) * | 2019-12-04 | 2020-04-10 | 厦门安胜网络科技有限公司 | 一种用于Android文件的安全防护方法和系统 |
CN112416549A (zh) * | 2020-11-18 | 2021-02-26 | 珠海格力电器股份有限公司 | 进程管理方法、装置、电子设备和存储介质 |
CN113190282A (zh) * | 2021-04-07 | 2021-07-30 | 北京鲸鲮信息系统技术有限公司 | 安卓运行环境构建的方法及装置 |
Non-Patent Citations (1)
Title |
---|
一种动态监测安卓应用程序的方法;蒋煦;张慧翔;慕德俊;;西北工业大学学报(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114489841A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9378060B2 (en) | Runtime co-location of executing logic and frequently-accessed application data | |
CN112104486A (zh) | 一种基于Kubernetes容器的网络端点切片的方法及其系统 | |
US11429461B2 (en) | Broadcast control method and apparatus, and terminal | |
EP3663958B1 (en) | Trusted kernel-based attack-prevention data processor | |
CN114489841B (zh) | 一种快速检测安卓系统幽灵进程限制的方法 | |
CN107171926B (zh) | 多平台消息推送服务的切换方法及装置 | |
KR20040062394A (ko) | 멀티스레드 어플리케이션에서 스레드 실행을 관리하기위한 방법 및 장치 | |
CN111474860A (zh) | 一种基于失效智能场景的处理方法、设备及存储介质 | |
CN107911229B (zh) | 运行状态改变的提醒方法、装置、电子设备及存储介质 | |
JP6972437B2 (ja) | 電子制御ユニット及びプログラム | |
CN107179980B (zh) | 用于监视计算系统的方法和相应的计算系统 | |
CN114461353A (zh) | 调整线程优先级的方法、终端及计算机可读存储介质 | |
CN111679887A (zh) | 一种代理容器的配置方法及装置 | |
CN110674060A (zh) | 服务的熔断控制方法及装置 | |
CN110769046B (zh) | 一种报文获取方法、装置、电子设备及机器可读存储介质 | |
CN113158164A (zh) | 一种Android学生平板管控应用的方法 | |
CN108616461B (zh) | 一种策略切换方法及装置 | |
KR101854996B1 (ko) | 악성 애플리케이션을 방지할 수 있는 소프트웨어 정의 네트워크 및 이에 포함되는 판단 장치 | |
JP6897254B2 (ja) | 通信システム、通信プログラム、およびコンピュータ読取可能な記録媒体 | |
TW201835760A (zh) | 移動裝置之應用程式管理方法及移動裝置 | |
JP2020109927A (ja) | 検知装置、検知方法、および、検知プログラム | |
CN116319624B (zh) | 一种报文处理方法、装置、设备和存储介质 | |
KR20220086297A (ko) | 방화벽 시스템 및 이를 이용한 방화벽 정책 관리 방법 | |
CN115291999A (zh) | 云容器集群资源动态均衡的方法及系统 | |
US20230176898A1 (en) | Systems and methods for managing interrupt priority levels |
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 |