CN104573420A - 防止进程被误杀的方法和装置 - Google Patents

防止进程被误杀的方法和装置 Download PDF

Info

Publication number
CN104573420A
CN104573420A CN201410836192.XA CN201410836192A CN104573420A CN 104573420 A CN104573420 A CN 104573420A CN 201410836192 A CN201410836192 A CN 201410836192A CN 104573420 A CN104573420 A CN 104573420A
Authority
CN
China
Prior art keywords
preset
executable file
operating system
preset executable
injecting
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.)
Granted
Application number
CN201410836192.XA
Other languages
English (en)
Other versions
CN104573420B (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.)
360 Digital Security Technology Group Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201410836192.XA priority Critical patent/CN104573420B/zh
Publication of CN104573420A publication Critical patent/CN104573420A/zh
Application granted granted Critical
Publication of CN104573420B publication Critical patent/CN104573420B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种防止进程被误杀的方法和装置,涉及计算机领域,该方法通过监测到操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件,该预设可执行文件判断被关闭的进程是否为预设的白名单中的进程,当该被关闭的进程为预设的白名单中的进程时,通过该预设可执行文件将该进程的属性设置为不可关闭,从而避免白名单中的进程被误杀,解决了目前操作系统中用户需求的必要进程可能被误杀的问题。

Description

防止进程被误杀的方法和装置
技术领域
本发明涉及计算机领域,具体涉及一种防止进程被误杀的方法和装置。
背景技术
目前,随着计算机技术的发展,各种应用程序对计算机资源的消耗也越来越严重,因此,各种操作系统出现了对于应用程序的进程的管理机制。
以Android系统为例,其系统进程ActivityManagerService,用于管理activity的各种行为,控制activity的生命周期,派发消息事件,低内存管理等等。当操作系统发生低内存情况,或用户选择对操作系统中的进程进行清除时,该系统进程会对进程进行遍历,若进程不是系统进程,则会对其执行removetask操作,将进程清除掉。
但是,如上述情况,即有可能造成应用程序的进程被误杀,导致应用程序无法正常运行。例如,优化软件、杀毒软件等在正常情况下,均需要在后台保持运行,以对操作系统的健康情况进行检测。
综上所述,目前缺乏防止进程被误杀的技术手段。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种防止进程被误杀的方法和相应地装置。
依据本发明的一个方面,提供了一种防止进程被误杀的方法,包括:
当操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件;
通过所述预设可执行文件判断被关闭的进程是否为预设的白名单中的进程;
当所述被关闭的进程为所述预设的白名单中的进程时,通过所述预设可执行文件将所述进程的属性设置为不可关闭。
可选地,在调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,所述方法还包括:
向操作系统中注入所述预设可执行文件,将所述预设可执行文件与所述特定系统进程挂钩。
可选地,所述向操作系统中注入预设可执行文件,包括:
通过静态注入或动态注入的方式向操作系统中注入预设可执行文件。
可选地,所述通过静态注入的方式向操作系统中注入预设可执行文件,将预设可执行文件与特定系统进程挂钩,包括:
在所述操作系统中添加所述预设可执行文件,并修改所述特定系统进程对应的程序文件,在所述特定系统进程对应的程序文件中加入指向所述预设可执行文件的地址。
可选地,所述通过动态注入的方式向操作系统中注入预设可执行文件,包括:
通过Ptrace函数向操作系统中注入预设可执行文件。
可选地,所述通过Ptrace函数向操作系统中注入预设可执行文件,将预设可执行文件与特定系统进程挂钩,包括:
在Ptrace函数中指定特定系统进程;
通过所述Ptrace函数获取所述特定系统进程的寄存器;
通过所述Ptrace函数修改所述寄存器,使所述寄存器中的地址指向预设地址;
通过所述Ptrace函数在所述预设地址对应的地址空间写入所述预设可执行文件。
可选地,在所述向操作系统中注入预设可执行文件之前,所述方法还包括:
获取所述操作系统的ROOT权限。
可选地,在所述调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,所述方法还包括:
检测所述操作系统中是否存在任意一个进程的调度组变量被标记为预设值;
其中,进程的调度组变量被标记为预设值为所述进程即将被所述操作系统执行关闭操作的标记。
可选地,所述调用与管理关闭进程的特定系统进程挂钩的预设可执行文件,包括:
通过Ptrace函数修改所述寄存器的方式执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件;
或者,
通过预设编译器套件的预编译指令执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件;
或者,
通过预设编程语言的全局对象初始化操作执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件。
可选地,在所述向操作系统中注入预设可执行文件之前,所述方法还包括:
获取所述操作系统的预设环境变量;
其中,所述预设环境变量为JNIEnv。
可选地,所述向操作系统中注入预设可执行文件,包括:
通过JAVA本地接口JNI以及环境变量JNIEnv,执行向操作系统中注入预设可执行文件的操作。
可选地,所述特定系统进程为ActivityManagerService进程;
所述预设可执行文件为动态链接库SO文件;
所述调度组变量为curSchedGroup;
所述预设值为Process.THREAD_GROUP_BG_NONINTERACTIVE。
依据本发明的一个方面,还提供了一种防止进程被误杀的装置,包括:
调用模块,适于当所述操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件;
判断模块,适于通过所述预设可执行文件判断被关闭的进程是否为预设的白名单中的进程;
禁止模块,适于当所述被关闭的进程为所述预设的白名单中的进程时,通过所述预设可执行文件将所述进程的属性设置为不可关闭。
可选地,所述装置还包括:
注入模块,适于在调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,向操作系统中注入所述预设可执行文件,将所述预设可执行文件与所述特定系统进程挂钩。
可选地,所述注入模块具体适于按照如下方式向操作系统中注入预设可执行文件:
通过静态注入或动态注入的方式向操作系统中注入预设可执行文件。
可选地,所述注入模块具体适于按照如下方式通过静态注入的方式向操作系统中注入预设可执行文件,将预设可执行文件与特定系统进程挂钩:
在所述操作系统中添加所述预设可执行文件,并修改所述特定系统进程对应的程序文件,在所述特定系统进程对应的程序文件中加入指向所述预设可执行文件的地址。
可选地,所述注入模块具体适于按照如下方式通过动态注入的方式向操作系统中注入预设可执行文件:
通过Ptrace函数向操作系统中注入预设可执行文件。
可选地,所述注入模块具体,包括:
进程指定单元,适于在Ptrace函数中指定特定系统进程;
寄存器读取单元,适于通过所述Ptrace函数获取所述特定系统进程的寄存器;
寄存器修改单元,适于通过所述Ptrace函数修改所述寄存器,使所述寄存器中的地址指向预设地址;
文件写入单元,适于通过所述Ptrace函数在所述预设地址对应的地址空间写入所述预设可执行文件。
可选地,所述装置还包括:
权限获取模块,适于在向操作系统中注入预设可执行文件之前,获取所述操作系统的ROOT权限。
可选地,所述装置还包括:
检测模块,适于在调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,检测所述操作系统中是否存在任意一个进程的调度组变量被标记为预设值;
其中,进程的调度组变量被标记为预设值为所述进程即将被所述操作系统执行关闭操作的标记。
可选地,所述调用模块适于按照如下方式调用与管理关闭进程的特定系统进程挂钩的预设可执行文件:
通过Ptrace函数修改所述寄存器的方式执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件;
或者,
通过预设编译器套件的预编译指令执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件;
或者,
通过预设编程语言的全局对象初始化操作执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件。
可选地,所述装置还包括:
环境变量获取模块,适于在向操作系统中注入预设可执行文件之前,获取所述操作系统的预设环境变量;
其中,所述预设环境变量为JNIEnv。
可选地,所述注入模块适于按照如下方式向操作系统中注入预设可执行文件:
通过JAVA本地接口JNI以及环境变量JNIEnv,执行向操作系统中注入预设可执行文件的操作。
可选地,所述特定系统进程为ActivityManagerService进程;
所述预设可执行文件为动态链接库SO文件;
所述调度组变量为curSchedGroup;
所述预设值为Process.THREAD_GROUP_BG_NONINTERACTIVE。
本发明提供了一种防止进程被误杀的方法和装置,通过监测到操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件,该预设可执行文件判断被关闭的进程是否为预设的白名单中的进程,当该被关闭的进程为预设的白名单中的进程时,通过该预设可执行文件将该进程的属性设置为不可关闭,从而避免白名单中的进程被误杀,解决了目前操作系统中用户需求的必要进程可能被误杀的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明一个实施例提供的一种防止进程被误杀的方法流程图;
图2是本发明一个实施例提供的一种防止进程被误杀的具体方法流程图;
图3是本发明一个实施例提供的一种防止进程被误杀的装置结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应该被这里阐述的实施例所限制。相反,提供这些实施例是为了能够透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
本发明实施例提供了一种防止进程被误杀的方法。其可以实现在终端设备中,使得用户需求的应用程序的进程不被操作系统所误杀。例如,本实施例中的终端设备可以为PC(Personal Computer,个人计算机),手机,平板、手持电脑等用户移动终端设备。
图1是本实施例提供的一种防止进程被误杀的方法流程图。该方法具体包括步骤S102至步骤S106。
S102:当操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件。
S104:通过预设可执行文件判断被关闭的进程是否为预设的白名单中的进程。
S106:当被关闭的进程为预设的白名单中的进程时,通过预设可执行文件将进程的属性设置为不可关闭。
本发明提供了一种防止进程被误杀的方法,通过监测到操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件,该预设可执行文件判断被关闭的进程是否为预设的白名单中的进程,当该被关闭的进程为预设的白名单中的进程时,通过该预设可执行文件将该进程的属性设置为不可关闭,从而避免白名单中的进程被误杀,解决了目前操作系统中用户需求的必要进程可能被误杀的问题。
实施例二
本实施例为上述实施例一的一种具体应用场景,通过本实施例,能够更加清楚、具体地阐述本发明所提供的方法。
应可理解,本发明并不限定终端设备的操作系统,只要可以应用本发明下述方案以达到防止进程被误关闭都适用于此。本领域技术人员在阅读本发明的基础上亦可以其他方式来实施本方法,其皆应涵盖在本发明的范围内。
以下,将以Android操作系统下实现防止进程被误杀为例说明本发明的技术方案:
图2是本实施例提供的一种防止进程被误杀的具体方法流程图。该方法共包括步骤S201至S207。
首先执行步骤S201,获取操作系统的预设环境变量。
其中,在本实施例中,由于以Android系统为例,该预设环境变量具体为JNIEnv。
需要说明的是,由于在本发明中,需要将可执行文件SO文件注入到操作系统中,而在Android系统的机制中,其操作系统内核由C语言编译得到,而在其操作系统中运行的程序需使用Java语言。在向其操作系统中注入一个由C或C++编译得到的SO文件时,需要调用JNI(JAVA本地接口)。因此,首先需要获取操作系统的环境变量JNIEnv才能对完成后续的注入操作。
在获取JNIEnv后,即可通过JNI调用函数完成后续的注入过程。
在获取预设的环境变量后,执行步骤S202,获取终端设备的ROOT权限。
其中Android操作系统中,在进行注入操作时,优选地使用Ptrace函数对寄存器进行读取和修改操作。而该函数要求用户具备ROOT权限才能使用。
在获取ROOT权限时,可以采取多种方式,并发明并不限定获取ROOT权限的方式,其中,本实施例示例性的提供一种root方法如下:
当需要获取操作系统的ROOT权限时,终端向服务器发送其操作系统的版本;
服务器根据终端的操作系统版本,在数据库中查询适于该终端的ROOT方案的可执行代码,并将该可执行代码发送给终端;
终端执行服务器发送的可执行代码,以完成对于终端的ROOT操作。
其中,服务器可保存有针对多种版本的操作系统的可执行代码,可执行代码可针对操作系统的漏洞获取ROOT权限。
在获取ROOT权限后,执行步骤S203,向操作系统中注入预设可执行文件,并将该预设可执行与特点系统进程挂钩。
其中,在Android操作系统中,由ActivityManagerService负责对操作系统中的进程的管理,进程的关闭操作即由该进程执行。
为了更清楚的对本发明进行说明,下面对ActivityManagerService对于进程关闭操作的过程进行说明:
当用户执行对操作系统中的进程进行关闭的操作时(例如用户选择对内存进行清理),操作系统调用ActivityManagerService中的cleanUpRemovedTaskLocked方法,并执行操作如下:
遍历操作系统中的全部进程:
若为home进程(例如系统进程),则执行continue操作,使进程保持运行;
若进程的调度组变量为预设值,则对其执行remove task操作,即关闭该进程。
其中,调度组变量为curSchedGroup;
预设值为Process.THREAD_GROUP_BG_NONINTERACTIVE。
本发明通过重新代码改变现有的ActivityManagerService对于进程的关闭方法实现防止进程被误杀,并将代码封装在预设可执行文件中,并将该预设可执行文件注入到操作系统中,与ActivityManagerService进程挂钩。
其中,该挂钩也即HOOK操作,预设可执行文件优选地为SO文件(Android操作系统中的静态链接库文件)。
下面具体说明向操作系统中注入预设可执行文件,并将该预设可执行与特点系统进程挂钩的方法。
其中,向操作系统中注入预设可执行文件包括两种方式:
(1)静态注入。
静态注入,也即在操作系统中添加上述预设可执行文件,并修改特定系统进程对应的程序文件,在该特定系统进程对应的程序文件中加入指向上述预设可执行文件的地址。
其中,添加上述预设可执行文件的方式可以为将预设可执行文件拷入到终端的指定路径下。
对于在该特定系统进程对应的程序文件中加入指向上述预设可执行文件的地址,可通过多种现有工具进行实现,例如IDA(Interactive Disassembler,交互式反汇编工具)、JEB、ApkTool等。
在完成静态注入后,操作系统通过进程ActivityManagerService进行进程关闭时,则会跳转到我们注入的SO文件中,进而执行我们重新实现的方案(也即步骤S204到步骤S207),从而避免进程被误杀。
(2)动态注入的方式。
动态注入的方式可通过多种函数进行实现,在本发明中,以通过Ptrace函数实现为例进行说明。
其中,Ptrace函数可实现在Linux下修改内存的功能,而Android操作系统采用Linux内核,因此可通过该函数对终端的内存进行修改,进而实现动态注入SO文件,具体方法如下:
a)在Ptrace函数中指定特定系统进程。
具体地,也即跟踪特定系统进程,可以通过如下代码对特定系统进程执行ATTACH操作:
ptrace(PTRACE_ATTACH,pid,NULL,0),ptrace(PTRACE_SYSCALL,pid,NULL,0)
其中,pid为特定系统进程的进程标识,上述代码可表示对进程标识为上述pid的进程执行ATTACH操作(也即跟踪)。
b)获取特定系统进程的寄存器,并保存现场。
具体地,可通过如下代码实现获取特定系统进程的寄存器,并保存现场的操作:
ptrace(PTRACE_GETREGS,pid,NULL,regs)
其中,该代码标识对于进程标识如括号中所述的pid的进程执行GETREGS操作(获取寄存器中的值),并保存现场。
保存现场,也即暂停该进程的运行。
c)通过特定系统进程中的mmap地址,获取特定系统进程中的dlsym和dlopen函数的地址。
其中,mmap函数用于在操作系统中完成文件到内存中的映射,因此,通过其地址可以得到特定系统进程中的dlsym和dlopen函数。
dlsym函数可用于根据动态链接库操作句柄与符号,返回符号对应的地址;
dlopen函数可用于以指定模式打开指定的动态链接库文件,并返回一个句柄给dlsym的调用进程。
通过该两个函数,ActivityManagerService进程可完成打开并调用动态链接库SO文件的操作,因此,获取这两个函数的地址后,即可开始注入SO文件。
d)注入预设可执行文件,即SO文件。
其中,该步骤d)可通过如下代码实现:
ptrace_dlopen(process_hook.pid,remote_dlopen_addr,“自己的so”)
该代码用于将预设可执行文件SO文件注入到操作系统中,并与进程标识为括号中的pid的进程进行hook操作。
e)恢复寄存器。
其中,恢复寄存器可通过如下代码实现:
ptrace(PTRACE_SETREGS,pid,NULL,regs)
该代码标识对进程标识为括号中所述的pid的进程设置寄存器,在设置后即完成恢复,这时进程的线程也恢复(也即恢复进程的运行)。
需要说明的是,由于我们将特定系统进程中的dlopen函数的地址写入了我们自己的SO文件,因此,特定系统进程在执行dlopen函数(打开动态链接库操作)时,就会跳转到我们重新的代码上,执行我们重新设定的逻辑,而不再按照操作系统的原生逻辑进行进程的关闭操作。
f)结束对特定系统进程的跟踪。
其中,注入与HOOK操作结束,即可结束对特定系统进程的跟踪,可通过如下代码实现:
ptrace(PTRACE_DETACH,pid,NULL,0)
PTRACE_DETACH即结束跟踪操作。
在完成注入后,执行步骤S204,检查操作系统中是否存在任意一个进程的调度组变量被标记为预设值,如果是,执行步骤S205,如果不是,隔预设时间段后,再次返回执行本步骤S204。
其中,调度组变量为curSchedGroup;
预设值为Process.THREAD_GROUP_BG_NONINTERACTIVE。
由步骤S202中对现有操作系统对进程的关闭方法可知,当调度组变量被标记为Process.THREAD_GROUP_BG_NONINTERACTIVE时,则会将该进程执行remove task操作(也即关闭)。
需要说明的是,本步骤可以为一个轮询式的判断。例如,预设时间段可以为0.5ms,每隔0.5ms执行步骤S204一次。
因此,当存在上述状态的进程时,即可调用我们在SO文件中重新写入的逻辑,执行步骤S205,通过预设可执行文件判断该进程是否在预设的白名单中。
其中,预设白名单中可以保存有不希望被误杀的进程的标识,例如:
杀毒软件的进程、优化软件的进程、下载软件的进程、音乐软件的进程等等。
需要说明的是,调用注入的可执行文件,可采用多种方式,包括但不限于如下:
第一种,通过Ptrace函数修改寄存器的方式执行与管理关闭进程的特定系统进程挂钩的预设可执行文件;
第二种,通过预设编译器套件的预编译指令执行与管理关闭进程的特定系统进程挂钩的预设可执行文件;
其中,上述预设编译器套件可以为gcc;
上述预编译指令可以为__attribute__((__constructor__))。
第三种,通过预设编程语言的全局对象初始化操作执行与管理关闭进程的特定系统进程挂钩的预设可执行文件。
当上述进程在白名单中时,执行步骤S206,将该进程的属性设置为不可关闭。
其中,将该进程的属性设置为不可关闭,也即不对该进程执行remove task操作,在本实施例中,由于通过注入的SO文件改变了现有的进程关闭处理逻辑,因此,若进程在白名单中,可控制不关闭该进程。
当上述进程不在白名单中时,执行步骤S207,关闭该进程。
具体地,可通过操作系统现有的逻辑,对该进程执行remove task操作,将其关闭。
本发明实施例提供了一种防止进程被误杀的方法,通过监测到操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件,该预设可执行文件判断被关闭的进程是否为预设的白名单中的进程,当该被关闭的进程为预设的白名单中的进程时,通过该预设可执行文件将该进程的属性设置为不可关闭,从而避免白名单中的进程被误杀,解决了目前操作系统中用户需求的必要进程可能被误杀的问题。
实施例三
图3是本发明一个实施例提供的一种防止进程被误杀的装置结构框图。该装置300包括:
调用模块310,适于当操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件;
判断模块320,适于通过预设可执行文件判断被关闭的进程是否为预设的白名单中的进程;
禁止模块330,适于当被关闭的进程为预设的白名单中的进程时,通过预设可执行文件将进程的属性设置为不可关闭。
可选地,该装置300还包括:
注入模块340,适于在调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,向操作系统中注入预设可执行文件,将该预设可执行文件与特定系统进程挂钩。
可选地,注入模块340具体适于按照如下方式向操作系统中注入预设可执行文件:
通过静态注入或动态注入的方式向操作系统中注入预设可执行文件。
可选地,注入模块340具体适于按照如下方式通过静态注入的方式向操作系统中注入预设可执行文件,将该预设可执行文件与特定系统进程挂钩:
在操作系统中添加预设可执行文件,并修改特定系统进程对应的程序文件,在特定系统进程对应的程序文件中加入指向预设可执行文件的地址。
可选地,注入模块340具体适于按照如下方式通过动态注入的方式向操作系统中注入预设可执行文件:
通过Ptrace函数向操作系统中注入预设可执行文件。
可选地,注入模块340包括:
进程指定单元341,适于在Ptrace函数中指定特定系统进程;
寄存器读取单元342,适于通过Ptrace函数获取特定系统进程的寄存器;
寄存器修改单元343,适于通过Ptrace函数修改寄存器,使寄存器中的地址指向预设地址;
文件写入单元344,适于通过Ptrace函数在预设地址对应的地址空间写入预设可执行文件。
可选地,该装置300还包括:
权限获取模块350,适于在向操作系统中注入预设可执行文件之前,获取操作系统的ROOT权限。
可选地,该装置300还包括:
检测模块360,适于在调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,检测操作系统中是否存在任意一个进程的调度组变量被标记为预设值;
其中,进程的调度组变量被标记为预设值为该进程即将被操作系统执行关闭操作的标记。
可选地,调用模块310适于按照如下方式调用与管理关闭进程的特定系统进程挂钩的预设可执行文件:
通过Ptrace函数修改寄存器的方式执行与管理关闭进程的特定系统进程挂钩的预设可执行文件;
或者,
通过预设编译器套件的预编译指令执行与管理关闭进程的特定系统进程挂钩的预设可执行文件;
或者,
通过预设编程语言的全局对象初始化操作执行与管理关闭进程的特定系统进程挂钩的预设可执行文件。
可选地,该装置300还包括:
环境变量获取模块370,适于在向操作系统中注入预设可执行文件之前,获取操作系统的预设环境变量;
其中,预设环境变量为JNIEnv。
可选地,注入模块340适于按照如下方式向操作系统中注入预设可执行文件:
通过JAVA本地接口JNI以及环境变量JNIEnv,执行向操作系统中注入预设可执行文件的操作。
可选地,上述特定系统进程为ActivityManagerService进程;
上述预设可执行文件为动态链接库SO文件;
上述调度组变量为curSchedGroup;
上述预设值为Process.THREAD_GROUP_BG_NONINTERACTIVE。
本发明提供了一种防止进程被误杀的装置,通过监测到操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件,该预设可执行文件判断被关闭的进程是否为预设的白名单中的进程,当该被关闭的进程为预设的白名单中的进程时,通过该预设可执行文件将该进程的属性设置为不可关闭,从而避免白名单中的进程被误杀,解决了目前操作系统中用户需求的必要进程可能被误杀的问题。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的防止进程被误杀的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
本发明实施例提供了A1.一种防止进程被误杀的方法,包括:当操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件;通过所述预设可执行文件判断被关闭的进程是否为预设的白名单中的进程;当所述被关闭的进程为所述预设的白名单中的进程时,通过所述预设可执行文件将所述进程的属性设置为不可关闭。A2.根据A1所述的方法,其中,在调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,所述方法还包括:向操作系统中注入所述预设可执行文件,将所述预设可执行文件与所述特定系统进程挂钩。A3.根据A2所述的方法,其中,所述向操作系统中注入预设可执行文件,包括:通过静态注入或动态注入的方式向操作系统中注入预设可执行文件。A4.根据A3所述的方法,其中,所述通过静态注入的方式向操作系统中注入预设可执行文件,将预设可执行文件与特定系统进程挂钩,包括:在所述操作系统中添加所述预设可执行文件,并修改所述特定系统进程对应的程序文件,在所述特定系统进程对应的程序文件中加入指向所述预设可执行文件的地址。A5.根据A3所述的方法,其中,所述通过动态注入的方式向操作系统中注入预设可执行文件,包括:通过Ptrace函数向操作系统中注入预设可执行文件。A6.根据A5所述的方法,其中,所述通过Ptrace函数向操作系统中注入预设可执行文件,将预设可执行文件与特定系统进程挂钩,包括:在Ptrace函数中指定特定系统进程;通过所述Ptrace函数获取所述特定系统进程的寄存器;通过所述Ptrace函数修改所述寄存器,使所述寄存器中的地址指向预设地址;通过所述Ptrace函数在所述预设地址对应的地址空间写入所述预设可执行文件。A7.根据A2至A6任一项所述的方法,其中,在所述向操作系统中注入预设可执行文件之前,所述方法还包括:获取所述操作系统的ROOT权限。A8.根据A1至A7任一项所述的方法,其中,在所述调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,所述方法还包括:检测所述操作系统中是否存在任意一个进程的调度组变量被标记为预设值;其中,进程的调度组变量被标记为预设值为所述进程即将被所述操作系统执行关闭操作的标记。A9.根据A1至A8任一项所述的方法,其中,所述调用与管理关闭进程的特定系统进程挂钩的预设可执行文件,包括:通过Ptrace函数修改所述寄存器的方式执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件;或者,通过预设编译器套件的预编译指令执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件;或者,通过预设编程语言的全局对象始化操作执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件。A10.根据A2至A9任一项所述的方法,其中,在所述向操作系统中注入预设可执行文件之前,所述方法还包括:获取所述操作系统的预设环境变量;其中,所述预设环境变量为JNIEnv。A11.根据A10所述的方法,其中,所述向操作系统中注入预设可执行文件,包括:通过JAVA本地接口JNI以及环境变量JNIEnv,执行向操作系统中注入预设可执行文件的操作。A12.根据A1至A11任一项所述的方法,其中,所述特定系统进程为ActivityManagerService进程;所述预设可执行文件为动态链接库SO文件;所述调度组变量为curSchedGroup;所述预设值为Process.THREAD_GROUP_BG_NONINTERACTIVE。
本发明实施例提供了B13.一种防止进程被误杀的装置,包括:调用模块,适于当所述操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件;判断模块,适于通过所述预设可执行文件判断被关闭的进程是否为预设的白名单中的进程;禁止模块,适于当所述被关闭的进程为所述预设的白名单中的进程时,通过所述预设可执行文件将所述进程的属性设置为不可关闭。B14.根据B13所述的装置,其中,所述装置还包括:注入模块,适于在调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,向操作系统中注入所述预设可执行文件,将所述预设可执行文件与所述特定系统进程挂钩。B15.根据B14所述的装置,其中,所述注入模块具体适于按照如下方式向操作系统中注入预设可执行文件:通过静态注入或动态注入的方式向操作系统中注入预设可执行文件。B16.根据B15所述的装置,其中,所述注入模块具体适于按照如下方式通过静态注入的方式向操作系统中注入预设可执行文件,将预设可执行文件与特定系统进程挂钩:在所述操作系统中添加所述预设可执行文件,并修改所述特定系统进程对应的程序文件,在所述特定系统进程对应的程序文件中加入指向所述预设可执行文件的地址。B17.根据B15所述的装置,其中,所述注入模块具体适于按照如下方式通过动态注入的方式向操作系统中注入预设可执行文件:通过Ptrace函数向操作系统中注入预设可执行文件。B18.根据B17所述的装置,其中,所述注入模块具体,包括:进程指定单元,适于在Ptrace函数中指定特定系统进程;寄存器读取单元,适于通过所述Ptrace函数获取所述特定系统进程的寄存器;寄存器修改单元,适于通过所述Ptrace函数修改所述寄存器,使所述寄存器中的地址指向预设地址;文件写入单元,适于通过所述Ptrace函数在所述预设地址对应的地址空间写入所述预设可执行文件。B19.根据B14至B18任一项所述的装置,其中,所述装置还包括:权限获取模块,适于在向操作系统中注入预设可执行文件之前,获取所述操作系统的ROOT权限。B20.根据B13至B19任一项所述的装置,其中,所述装置还包括:检测模块,适于在调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,检测所述操作系统中是否存在任意一个进程的调度组变量被标记为预设值;其中,进程的调度组变量被标记为预设值为所述进程即将被所述操作系统执行关闭操作的标记。B21.根据B13至B20任一项所述的装置,其中,所述调用模块适于按照如下方式调用与管理关闭进程的特定系统进程挂钩的预设可执行文件:通过Ptrace函数修改所述寄存器的方式执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件;或者,通过预设编译器套件的预编译指令执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件;或者,通过预设编程语言的全局对象初始化操作执行所述与管理关闭进程的特定系统进程挂钩的预设可执行文件。B22.根据B14至B21任一项所述的装置,其中,所述装置还包括:环境变量获取模块,适于在向操作系统中注入预设可执行文件之前,获取所述操作系统的预设环境变量;其中,所述预设环境变量为JNIEnv。B23.根据B22所述的装置,其中,所述注入模块适于按照如下方式向操作系统中注入预设可执行文件:通过JAVA本地接口JNI以及环境变量JNIEnv,执行向操作系统中注入预设可执行文件的操作。B24.根据B13至B23任一项所述的装置,其中,所述特定系统进程为ActivityManagerService进程;所述预设可执行文件为动态链接库SO文件;所述调度组变量为curSchedGroup;所述预设值为Process.THREAD_GROUP_BG_NONINTERACTIVE。

Claims (10)

1.一种防止进程被误杀的方法,包括:
当操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件;
通过所述预设可执行文件判断被关闭的进程是否为预设的白名单中的进程;
当所述被关闭的进程为所述预设的白名单中的进程时,通过所述预设可执行文件将所述进程的属性设置为不可关闭。
2.根据权利要求1所述的方法,其中,在所述调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,所述方法还包括:
向操作系统中注入所述预设可执行文件,将所述预设可执行文件与所述特定系统进程挂钩。
3.根据权利要求2所述的方法,其中,所述向操作系统中注入预设可执行文件,包括:
通过静态注入或动态注入的方式向操作系统中注入预设可执行文件。
4.根据权利要求3所述的方法,其中,所述通过静态注入的方式向操作系统中注入预设可执行文件,将预设可执行文件与特定系统进程挂钩,包括:
在所述操作系统中添加所述预设可执行文件,并修改所述特定系统进程对应的程序文件,在所述特定系统进程对应的程序文件中加入指向所述预设可执行文件的地址。
5.根据权利要求3所述的方法,其中,所述通过动态注入的方式向操作系统中注入预设可执行文件,包括:
通过Ptrace函数向操作系统中注入预设可执行文件。
6.一种防止进程被误杀的装置,包括:
调用模块,适于当所述操作系统中存在关闭进程的操作时,调用与管理关闭进程的特定系统进程挂钩的预设可执行文件;
判断模块,适于通过所述预设可执行文件判断被关闭的进程是否为预设的白名单中的进程;
禁止模块,适于当所述被关闭的进程为所述预设的白名单中的进程时,通过所述预设可执行文件将所述进程的属性设置为不可关闭。
7.根据权利要求6所述的装置,其中,所述装置还包括:
注入模块,适于在调用与管理关闭进程的特定系统进程挂钩的预设可执行文件之前,向操作系统中注入所述预设可执行文件,将所述预设可执行文件与所述特定系统进程挂钩。
8.根据权利要求7所述的装置,其中,所述注入模块具体适于按照如下方式向操作系统中注入预设可执行文件:
通过静态注入或动态注入的方式向操作系统中注入预设可执行文件。
9.根据权利要求8所述的装置,其中,所述注入模块具体适于按照如下方式通过静态注入的方式向操作系统中注入预设可执行文件,将预设可执行文件与特定系统进程挂钩:
在所述操作系统中添加所述预设可执行文件,并修改所述特定系统进程对应的程序文件,在所述特定系统进程对应的程序文件中加入指向所述预设可执行文件的地址。
10.根据权利要求8所述的装置,其中,所述注入模块具体适于按照如下方式通过动态注入的方式向操作系统中注入预设可执行文件:
通过Ptrace函数向操作系统中注入预设可执行文件。
CN201410836192.XA 2014-12-26 2014-12-26 防止进程被误杀的方法和装置 Active CN104573420B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410836192.XA CN104573420B (zh) 2014-12-26 2014-12-26 防止进程被误杀的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410836192.XA CN104573420B (zh) 2014-12-26 2014-12-26 防止进程被误杀的方法和装置

Publications (2)

Publication Number Publication Date
CN104573420A true CN104573420A (zh) 2015-04-29
CN104573420B CN104573420B (zh) 2017-04-05

Family

ID=53089464

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410836192.XA Active CN104573420B (zh) 2014-12-26 2014-12-26 防止进程被误杀的方法和装置

Country Status (1)

Country Link
CN (1) CN104573420B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106228064A (zh) * 2016-07-27 2016-12-14 宇龙计算机通信科技(深圳)有限公司 一种应用进程的保护方法和装置
CN106648704A (zh) * 2017-01-05 2017-05-10 广东欧珀移动通信有限公司 一种进程管理的方法、装置及移动终端
CN106682504A (zh) * 2015-11-06 2017-05-17 珠海市君天电子科技有限公司 一种防止文件被恶意编辑的方法、装置及电子设备
CN106886691A (zh) * 2015-12-15 2017-06-23 珠海市君天电子科技有限公司 用于结束进程操作的拦截方法、装置和电子设备
CN108415736A (zh) * 2018-02-06 2018-08-17 新浪网技术(中国)有限公司 利用进程文件系统标记程序进程的方法、装置和设备
CN109189654A (zh) * 2018-08-02 2019-01-11 山东浪潮通软信息科技有限公司 一种移动端用户行为轨迹记录方法
CN111177024A (zh) * 2019-12-30 2020-05-19 青岛海尔科技有限公司 一种内存优化处理方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040210640A1 (en) * 2003-04-17 2004-10-21 Chadwick Michael Christopher Mail server probability spam filter
CN103164229A (zh) * 2013-04-08 2013-06-19 北京奇虎科技有限公司 一种清理移动终端进程的方法及装置
CN103345397A (zh) * 2013-07-11 2013-10-09 北京奇虎科技有限公司 一种清理移动终端进程的方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040210640A1 (en) * 2003-04-17 2004-10-21 Chadwick Michael Christopher Mail server probability spam filter
CN103164229A (zh) * 2013-04-08 2013-06-19 北京奇虎科技有限公司 一种清理移动终端进程的方法及装置
CN103345397A (zh) * 2013-07-11 2013-10-09 北京奇虎科技有限公司 一种清理移动终端进程的方法及装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106682504A (zh) * 2015-11-06 2017-05-17 珠海市君天电子科技有限公司 一种防止文件被恶意编辑的方法、装置及电子设备
CN106682504B (zh) * 2015-11-06 2019-08-06 珠海豹趣科技有限公司 一种防止文件被恶意编辑的方法、装置及电子设备
CN106886691A (zh) * 2015-12-15 2017-06-23 珠海市君天电子科技有限公司 用于结束进程操作的拦截方法、装置和电子设备
CN106886691B (zh) * 2015-12-15 2020-01-14 珠海豹趣科技有限公司 用于结束进程操作的拦截方法、装置和电子设备
CN106228064A (zh) * 2016-07-27 2016-12-14 宇龙计算机通信科技(深圳)有限公司 一种应用进程的保护方法和装置
CN106648704A (zh) * 2017-01-05 2017-05-10 广东欧珀移动通信有限公司 一种进程管理的方法、装置及移动终端
CN108415736A (zh) * 2018-02-06 2018-08-17 新浪网技术(中国)有限公司 利用进程文件系统标记程序进程的方法、装置和设备
CN108415736B (zh) * 2018-02-06 2021-03-30 新浪网技术(中国)有限公司 利用进程文件系统标记程序进程的方法、装置和设备
CN109189654A (zh) * 2018-08-02 2019-01-11 山东浪潮通软信息科技有限公司 一种移动端用户行为轨迹记录方法
CN111177024A (zh) * 2019-12-30 2020-05-19 青岛海尔科技有限公司 一种内存优化处理方法及装置

Also Published As

Publication number Publication date
CN104573420B (zh) 2017-04-05

Similar Documents

Publication Publication Date Title
CN104573420B (zh) 防止进程被误杀的方法和装置
US10181029B1 (en) Security cloud service framework for hardening in the field code of mobile software applications
US10296437B2 (en) Framework for efficient security coverage of mobile software applications
Zheng et al. DroidTrace: A ptrace based Android dynamic analysis system with forward execution capability
US9594905B1 (en) Framework for efficient security coverage of mobile software applications using machine learning
US9009823B1 (en) Framework for efficient security coverage of mobile software applications installed on mobile devices
US20170068586A1 (en) Systems and methods of detecting power bugs
US9367681B1 (en) Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application
US9009822B1 (en) Framework for multi-phase analysis of mobile applications
CN106096395A (zh) 一种安卓应用的保护处理方法和装置
CN104375861A (zh) 基于安卓平台的应用程序免安装运行的方法、装置及终端
US20200026850A1 (en) Techniques for serverless runtime application self-protection
CN108229148B (zh) 一种基于Android虚拟机的沙箱脱壳方法及系统
US10013553B2 (en) Protecting software application
CN104885092A (zh) 用于操作系统的安全系统和方法
US9459990B2 (en) Automatic and transparent application logging
US20110145924A1 (en) Method for detection and prevention of loading executable files from the current working directory
CN104731622B (zh) 一种应用程序的加载方法、装置和移动终端
CN103699835B (zh) 一种面向Android系统资源的访问控制方法
US10078580B2 (en) Operations to avoid wrapped mobile application operational errors due to interference from wrapper logic components
CN103793248A (zh) 一种应用程序升级的方法及装置
CN104715202A (zh) 一种虚拟机中的隐藏进程检测方法和装置
CN103116715A (zh) Windows平台可执行文件API延迟导入保护方法
Danner et al. Safer Sloth: efficient, hardware-tailored memory protection
Johnson et al. Forced-path execution for android applications on x86 platforms

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee after: Beijing Qizhi Business Consulting Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210622

Address after: 100016 1773, 15 / F, 17 / F, building 3, No.10, Jiuxianqiao Road, Chaoyang District, Beijing

Patentee after: Beijing Hongteng Intelligent Technology Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Beijing Qizhi Business Consulting Co.,Ltd.

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100016 1773, 15 / F, 17 / F, building 3, No.10, Jiuxianqiao Road, Chaoyang District, Beijing

Patentee after: Sanliu0 Digital Security Technology Group Co.,Ltd.

Address before: 100016 1773, 15 / F, 17 / F, building 3, No.10, Jiuxianqiao Road, Chaoyang District, Beijing

Patentee before: Beijing Hongteng Intelligent Technology Co.,Ltd.