[go: up one dir, main page]

CN106169044A - 一种保护线程数据的方法、装置及电子设备 - Google Patents

一种保护线程数据的方法、装置及电子设备 Download PDF

Info

Publication number
CN106169044A
CN106169044A CN201610500464.8A CN201610500464A CN106169044A CN 106169044 A CN106169044 A CN 106169044A CN 201610500464 A CN201610500464 A CN 201610500464A CN 106169044 A CN106169044 A CN 106169044A
Authority
CN
China
Prior art keywords
thread
function
path
handle
hooking
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
CN201610500464.8A
Other languages
English (en)
Other versions
CN106169044B (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.)
Zhuhai Baoqu Technology Co Ltd
Original Assignee
Beijing Kingsoft Internet Security Software 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 Kingsoft Internet Security Software Co Ltd filed Critical Beijing Kingsoft Internet Security Software Co Ltd
Priority to CN201610500464.8A priority Critical patent/CN106169044B/zh
Publication of CN106169044A publication Critical patent/CN106169044A/zh
Application granted granted Critical
Publication of CN106169044B publication Critical patent/CN106169044B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

本发明的实施例公开一种保护线程数据的方法、装置及电子设备,涉及信息安全技术,能够有效提升线程数据安全。包括:在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时,挂钩函数;获取调用设置线程上下文内核函数的应用程序发起的目标线程数据写入请求,将所述目标线程数据写入请求中的目标应用程序对应的目标线程句柄写入所述挂钩函数中的线程句柄参数中;依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径;如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,向所述目标线程数据写入请求返回拒绝写入信息。本发明适用于保护线程数据不被恶意修改。

Description

一种保护线程数据的方法、装置及电子设备
技术领域
本发明涉及信息安全技术,尤其涉及一种保护线程数据的方法、装置及电子设备。
背景技术
随着Windows系统内核层技术细节的逐渐公开,越来越多的木马病毒等恶意应用程序(APP,Application),为了自身存活和非法利益,开始使用利用远程线程修改目标应用程序对应的目标线程的线程数据,使之能够注入预先设置的动态链接库至目标应用程序的进程或线程上运行,从而控制目标应用程序,使得恶意应用程序的线程可以根据恶意应用程序提供者的意图,对用户的线程或系统线程进行恶意攻击,可能造成计算机运行不稳定,甚至可能给用户带来非常大的经济损失。其中,进程(Process)是计算机中的应用程序关于数据集合上的一次运行活动,应用程序是指令、数据及其组织形式的描述,进程是应用程序的实体,一进程包括一个或多个线程。线程数据是一个内核结构上表述,该内核结构保存有线程的各寄存器值以及CPU执行状态值等,如果线程数据被恶意修改,可以控制线程的执行,从而使得被控制的线程执行各种恶意行为,例如,注入恶意模块等。
目前,还没有提出一种有效的方法来防止线程数据被恶意修改。
发明内容
有鉴于此,本发明实施例提供一种保护线程数据的方法、装置及电子设备,能够有效提升线程数据安全,以解决现有的保护线程数据的方法中,恶意应用程序利用线程上下文内核函数对目标线程执行线程数据写入操作,从而破坏操作系统的问题。
第一方面,本发明实施例提供一种保护线程数据的方法,包括:
在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时,挂钩所述设置线程上下文内核函数;
获取调用所述设置线程上下文内核函数的应用程序发起的目标线程数据写入请求,将所述目标线程数据写入请求中的目标应用程序对应的目标线程句柄写入所述挂钩函数中的线程句柄参数中;
依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径;
如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,向所述目标线程数据写入请求返回拒绝写入信息。
结合第一方面,在第一方面的第一种实施方式中,在所述在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时之前,所述方法还包括:
调用操作系统的挂钩函数窗口设置接口,设置用于监测调用所述设置线程上下文内核函数的挂钩函数,并获取操作系统的根权限以注入所述挂钩函数。
结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,所述注入所述挂钩函数包括:
在系统服务描述符表中查询并获取所述设置线程上下文内核函数的函数地址,存储所述设置线程上下文内核函数的函数地址;
利用所述挂钩函数替换所述设置线程上下文内核函数,设置所述挂钩函数在所述系统服务描述符表中的函数地址不同于所述设置线程上下文内核函数的函数地址;
在所述挂钩函数中设置存储的所述设置线程上下文内核函数的函数地址,以用于调用所述设置线程上下文内核函数。
结合第一方面,在第一方面的第三种实施方式中,所述依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径包括:
枚举操作系统的所有线程的线程句柄;
获取与所述挂钩函数的线程句柄参数相匹配的线程句柄;
调用线程路径获取内核函数,查询获取所述相匹配的线程句柄的线程路径。
结合第一方面、第一方面的第一种至第三种中任一种实施方式,在第一方面的第四种实施方式中,在所述依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径之前,所述方法还包括:
依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;
提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,执行所述依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径的步骤。
结合第一方面、第一方面的第一种至第三种中任一种实施方式,在第一方面的第五种实施方式中,在所述向所述目标线程数据写入请求返回拒绝写入信息之前,所述方法还包括:
依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;
提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,执行所述向所述目标线程数据写入请求返回拒绝写入信息的步骤。
第二方面,本发明实施例提供一种保护线程数据的装置,包括:挂钩模块、句柄写入模块、线程路径获取模块以及匹配处理模块,其中,
挂钩模块,用于在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时,挂钩所述设置线程上下文内核函数;
句柄写入模块,用于获取调用所述设置线程上下文内核函数的应用程序发起的目标线程数据写入请求,将所述目标线程数据写入请求中的目标应用程序对应的目标线程句柄写入所述挂钩函数中的线程句柄参数中;
线程路径获取模块,用于依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径;
匹配处理模块,如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,向所述目标线程数据写入请求返回拒绝写入信息。
结合第二方面,在第二方面的第一种实施方式中,所述装置还包括:
挂钩函数注入模块,用于调用操作系统的挂钩函数窗口设置接口,设置用于监测调用所述设置线程上下文内核函数的挂钩函数,并获取操作系统的根权限以注入所述挂钩函数。
结合第二方面的第一种实施方式,在第二方面的第二种实施方式中,所述挂钩函数注入模块包括:调用单元、设置单元、函数地址获取单元、替换单元以及注入单元,其中,
调用单元,用于调用操作系统的挂钩函数窗口设置接口;
设置单元,用于设置用于监测调用所述设置线程上下文内核函数的挂钩函数;
函数地址获取单元,用于获取操作系统的根权限,在系统服务描述符表中查询并获取所述设置线程上下文内核函数的函数地址,存储所述设置线程上下文内核函数的函数地址;
替换单元,用于利用所述挂钩函数替换所述设置线程上下文内核函数,设置所述挂钩函数在所述系统服务描述符表中的函数地址不同于所述设置线程上下文内核函数的函数地址;
注入单元,用于在所述挂钩函数中设置存储的所述设置线程上下文内核函数的函数地址,以用于调用所述设置线程上下文内核函数。
结合第二方面,在第二方面的第三种实施方式中,所述线程路径获取模块包括:枚举单元、线程句柄获取单元以及线程路径获取单元,其中,
枚举单元,用于枚举操作系统的所有线程的线程句柄;
线程句柄获取单元,用于获取与所述挂钩函数的线程句柄参数相匹配的线程句柄;
线程路径获取单元,用于调用线程路径获取内核函数,查询获取所述相匹配的线程句柄的线程路径。
结合第二方面、第二方面的第一种至第三种中任一种实施方式,在第二方面的第四种实施方式中,所述装置还包括:
应用程序匹配模块,用于依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,通知线程路径获取模块。
结合第二方面、第二方面的第一种至第三种中任一种实施方式,在第二方面的第五种实施方式中,所述匹配处理模块包括:线程路径匹配单元、线程路径定位单元、提取单元以及处理单元,其中,
线程路径匹配单元,如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,通知线程路径定位单元;
线程路径定位单元,用于依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;
提取单元,用于提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,通知处理单元;
处理单元,用于向所述目标线程数据写入请求返回拒绝写入信息。
第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的保护线程数据的方法。
本发明实施例提供的一种保护线程数据的方法、装置及电子设备,通过在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时,挂钩所述设置线程上下文内核函数;获取调用所述设置线程上下文内核函数的应用程序发起的目标线程数据写入请求,将所述目标线程数据写入请求中的目标应用程序对应的目标线程句柄写入所述挂钩函数中的线程句柄参数中;依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径;如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,向所述目标线程数据写入请求返回拒绝写入信息,能够有效提升线程数据安全,以解决现有的保护线程数据的方法中,恶意应用程序利用线程上下文内核函数对目标线程执行线程数据写入操作,从而破坏操作系统的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的实施例一保护线程数据的方法流程示意图;
图2为本发明的实施例二保护线程数据的装置结构示意图;
图3为本发明电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明的实施例一保护线程数据的方法流程示意图,如图1所示,本实施例的方法可以包括:
步骤101,在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时,挂钩所述设置线程上下文内核函数;
本实施例中,作为一可选实施例,设置线程上下文内核函数为NtSetContextThread内核函数,用于执行线程数据编辑。
本实施例中,通过分析,当应用程序,例如恶意应用程序对目标应用程序的目标线程对应的线程数据进行修改时,首先需要调用开启线程内核函数(NtOpenThread内核函数)打开目标线程获取到目标线程对应的线程句柄,然后,通过获取的线程句柄调用NtSetContextThread内核函数进行写(编辑)线程数据的操作,以修改相应的线程数据,从而控制目标应用程序对应的目标线程的执行。因而,本实施例中,通过注入挂钩(Hook)函数,挂钩NtSetContextThread内核函数,即可实现恶意应用程序对目标线程执行写线程数据的拦截。
本实施例中,注入的挂钩(Hook)函数用于监听设置线程上下文内核函数的相关操作(写线程数据操作),并在相关操作对应的目标应用程序线程(目标线程)与预先设置的目标应用程序线程相匹配时,拦截该相关操作,转由注入的挂钩函数对该相关操作进行处理,并向调用设置线程上下文内核函数的调用者(例如,一些恶意应用程序)返回相应处理结果。
本实施例中,挂钩函数可以采用能够实现本实施例后续步骤相应功能的任意语言进行编程得到,例如,可以采用超级文本预处理语言(PHP,Hypertext Preprocessor)、C、C++、Linux等语言进行编程得到。
作为一可选实施例,可在安全防护软件在加载防护驱动时注入挂钩函数,例如,在金山毒霸防御驱动加载时注入挂钩函数。
本实施例中,作为一可选实施例,在所述在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时之前,该方法还可以包括:
调用操作系统的挂钩函数窗口设置(SetWindowsHookEx)接口,设置用于监测调用所述设置线程上下文内核函数的挂钩函数,并获取操作系统的根权限以注入所述挂钩函数。
本实施例中,作为一可选实施例,所述注入所述挂钩函数包括:
A11,在系统服务描述符表(SSDT,System Services Descriptor Table)中查询并获取所述设置线程上下文内核函数的函数地址,存储所述设置线程上下文内核函数的函数地址;
本实施例中,SSDT是一将ring3,即应用层的Win32API和ring0,即内核层的内核API联系起来的描述符表,SSDT并不仅仅只包含一个庞大的函数地址索引表,还包含着一些其它有用的信息,例如,地址索引的基地址、服务函数个数等。通过修改SSDT的函数地址,可以对常用Windows函数及API进行钩子处理,从而有效防控恶意线程对安全防护线程或进程的恶意攻击。
A12,利用所述挂钩函数替换所述设置线程上下文内核函数,设置所述挂钩函数在所述系统服务描述符表中的函数地址不同于所述设置线程上下文内核函数的函数地址;
A13,在所述挂钩函数中设置存储的所述设置线程上下文内核函数的函数地址,以用于调用所述设置线程上下文内核函数。
本实施例中,通过存储设置线程上下文内核函数的函数地址,可以在挂钩函数确认可以允许进行线程数据写操作时,可以调用设置线程上下文内核函数以执行真实的线程数据写入操作。
步骤102,获取调用所述设置线程上下文内核函数的应用程序发起的目标线程数据写入请求,将所述目标线程数据写入请求中的目标应用程序对应的目标线程句柄写入所述挂钩函数中的线程句柄参数中;
本实施例中,当恶意应用程序通过调用NtOpenThread内核函数发起目标线程数据写入请求时,在目标线程数据写入请求中携带有目标应用程序对应的目标线程句柄。
本实施例中,作为一可选实施例,在挂钩函数中,包含有线程句柄参数,线程句柄参数为一指针或线程标识,指向一块包含具体信息数据的内存,是线程路径的索引,本实施例中,通过将目标线程数据写入请求中携带的目标线程句柄写入到线程句柄参数中,可以在后续中依据该写入有目标线程句柄的线程句柄参数,获取对应的线程路径。
步骤103,依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径;
本实施例中,作为一可选实施例,所述依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径包括:
B11,枚举操作系统的所有线程的线程句柄;
本实施例中,作为一可选实施例,枚举操作系统的所有线程的线程句柄包括:
调用线程句柄获取内核函数,获取操作系统的所有线程的线程句柄。
本实施例中,作为一可选实施例,线程句柄获取内核函数包括:ObReferenceObjectByHandle内核函数以及IoThreadToProcess内核函数。
B12,获取与所述挂钩函数的线程句柄参数相匹配的线程句柄;
B13,调用线程路径获取内核函数,查询获取所述相匹配的线程句柄的线程路径。
本实施例中,作为一可选实施例,线程路径获取内核函数为ZwQueryInformationProcess内核函数或PsGetCurrentProcess内核函数。例如,如果与所述挂钩函数的线程句柄参数相匹配的线程句柄为金山毒霸的安全防护线程句柄,调用ZwQueryInformationProcess内核函数或PsGetCurrentProcess内核函数,查询得到的线程路径格式可以为:C:\Program Files\kingsoft\kingsoft antivirus\kxetray.exe、kxescore.exe等。
步骤104,如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,向所述目标线程数据写入请求返回拒绝写入信息。
本实施例中,预先设置需要保护的目标应用程序线程目录路径库,当获取的线程路径与目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配时,需要对该目标应用程序线程进行保护。
本实施例中,作为一可选实施例,在所述依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径之前,该方法还包括:
C11,依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;
本实施例中,通过调用PsGetCurrentProcess内核函数或ZwQueryInformationProcess内核函数,可查询到发起所述目标线程数据写入请求的应用程序的线程路径,例如,C:\windows\system32\ab22.exe。
C12,提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,执行所述依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径的步骤。
本实施例中,以前述为例,线程路径中的最后子目录下的字符串为ab22.exe,通过匹配线程中的字符串,以判断发起所述目标线程数据写入请求的应用程序是否为恶意应用程序,如果不是,则无需处理,如果是,则在该应用程序向预先设置的目标应用程序写入线程数据时,需要进行阻止。例如,线程路径中的最后子目录下的字符串包括:ab22.exe、ac22.exe、av22.exe等时,确认提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配。
本实施例中,作为一可选实施例,该方法还包括:
如果提取的字符串与预先设置的拦截应用程序字符串库中所有拦截应用程序字符串均不相匹配,通知所述设置线程上下文内核函数对所述目标线程执行线程数据写操作。
作为另一可选实施例,在所述向所述目标线程数据写入请求返回拒绝写入信息之前,该方法还包括:
D11,依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;
D12,提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,执行所述向所述目标线程数据写入请求返回拒绝写入信息的步骤。
本实施例中,可以是在判断写入线程数据是针对目标线程后,判断发起写入线程数据的应用程序是否为恶意应用程序,如果是,则进行阻止,如果不是,则通知所述设置线程上下文内核函数对所述目标线程执行线程数据写操作。
本实施例中,在挂钩函数中,直接返回一拒绝写入信息,退出执行线程数据写入的操作,使得NtSetContextThread内核函数不会执行到写入线程数据的流程,从而达到拦截应用程序恶意修改线程数据的目的。
本本实施例一保护线程数据的方法,通过在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时,挂钩所述设置线程上下文内核函数;获取调用所述设置线程上下文内核函数的应用程序发起的目标线程数据写入请求,将所述目标线程数据写入请求中的目标应用程序对应的目标线程句柄写入所述挂钩函数中的线程句柄参数中;依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径;如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,向所述目标线程数据写入请求返回拒绝写入信息。这样,通过挂钩设置线程上下文内核函数,在挂钩函数里,判断目标应用程序对应的目标线程路径是否在预设的目标应用程序线程目录路径库内,从而杜绝恶意应用程序利用线程上下文内核函数对目标线程执行线程数据写入操作以破坏操作系统,有利于提高安全线程自我保护能力以及线程数据安全,对维护操作系统安全有积极意义。
图2为本发明的实施例二保护线程数据的装置结构示意图,如图2所示,本实施例的装置可以包括:挂钩模块21、句柄写入模块22、线程路径获取模块23以及匹配处理模块24,其中,
挂钩模块21,用于在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时,挂钩所述设置线程上下文内核函数;
本实施例中,作为一可选实施例,设置线程上下文内核函数为NtSetContextThread内核函数。
本实施例中,挂钩函数可以采用能够实现本实施例后续步骤相应功能的任意语言进行编程得到,例如,可以采用超级文本预处理语言(PHP,Hypertext Preprocessor)、C、C++、Linux等语言进行编程得到。
作为一可选实施例,可在安全防护软件在加载防护驱动时注入挂钩函数,例如,在金山毒霸防御驱动加载时注入挂钩函数。
句柄写入模块22,用于获取调用所述设置线程上下文内核函数的应用程序发起的目标线程数据写入请求,将所述目标线程数据写入请求中的目标应用程序对应的目标线程句柄写入所述挂钩函数中的线程句柄参数中;
本实施例中,作为一可选实施例,在挂钩函数中,包含有线程句柄参数,线程句柄参数为一指针或线程标识,指向一块包含具体信息数据的内存,是线程路径的索引,本实施例中,通过将目标线程数据写入请求中携带的目标线程句柄写入到线程句柄参数中,可以在后续中依据该写入有目标线程句柄的线程句柄参数,获取对应的线程路径。
线程路径获取模块23,用于依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径;
本实施例中,作为一可选实施例,线程路径获取模块23包括:枚举单元、线程句柄获取单元以及线程路径获取单元(图中未示出),其中,
枚举单元,用于枚举操作系统的所有线程的线程句柄;
本实施例中,作为一可选实施例,枚举操作系统的所有线程的线程句柄包括:
调用线程句柄获取内核函数,获取操作系统的所有线程的线程句柄。
本实施例中,作为一可选实施例,线程句柄获取内核函数包括:ObReferenceObjectByHandle内核函数以及IoThreadToProcess内核函数。
线程句柄获取单元,用于获取与所述挂钩函数的线程句柄参数相匹配的线程句柄;
线程路径获取单元,用于调用线程路径获取内核函数,查询获取所述相匹配的线程句柄的线程路径。
本实施例中,作为一可选实施例,线程路径获取内核函数为ZwQueryInformationProcess内核函数或PsGetCurrentProcess内核函数。
匹配处理模块24,如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,向所述目标线程数据写入请求返回拒绝写入信息。
本实施例中,在挂钩函数中,直接返回一拒绝写入信息,退出执行线程数据写入的操作,使得NtSetContextThread内核函数不会执行到写入线程数据的流程,从而达到拦截应用程序恶意修改线程数据的目的。
本实施例中,作为一可选实施例,匹配处理模块24包括:线程路径匹配单元、线程路径定位单元、提取单元以及处理单元(图中未示出),其中,
线程路径匹配单元,如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,通知线程路径定位单元;
线程路径定位单元,用于依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;
提取单元,用于提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,通知处理单元;
处理单元,用于向所述目标线程数据写入请求返回拒绝写入信息。
本实施例中,作为一可选实施例,匹配处理模块24还用于如果提取的字符串与预先设置的拦截应用程序字符串库中所有拦截应用程序字符串均不相匹配,通知所述设置线程上下文内核函数对所述目标线程执行线程数据写操作。
本实施例中,作为一可选实施例,该装置还包括:
应用程序匹配模块25,用于依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,通知线程路径获取模块23。
本实施例中,作为一可选实施例,应用程序匹配模块25包括:路径获取单元以及字符串匹配单元(图中未示出),其中,
路径获取单元,用于依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;
字符串匹配单元,用于提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,通知线程路径获取模块23。
本实施例中,作为一可选实施例,该装置还包括:
挂钩函数注入模块26,用于调用操作系统的挂钩函数窗口设置接口,设置用于监测调用所述设置线程上下文内核函数的挂钩函数,并获取操作系统的根权限以注入所述挂钩函数。
本实施例中,作为一可选实施例,挂钩函数注入模块26包括:调用单元、设置单元、函数地址获取单元、替换单元以及注入单元(图中未示出),其中,
调用单元,用于调用操作系统的挂钩函数窗口设置接口;
设置单元,用于设置用于监测调用所述设置线程上下文内核函数的挂钩函数;
函数地址获取单元,用于获取操作系统的根权限,在系统服务描述符表中查询并获取所述设置线程上下文内核函数的函数地址,存储所述设置线程上下文内核函数的函数地址;
替换单元,用于利用所述挂钩函数替换所述设置线程上下文内核函数,设置所述挂钩函数在所述系统服务描述符表中的函数地址不同于所述设置线程上下文内核函数的函数地址;
注入单元,用于在所述挂钩函数中设置存储的所述设置线程上下文内核函数的函数地址,以用于调用所述设置线程上下文内核函数。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,″计算机可读介质″可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。
在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本发明实施例还提供一种电子设备,所述电子设备包含前述任一实施例所述的装置。
图3为本发明电子设备一个实施例的结构示意图,可以实现本发明图1-2所示实施例的流程,如图3所示,上述电子设备可以包括:壳体31、处理器32、存储器33、电路板34和电源电路35,其中,电路板34安置在壳体31围成的空间内部,处理器32和存储器33设置在电路板34上;电源电路35,用于为上述电子设备的各个电路或器件供电;存储器33用于存储可执行程序代码;处理器32通过读取存储器33中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的保护线程数据的方法。
处理器32对上述步骤的具体执行过程以及处理器32通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-2所示实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本
发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种保护线程数据的方法,其特征在于,包括:
在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时,挂钩所述设置线程上下文内核函数;
获取调用所述设置线程上下文内核函数的应用程序发起的目标线程数据写入请求,将所述目标线程数据写入请求中的目标应用程序对应的目标线程句柄写入所述挂钩函数中的线程句柄参数中;
依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径;
如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,向所述目标线程数据写入请求返回拒绝写入信息。
2.根据权利要求1所述的保护线程数据的方法,其特征在于,在所述在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时之前,所述方法还包括:
调用操作系统的挂钩函数窗口设置接口,设置用于监测调用所述设置线程上下文内核函数的挂钩函数,并获取操作系统的根权限以注入所述挂钩函数。
3.根据权利要求2所述的保护线程数据的方法,其特征在于,所述注入所述挂钩函数包括:
在系统服务描述符表中查询并获取所述设置线程上下文内核函数的函数地址,存储所述设置线程上下文内核函数的函数地址;
利用所述挂钩函数替换所述设置线程上下文内核函数,设置所述挂钩函数在所述系统服务描述符表中的函数地址不同于所述设置线程上下文内核函数的函数地址;
在所述挂钩函数中设置存储的所述设置线程上下文内核函数的函数地址,以用于调用所述设置线程上下文内核函数。
4.根据权利要求1所述的保护线程数据的方法,其特征在于,所述依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径包括:
枚举操作系统的所有线程的线程句柄;
获取与所述挂钩函数的线程句柄参数相匹配的线程句柄;
调用线程路径获取内核函数,查询获取所述相匹配的线程句柄的线程路径。
5.根据权利要求1至4任一项所述的保护线程数据的方法,其特征在于,在所述依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径之前,所述方法还包括:
依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;
提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,执行所述依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径的步骤。
6.根据权利要求1至4任一项所述的保护线程数据的方法,其特征在于,在所述向所述目标线程数据写入请求返回拒绝写入信息之前,所述方法还包括:
依据发起所述目标线程数据写入请求的应用程序的线程句柄参数,获取发起所述目标线程数据写入请求的应用程序的线程路径;
提取发起所述目标线程数据写入请求的应用程序的线程路径中的最后子目录下的字符串,如果提取的字符串与预先设置的拦截应用程序字符串库中任一拦截应用程序字符串相匹配,执行所述向所述目标线程数据写入请求返回拒绝写入信息的步骤。
7.一种保护线程数据的装置,其特征在于,包括:挂钩模块、句柄写入模块、线程路径获取模块以及匹配处理模块,其中,
挂钩模块,用于在预先注入到内核层中的挂钩函数监测到设置线程上下文内核函数被调用时,挂钩所述设置线程上下文内核函数;
句柄写入模块,用于获取调用所述设置线程上下文内核函数的应用程序发起的目标线程数据写入请求,将所述目标线程数据写入请求中的目标应用程序对应的目标线程句柄写入所述挂钩函数中的线程句柄参数中;
线程路径获取模块,用于依据写入所述挂钩函数中的线程句柄参数,获取所述目标应用程序的线程路径;
匹配处理模块,如果获取的线程路径与预先设置的目标应用程序线程目录路径库中任一目标应用程序线程目录路径相匹配,向所述目标线程数据写入请求返回拒绝写入信息。
8.根据权利要求7所述的保护线程数据的装置,其特征在于,所述装置还包括:
挂钩函数注入模块,用于调用操作系统的挂钩函数窗口设置接口,设置用于监测调用所述设置线程上下文内核函数的挂钩函数,并获取操作系统的根权限以注入所述挂钩函数。
9.根据权利要求8所述的保护线程数据的装置,其特征在于,所述挂钩函数注入模块包括:调用单元、设置单元、函数地址获取单元、替换单元以及注入单元,其中,
调用单元,用于调用操作系统的挂钩函数窗口设置接口;
设置单元,用于设置用于监测调用所述设置线程上下文内核函数的挂钩函数;
函数地址获取单元,用于获取操作系统的根权限,在系统服务描述符表中查询并获取所述设置线程上下文内核函数的函数地址,存储所述设置线程上下文内核函数的函数地址;
替换单元,用于利用所述挂钩函数替换所述设置线程上下文内核函数,设置所述挂钩函数在所述系统服务描述符表中的函数地址不同于所述设置线程上下文内核函数的函数地址;
注入单元,用于在所述挂钩函数中设置存储的所述设置线程上下文内核函数的函数地址,以用于调用所述设置线程上下文内核函数。
10.根据权利要求7所述的保护线程数据的装置,其特征在于,所述线程路径获取模块包括:枚举单元、线程句柄获取单元以及线程路径获取单元,其中,
枚举单元,用于枚举操作系统的所有线程的线程句柄;
线程句柄获取单元,用于获取与所述挂钩函数的线程句柄参数相匹配的线程句柄;
线程路径获取单元,用于调用线程路径获取内核函数,查询获取所述相匹配的线程句柄的线程路径。
CN201610500464.8A 2016-06-29 2016-06-29 一种保护线程数据的方法、装置及电子设备 Active CN106169044B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610500464.8A CN106169044B (zh) 2016-06-29 2016-06-29 一种保护线程数据的方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610500464.8A CN106169044B (zh) 2016-06-29 2016-06-29 一种保护线程数据的方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN106169044A true CN106169044A (zh) 2016-11-30
CN106169044B CN106169044B (zh) 2019-12-10

Family

ID=58065852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610500464.8A Active CN106169044B (zh) 2016-06-29 2016-06-29 一种保护线程数据的方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN106169044B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111291374A (zh) * 2020-02-20 2020-06-16 支付宝(杭州)信息技术有限公司 一种应用程序的检测方法、装置及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1983296A (zh) * 2005-12-12 2007-06-20 北京瑞星国际软件有限公司 用于防止非法程序窃取用户信息的方法及装置
CN101414341A (zh) * 2007-10-15 2009-04-22 北京瑞星国际软件有限公司 一种软件自我保护的方法
CN104252594A (zh) * 2013-06-27 2014-12-31 贝壳网际(北京)安全技术有限公司 病毒检测方法和装置
CN105373383A (zh) * 2015-11-13 2016-03-02 珠海市君天电子科技有限公司 一种应用程序窗口的显示与隐藏控制方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1983296A (zh) * 2005-12-12 2007-06-20 北京瑞星国际软件有限公司 用于防止非法程序窃取用户信息的方法及装置
CN101414341A (zh) * 2007-10-15 2009-04-22 北京瑞星国际软件有限公司 一种软件自我保护的方法
CN104252594A (zh) * 2013-06-27 2014-12-31 贝壳网际(北京)安全技术有限公司 病毒检测方法和装置
CN105373383A (zh) * 2015-11-13 2016-03-02 珠海市君天电子科技有限公司 一种应用程序窗口的显示与隐藏控制方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111291374A (zh) * 2020-02-20 2020-06-16 支付宝(杭州)信息技术有限公司 一种应用程序的检测方法、装置及设备
CN111291374B (zh) * 2020-02-20 2022-06-14 支付宝(杭州)信息技术有限公司 一种应用程序的检测方法、装置及设备

Also Published As

Publication number Publication date
CN106169044B (zh) 2019-12-10

Similar Documents

Publication Publication Date Title
Zhang et al. Agent security bench (asb): Formalizing and benchmarking attacks and defenses in llm-based agents
US9571510B1 (en) Systems and methods for identifying security threat sources responsible for security events
Lin et al. Automated forensic analysis of mobile applications on Android devices
CN111191243B (zh) 一种漏洞检测方法、装置和存储介质
CN107851153A (zh) 使用异步自测异常的计算机安全系统及方法
CN105793863A (zh) 基于频率的信誉
KR102180098B1 (ko) 악성코드 모니터링 및 사용자 단말 제어 기능을 수행하는 악성코드 탐지 시스템
US12130943B1 (en) Generative artificial intelligence model personally identifiable information detection and protection
CN107870988A (zh) 一种信息核查方法、终端设备及存储介质
CN106682493B (zh) 一种防止进程被恶意结束的方法、装置及电子设备
CN106203092A (zh) 一种拦截恶意程序关机的方法、装置及电子设备
CN106682504B (zh) 一种防止文件被恶意编辑的方法、装置及电子设备
CN106250244A (zh) 一种释放互斥锁的方法、装置及电子设备
CN105844148A (zh) 一种保护操作系统的方法、装置及电子设备
CN105893846A (zh) 一种保护目标应用程序的方法、装置及电子设备
CN106169044A (zh) 一种保护线程数据的方法、装置及电子设备
CN106203119B (zh) 隐藏光标的处理方法、装置及电子设备
CN106022109A (zh) 一种防止线程暂停的方法、装置及电子设备
CN105956475A (zh) Dll文件的拦截处理方法、装置及电子设备
CN106203114A (zh) 一种应用程序的防护方法、装置及电子设备
CN106169049A (zh) 一种处理线程注册的方法、装置及电子设备
CN108874462A (zh) 一种浏览器行为获取方法、装置、存储介质及电子设备
EP3543882B1 (en) Method and system for identifying original data by using data order
CN106022111B (zh) 隐藏弹出式窗口的处理方法、装置及电子设备
CN106203090A (zh) 线程的保护方法、装置及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20190124

Address after: 519031 Room 105-53811, No. 6 Baohua Road, Hengqin New District, Zhuhai City, Guangdong Province

Applicant after: Zhuhai Leopard Technology Co.,Ltd.

Address before: 100085 East District, Second Floor, 33 Xiaoying West Road, Haidian District, Beijing

Applicant before: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd.

GR01 Patent grant
GR01 Patent grant