CN105303114A - 基于windows的系统服务函数调用方法及装置 - Google Patents

基于windows的系统服务函数调用方法及装置 Download PDF

Info

Publication number
CN105303114A
CN105303114A CN201510702174.7A CN201510702174A CN105303114A CN 105303114 A CN105303114 A CN 105303114A CN 201510702174 A CN201510702174 A CN 201510702174A CN 105303114 A CN105303114 A CN 105303114A
Authority
CN
China
Prior art keywords
function
system service
windows
address information
service function
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.)
Pending
Application number
CN201510702174.7A
Other languages
English (en)
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.)
Inspur Electronic Information Industry Co Ltd
Original Assignee
Inspur Electronic Information Industry 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 Inspur Electronic Information Industry Co Ltd filed Critical Inspur Electronic Information Industry Co Ltd
Priority to CN201510702174.7A priority Critical patent/CN105303114A/zh
Publication of CN105303114A publication Critical patent/CN105303114A/zh
Pending legal-status Critical Current

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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种基于windows的系统服务函数调用方法及装置,其中,所述方法包括:将所述windows下的每一个系统服务函数分别对应的参数以及地址信息存储至第一目标内存中;构建与入口函数挂钩的钩子函数,所述钩子函数用于将针对函数信息表的查询操作转为针对所述第一目标内存的查询操作;在获取到针对所述函数信息表的查询指令时,触发对所述入口函数的调用,所述查询指令携带目标参数;在所述入口函数执行结束后,触发对所述钩子函数的调用;根据所述目标参数查询所述第一目标内存以获取目标系统服务函数对应的目标地址信息;根据所述目标地址信息调用目标系统服务函数。通过本发明的技术方案,可提高windows的安全性。

Description

基于windows的系统服务函数调用方法及装置
技术领域
本发明涉及网络安全领域,特别涉及一种基于windows的系统服务函数调用方法及装置。
背景技术
Windows是微软公司推出的一款操作系统。
Windows下的函数信息表中记录了每一个系统服务函数分别对应的参数以及地址信息,运行在windows下的所有应用程序均需要通过访问函数信息表以获取目标系统服务函数的地址信息,进而根据获取到的地址信息调用目标服务函数以实现相应的功能。
但是,当windows完成启动之后,函数信息表中的内容很容易被修改,入侵者通常通过修改函数信息表的内容以使应用程序调用到恶意的系统服务函数,进而对windows造成破坏,从而对windows的安全性造成影响。
发明内容
有鉴于此,本发明提供了一种基于windows的系统服务函数调用方法及装置,可提高windows的安全性。
第一方面,本发明提供了一种基于windows的系统服务函数调用方法,包括:
S0:将所述windows下的每一个系统服务函数分别对应的参数以及地址信息存储至第一目标内存中;构建与入口函数挂钩的钩子函数,所述钩子函数用于将针对函数信息表的查询操作转为针对所述第一目标内存的查询操作;
S1:在获取到针对所述函数信息表的查询指令时,触发对所述入口函数的调用,所述查询指令携带目标参数;
S2:在所述入口函数执行结束后,触发对所述钩子函数的调用;
S3:根据所述目标参数查询所述第一目标内存以获取目标系统服务函数对应的目标地址信息;
S4:根据所述目标地址信息调用目标系统服务函数。
进一步的,所述将所述windows下的每一个系统服务函数分别对应的参数以及地址信息存储至第一目标内存中,包括:
获取所述windows下可用于导出所述函数信息表的可执行文件;
将所述可执行文件加载至第二目标内存中;
从所述第二目标内存中获取每一个系统服务函数分别对应的参数以及地址信息,并将获取到的每一个系统服务函数分别对应的参数及地址信息存储至第一目标内存中。
进一步的,
所述函数信息表包括:系统服务描述符表SSDT,和/或,影子系统服务描述符表shadowSSDT;
当所述函数信息表包括SSDT时,所述获取所述windows下可用于导出所述函数信息表的可执行文件,包括:获取可执行文件ntoskrnl.exe;
当所述函数信息表包括shadowSSDT时,所述获取所述windows下可用于导出所述函数信息表的可执行文件,包括:获取可执行文件Win32k.sys;
当所述函数信息表包括SSDT和shadowSSDT时,所述获取所述windows下可用于导出所述函数信息表的可执行文件,包括:获取可执行文件ntoskrnl.exe和可执行文件Win32k.sys。
进一步的,
所述入口函数包括:Kifastcallentry,Kifastcallentry的标识id包括x176;
所述触发对所述入口函数的调用,包括:
根据Kifastcallentry的标识id从系统保留分区MSR寄存器中确定用于存放Kifastcallentry的地址信息的快速系统调用寄存器SYSENTER_EIP_MSR;
通过RDMSR指令读取SYSENTER_EIP_MSR中Kifastcallentry的存储地址以调用Kifastcallentry。
第二方面,本发明提供了一种基于windows的系统服务函数调用装置,包括:
第一处理单元,用于将所述windows下的每一个系统服务函数分别对应的参数以及地址信息存储至第一目标内存中;
第一目标内存,用于存储每一个系统服务函数分别对应的参数以及地址信息;
构建单元,用于构建与入口函数挂钩的钩子函数,所述钩子函数用于将针对函数信息表的查询操作转为针对所述第一目标内存的查询操作;
第二处理单元,用于在获取到针对所述函数信息表的查询指令时,触发对所述入口函数的调用,所述查询指令包括目标参数;
第三处理单元,用于在所述入口函数执行结束后,触发对所述钩子函数的调用;
查询单元,用于根据所述目标参数查询所述第一目标内存以获取目标系统服务函数对应的目标地址信息;
第四处理单元,用于根据所述目标地址信息调用目标系统服务函数。
进一步的,所述第一处理单元包括:
第一获取子单元,用于获取所述windows下可用于导出函数信息表的可执行文件;
第一处理子单元,用于将所述可执行文件加载至第二目标内存中;
第二获取子单元,用于从所述第二目标内存中获取每一个系统服务函数分别对应的参数以及地址信息,并触发所述第一处理子单元将获取到的每一个系统服务函数分别对应的参数及地址信息存储至所述第一目标内存中。
进一步的,
所述第一获取子单元,用于获取可执行文件ntoskrnl.exe,和/或,可执行文件Win32k.sys。
进一步的,所述第二处理包括:
确定子单元,用于根据Kifastcallentry的标识id从系统保留分区MSR寄存器中确定用于存放Kifastcallentry的地址信息的快速系统调用寄存器SYSENTER_EIP_MSR;
第二处理子单元,用于通过RDMSR指令读取SYSENTER_EIP_MSR中Kifastcallentry的存储地址以调用Kifastcallentry。
本发明提供了一种基于windows的系统服务函数调用方法及装置,通过将windows下的每一个系统服务函数分别对应的参数及地址信息存储至第一目标内存中,并设置钩子函数挂钩入口函数,当需要通过目标参数调用目标系统服务函数时,触发入口函数的调用,入口函数调用完成,触发钩子函数的调用,以将针对函数信息表的查询操作转为针对第一目标内存的查询操作,即根据目标参数从第一目标内存中获取目标系统服务函数对应的目标地址信息,进而根据获取到的目标地址信息调用目标系统服务函数;如此,通过直接查询存储在第一目标内存中的每一个系统服务函数对应的地址信息,避免入侵者通过修改函数信息表而导致调用到恶意的函数以对windows造成破坏,可提高windows的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种基于windows的系统服务函数调用方法的流程图;
图2是本发明一实施例提供的另一种基于windows的系统服务函数调用方法的流程图;
图3是可执行文件ntoskrnl.exe被加载至第二目标内存后在第二目标内存中的数据显示结构示意图;
图4是本发明一实施例提供的一种基于windows的系统服务函数调用装置;
图5是本发明一实施例提供的另一种基于windows的系统服务函数调用装置。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种基于windows的系统服务函数调用方法,该方法可以包括以下步骤:
S0:将所述windows下的每一个系统服务函数分别对应的参数以及地址信息存储至第一目标内存中;构建与入口函数挂钩的钩子函数,所述钩子函数用于将针对函数信息表的查询操作转为针对所述第一目标内存的查询操作;
S1:在获取到针对所述函数信息表的查询指令时,触发对所述入口函数的调用,所述查询指令携带目标参数;
S2:在所述入口函数执行结束后,触发对所述钩子函数的调用;
S3:根据所述目标参数查询所述第一目标内存以获取目标系统服务函数对应的目标地址信息;
S4:根据所述目标地址信息调用目标系统服务函数。
本发明一实施例中,通过将windows下的每一个系统服务函数分别对应的参数及地址信息存储至第一目标内存中,并设置钩子函数挂钩入口函数,当需要通过目标参数调用目标系统服务函数时,触发入口函数的调用,入口函数调用完成,触发钩子函数的调用,以将针对函数信息表的查询操作转为针对第一目标内存的查询操作,即根据目标参数从第一目标内存中获取目标系统服务函数对应的目标地址信息,进而根据获取到的目标地址信息调用目标系统服务函数;如此,通过直接查询存储在第一目标内存中的每一个系统服务函数对应的地址信息,避免入侵者通过修改函数信息表而导致调用到恶意的函数以对windows造成破坏,可提高windows的安全性。
进一步的,由于windows下,每一个系统服务函数对应的参数以及地址信息存储在函数信息表中,可通过将对应函数信息表的可执行文件加载至第二目标内存以获取函数信息表中的内容,进而从第二目标内存中读取每一个系统服务函数分别对应的参数及地址信息;具体地,本发明一个优选实施例中,所述将所述windows下的每一个系统服务函数分别对应的参数以及地址信息存储至第一目标内存中,包括:
获取所述windows下可用于导出所述函数信息表的可执行文件;
将所述可执行文件加载至第二目标内存中;
从所述第二目标内存中获取每一个系统服务函数分别对应的参数以及地址信息,并将获取到的每一个系统服务函数分别对应的参数及地址信息存储至第一目标内存中。
本发明一实施例中,由于将函数信息表对应的可执行文件加载至第二目标内存中时,第二目标内存中可能包括除每一个系统服务函数对应的参数及地址信息外的其他数据,通过从第二目标内存中将每一个系统服务函数对应的参数及地址信息存储至第一目标内存中,其他数据则不必在内存中进行存储,可节约内存空间。
进一步的,由于windows包括多种不同的系统架构,不同系统架构的windows下,存储每一个系统服务函数的函数信息表可能有所不同,比如,针对32位处理器的windows,一部分系统服务函数存储在SSDT种,另一部分系统服务函数存储在shadowSSDT中,这时,则需要将SSDT表和shadowSSDT均加载至第二目标内存以获取当前windows下的每一个系统服务函数分别对应的参数及地址信息;同时,针对SSDT和shadowSSDT,需要通过加载不同的可执行文件至第二目标内存以获取对应的函数信息表内记录的每一个系统服务函数对应的参数及地址信息;具体地,本发明一个优选实施例中,所述函数信息表包括:系统服务描述符表SSDT,和/或,影子系统服务描述符表shadowSSDT;
当所述函数信息表包括SSDT时,所述获取所述windows下可用于导出所述函数信息表的可执行文件,包括:获取可执行文件ntoskrnl.exe;
当所述函数信息表包括shadowSSDT时,所述获取所述windows下可用于导出所述函数信息表的可执行文件,包括:获取可执行文件Win32k.sys;
当所述函数信息表包括SSDT和shadowSSDT时,所述获取所述windows下可用于导出所述函数信息表的可执行文件,包括:获取可执行文件ntoskrnl.exe和可执行文件Win32k.sys。
需要说明的是,不同架构的windows可能只包括上述函数信息表中的一个,也可以包括除上述函数信息表以外的其他函数信息表,同时,在不同架构的windows下,每一个函数信息表对应的可执行文件也可能有所不同;函数信息表的名称以及对应的可执行文件的名称不应视为对本发明实施例的限定。
进一步的,在不同架构的windows下,应用程序从应用程序进入内核层的入口函数可能并不相同,即不同系统架构的windows所使用的主函数可能并不相应;在32位处理器的windows下,应用程序从应用层进入内核层的入口函数可以包括Kifastcallentry;在其他系统架构的windows下,可能包括其他的入口函数;同时,由于入口函数并不包括在函数信息表中,需要通过其他相关指令来完成入口函数的调用;具体地,本发明一个优选实施例中,所述入口函数包括:Kifastcallentry,Kifastcallentry的标识id包括x176;
所述触发对所述入口函数的调用,包括:
根据Kifastcallentry的标识id从系统保留分区MSR寄存器中确定用于存放Kifastcallentry的地址信息的快速系统调用寄存器SYSENTER_EIP_MSR;
通过RDMSR指令读取SYSENTER_EIP_MSR中Kifastcallentry的存储地址以调用Kifastcallentry。
需要说明的是,入口函数的名称不应视为对本发明实施例的限定。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
如图2所示,本发明实施例提供了一种基于windows的系统服务函数调用方法,以32位处理器的windows为例;该方法可以包括以下步骤:
步骤201,获取可执行文件ntoskrnl.exe以及可执行文件Win32k.sys。
不同架构的windows下对应的函数信息表可能并不相同,本发明实施例中仅针对32位处理器的windows进行举例,32位处理器的windows下,一部分系统服务函数存储在SSDT中,另一部分系统服务函数存储在shadowSSDT中,因此,需要通过获取这两张表分别对应的可执行文件以加载至内存中,进而获取这两张表中记录的每一个系统服务函数分别对应的参数及地址信息。
需要说明的是,针对其他架构的windows,可能对应不同的函数信息表以及可执行文件。
步骤202,将可执行文件ntoskrnl.exe和Win32k.sys加载至第二目标内存。
步骤203,读取第二目标内存以获取每一个系统服务函数分别对应的参数及地址信息。
步骤204,将获取到的每一个系统服务函数分别对应的参数及地址信息存储至第一目标内存中。
步骤203至步骤204中,将可执行文件加载至第二目标内存中后,从第二目标内存中读取每一个系统服务函数对应的参数及地址信息并存储至第一目标内存中,针对将可执行文件ntoskrnl.exe及Win32k.sys加载至第二目标内存后第二目标内存中生成的其他数据不再进行存储,可节约内存空间。
举例来说,将可执行文件ntoskrnl.exe加载至第二目标内存之后,在第二目标内存中可生成如图3所示的部分数据,由图3可知,地址83f74b00处记录了SSDT表的起始地址为为83e8943c,且SSDT表中记录了191个系统服务函数,相应的读取第二目标内存中从83e8943c位置开始的191条信息,即只获取每一个系统服务函数对应的参数及地址信息。
需要说明的是,步骤201至步骤204中实现了将windows下的每一个系统服务函数分别对应的参数及地址信息存储至第一目标内存中;为了避免操作系统启动后SSDT和shadowSSDT被修改而导致存储至第一目标内存中的每一个目标函数对应的参数及地址信息是被修改过的信息;可在windows启动时,将每一个系统服务函数分别对应的参数及地址信息存储至第一目标内存中。
步骤205,构建与入口函数挂钩的钩子函数。
通过构建钩子函数挂钩入口函数,可将针对函数信息表的查询操作转为针对第一目标内存的操作。
步骤206,获取针对函数信息表的查询指令,所述查询指令中携带目标参数信息。
步骤207,调用入口函数。
在32位处理器的windows下,入口函数可以包括Kifastcallentry;入口函数Kifastcallentry是系统没有导出的函数,即入口函数Kifastcallentry对应的参数及存储地址并不在函数信息表中,而是保存在MSR寄存器中,Kifastcallentry的标识id为x176,通过该标识id可确定Kifastcallentry的存储地址存放在快速系统调用寄存器SYSENTER_EIP_MSR中,所以,这里可通过RDMSR指令读取SYSENTER_EIP_MSR下的存储地址以调用Kifastcallentry。
步骤208,调用钩子函数。
这里,通过调用钩子函数,将针对SSDT或shadowSSDT的查询操作转变为针对第一目标内存的查询操作。
步骤209,查询第一目标内存以获取目标系统服务函数对应的目标地址信息。
第一目标内存中可以包括如图3所示以83e8943c地址为起始位置的191条数据;如图3所示,83e8943c地址开始的191条数据中,每一个数据分别用于表征一个系统服务函数对应的参数以及地址信息;其中,每一行中的左起第一个数据用于表示系统服务函数对应的参数(比如,83e8943c)、第二个数据用于表示系统服务函数的地址信息(比如,83e8943c)以及第三个数据用于表示当前系统服务函数的名称(比如,AcceptConnectPort)。
步骤210,根据所述目标地址信息调用目标系统服务函数。
举例来说,如图3所示,比如获取到的针对SSDT或shadowSSDT的查询指令中携带的目标参数为83e8943c,则可根据该目标参数查询第一目标内存,确定该目标参数对应的目标系统服务函数为AcceptConnectPort,且AcceptConnectPort函数对应的地址信息为83e8943c,进而根据该地址信息调用目标系统服务函数AcceptConnectPort。
通过上述各步骤,将SSDT以及shadowSSDT中的每一个系统服务函数对应的参数以及地址信息存储至第一目标内存中,且通过设置钩子函数挂钩入口函数以将针对SSDT或shadowSSDT的查询操作转为针对第一目标内存的查询操作;实现在32位处理器的windows下针对系统服务函数调用的过程中不必通过查询SSDT或shadowSSDT以确定目标系统服务函数的地址信息,避免了入侵者通过修改SSDT或shadowSSDT以导致应用程序调用到恶意服务函数,进而对32位处理器的windows造成破坏,可提高其安全性。
如图3所示,本发明实施例提供的一种基于windows的系统服务函数调用装置,包括:
第一处理单元401,用于将所述windows下的每一个系统服务函数分别对应的参数以及地址信息存储至第一目标内存中;
第一目标内存402,用于存储每一个系统服务函数分别对应的参数以及地址信息;
构建单元403,用于构建与入口函数挂钩的钩子函数,所述钩子函数用于将针对函数信息表的查询操作转为针对所述第一目标内存的查询操作;
第二处理单元404,用于在获取到针对所述函数信息表的查询指令时,触发对所述入口函数的调用,所述查询指令包括目标参数;
第三处理单元405,用于在所述入口函数执行结束后,触发对所述钩子函数的调用;
查询单元406,用于根据所述目标参数查询所述第一目标内存以获取目标系统服务函数对应的目标地址信息;
第四处理单元407,用于根据所述目标地址信息调用目标系统服务函数。
进一步的,为了将函数信息表中的每一个系统服务函数对应的参数及地址信息存储至第一目标内存中,且达到合理利用内存空间的目的,如图5所示,在一种可能实现的方式中,所述第一处理单元401包括:
第一获取子单元4011,用于获取所述windows下可用于导出函数信息表的可执行文件;
第一处理子单元4012,用于将所述可执行文件加载至第二目标内存中;
第二获取子单元4013,用于从所述第二目标内存中获取每一个系统服务函数分别对应的参数以及地址信息,并触发所述第一处理子单元将获取到的每一个系统服务函数分别对应的参数及地址信息存储至所述第一目标内存中。
进一步的,为了实现将不同架构的windows下的每一个系统服务函数对应的参数及地址信息存储至第一目标内存中,在一种可能实现的方式中,所述第一获取子单元4011,用于获取可执行文件ntoskrnl.exe,和/或,可执行文件Win32k.sys。
进一步的,不同系统架构的windows对应的入口函数看并不相同,同时,由于入口函数对应的参数及地址信息并没有存储在函数信息表中,需要通过其他相关指令;因此,在一种可能实现的方式中,所述第二处理单元404包括:
确定子单元4041,用于根据Kifastcallentry的标识id从系统保留分区MSR寄存器中确定用于存放Kifastcallentry的地址信息的快速系统调用寄存器SYSENTER_EIP_MSR;
第二处理子单元4042,用于通过RDMSR指令读取SYSENTER_EIP_MSR中Kifastcallentry的存储地址以调用Kifastcallentry。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例提供的方案,至少具有如下有益效果:
1、通过将windows下的每一个系统服务函数分别对应的参数及地址信息存储至第一目标内存中,设置钩子函数挂钩入口函数,当需要通过目标参数调用目标系统服务函数时,触发入口函数的调用,入口函数调用完成,触发钩子函数的调用,以将针对函数信息表的查询操作转为针对第一目标内存的查询操作,即根据目标参数从第一目标内存中获取目标系统服务函数对应的目标地址信息,进而根据获取到的目标地址信息调用目标系统服务函数;如此,通过直接查询存储在第一目标内存中的每一个系统服务函数对应的地址信息,避免入侵者通过修改函数信息表而导致调用到恶意的函数以对windows造成破坏,可提高windows的安全性。
2、第一目标内存中只存储当前windows下的每一个系统服务函数分别对应的参数及地址信息,并不保存加载可执行文件至第二目标内存中生成的其他数据,节约内存空间。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (8)

1.一种基于windows的系统服务函数调用方法,其特征在于,包括:
将所述windows下的每一个系统服务函数分别对应的参数以及地址信息存储至第一目标内存中;构建与入口函数挂钩的钩子函数,所述钩子函数用于将针对函数信息表的查询操作转为针对所述第一目标内存的查询操作;还包括:
在获取到针对所述函数信息表的查询指令时,触发对所述入口函数的调用,所述查询指令携带目标参数;
在所述入口函数执行结束后,触发对所述钩子函数的调用;
根据所述目标参数查询所述第一目标内存以获取目标系统服务函数对应的目标地址信息;
根据所述目标地址信息调用目标系统服务函数。
2.根据权利要求1所述基于windows的系统服务函数调用方法,其特征在于,所述将所述windows下的每一个系统服务函数分别对应的参数以及地址信息存储至第一目标内存中,包括:
获取所述windows下可用于导出所述函数信息表的可执行文件;
将所述可执行文件加载至第二目标内存中;
从所述第二目标内存中获取每一个系统服务函数分别对应的参数以及地址信息,并将获取到的每一个系统服务函数分别对应的参数及地址信息存储至第一目标内存中。
3.根据权利要求2所述基于windows的系统服务函数调用方法,其特征在于,
所述函数信息表包括:系统服务描述符表SSDT,和/或,影子系统服务描述符表shadowSSDT;
当所述函数信息表包括SSDT时,所述获取所述windows下可用于导出所述函数信息表的可执行文件,包括:获取可执行文件ntoskrnl.exe;
当所述函数信息表包括shadowSSDT时,所述获取所述windows下可用于导出所述函数信息表的可执行文件,包括:获取可执行文件Win32k.sys;
当所述函数信息表包括SSDT和shadowSSDT时,所述获取所述windows下可用于导出所述函数信息表的可执行文件,包括:获取可执行文件ntoskrnl.exe和可执行文件Win32k.sys。
4.根据权利要求1至3中任一所述基于windows的系统服务函数调用方法,其特征在于,
所述入口函数包括:Kifastcallentry,Kifastcallentry的标识id包括x176;
所述触发对所述入口函数的调用,包括:
根据Kifastcallentry的标识id从系统保留分区MSR寄存器中确定用于存放Kifastcallentry的地址信息的快速系统调用寄存器SYSENTER_EIP_MSR;
通过RDMSR指令读取SYSENTER_EIP_MSR中Kifastcallentry的存储地址以调用Kifastcallentry。
5.一种基于windows的系统服务函数调用装置,其特征在于,包括:
第一处理单元,用于将所述windows下的每一个系统服务函数分别对应的参数以及地址信息存储至第一目标内存中;
第一目标内存,用于存储每一个系统服务函数分别对应的参数以及地址信息;
构建单元,用于构建与入口函数挂钩的钩子函数,所述钩子函数用于将针对函数信息表的查询操作转为针对所述第一目标内存的查询操作;
第二处理单元,用于在获取到针对所述函数信息表的查询指令时,触发对所述入口函数的调用,所述查询指令包括目标参数;
第三处理单元,用于在所述入口函数执行结束后,触发对所述钩子函数的调用;
查询单元,用于根据所述目标参数查询所述第一目标内存以获取目标系统服务函数对应的目标地址信息;
第四处理单元,用于根据所述目标地址信息调用目标系统服务函数。
6.根据权利要求5所述的装置,其特征在于,所述第一处理单元包括:
第一获取子单元,用于获取所述windows下可用于导出函数信息表的可执行文件;
第一处理子单元,用于将所述可执行文件加载至第二目标内存中;
第二获取子单元,用于从所述第二目标内存中获取每一个系统服务函数分别对应的参数以及地址信息,并触发所述第一处理子单元将获取到的每一个系统服务函数分别对应的参数及地址信息存储至所述第一目标内存中。
7.根据权利要求6所述的装置,其特征在于,
所述第一获取子单元,用于获取可执行文件ntoskrnl.exe,和/或,可执行文件Win32k.sys。
8.根据权利要求5至7中任一所述的装置,其特征在于,所述第二处理单元包括:
确定子单元,用于根据Kifastcallentry的标识id从系统保留分区MSR寄存器中确定用于存放Kifastcallentry的地址信息的快速系统调用寄存器SYSENTER_EIP_MSR;
第二处理子单元,用于通过RDMSR指令读取SYSENTER_EIP_MSR中Kifastcallentry的存储地址以调用Kifastcallentry。
CN201510702174.7A 2015-10-26 2015-10-26 基于windows的系统服务函数调用方法及装置 Pending CN105303114A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510702174.7A CN105303114A (zh) 2015-10-26 2015-10-26 基于windows的系统服务函数调用方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510702174.7A CN105303114A (zh) 2015-10-26 2015-10-26 基于windows的系统服务函数调用方法及装置

Publications (1)

Publication Number Publication Date
CN105303114A true CN105303114A (zh) 2016-02-03

Family

ID=55200368

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510702174.7A Pending CN105303114A (zh) 2015-10-26 2015-10-26 基于windows的系统服务函数调用方法及装置

Country Status (1)

Country Link
CN (1) CN105303114A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808252A (zh) * 2016-03-04 2016-07-27 北京理工大学 一种Windows操作系统内核函数遍历方法
CN107229867A (zh) * 2017-06-12 2017-10-03 北京奇虎科技有限公司 内核漏洞挖掘方法、装置、计算设备及计算机存储介质
CN107357667A (zh) * 2017-06-26 2017-11-17 北京金山安全管理系统技术有限公司 应用层与驱动层的通讯方法及装置
CN110347407A (zh) * 2019-07-16 2019-10-18 武汉斗鱼鱼乐网络科技有限公司 一种获取内存占用量的方法、装置、计算机设备及介质
CN111767119A (zh) * 2020-06-30 2020-10-13 云袭网络技术河北有限公司 一种不触发系统保护的内核挂钩方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071668A1 (en) * 2003-09-30 2005-03-31 Yoon Jeonghee M. Method, apparatus and system for monitoring and verifying software during runtime
CN101620660A (zh) * 2009-07-31 2010-01-06 北京大学 一种Windows操作系统下钩子的防御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050071668A1 (en) * 2003-09-30 2005-03-31 Yoon Jeonghee M. Method, apparatus and system for monitoring and verifying software during runtime
CN101620660A (zh) * 2009-07-31 2010-01-06 北京大学 一种Windows操作系统下钩子的防御方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808252A (zh) * 2016-03-04 2016-07-27 北京理工大学 一种Windows操作系统内核函数遍历方法
CN107229867A (zh) * 2017-06-12 2017-10-03 北京奇虎科技有限公司 内核漏洞挖掘方法、装置、计算设备及计算机存储介质
CN107229867B (zh) * 2017-06-12 2020-12-25 北京奇虎科技有限公司 内核漏洞挖掘方法、装置、计算设备及计算机存储介质
CN107357667A (zh) * 2017-06-26 2017-11-17 北京金山安全管理系统技术有限公司 应用层与驱动层的通讯方法及装置
CN110347407A (zh) * 2019-07-16 2019-10-18 武汉斗鱼鱼乐网络科技有限公司 一种获取内存占用量的方法、装置、计算机设备及介质
CN111767119A (zh) * 2020-06-30 2020-10-13 云袭网络技术河北有限公司 一种不触发系统保护的内核挂钩方法
CN111767119B (zh) * 2020-06-30 2023-05-23 云袭网络技术河北有限公司 一种不触发系统保护的内核挂钩方法

Similar Documents

Publication Publication Date Title
CN105303114A (zh) 基于windows的系统服务函数调用方法及装置
CN105980993B (zh) 数据处理设备和方法
US10055585B2 (en) Hardware and software execution profiling
CN103500191B (zh) 一种流表配置、查询、表项删除方法及装置
TW201935306A (zh) 用於安全初始化的策略連結及/或載入之系統和方法
CN107908958B (zh) SELinux安全标识符防篡改检测方法及系统
CN108234480B (zh) 入侵检测方法及装置
CN108959936B (zh) 一种基于路径分析的缓冲区溢出漏洞自动利用方法
CN101395587A (zh) 防止可执行程序被修改
CN101950339B (zh) 一种电脑安全防护方法和系统
CN108898012A (zh) 检测非法程序的方法和装置
CN107085516A (zh) 一种修改配置的方法及装置
CN106682493B (zh) 一种防止进程被恶意结束的方法、装置及电子设备
CN106294089A (zh) 辅助对被监控内存空间的访问监控的方法和装置
CN101021891A (zh) 一种进程管理方法和装置
CN104298922A (zh) 一种阻止漏洞利用的方法及装置
EP3108400B1 (en) Virus signature matching method and apparatus
CN105426755A (zh) 一种基于哈希算法的库函数安全增强方法
CN103019865B (zh) 虚拟机监控方法和系统
CN109040089B (zh) 网络策略审计方法、设备及计算机可读存储介质
CN107688481B (zh) 一种支持多节点的kvm虚拟机隐藏进程检测系统
CN115509691A (zh) 一种虚拟机内部栈溢出识别方法及系统
CN106127054A (zh) 一种面向智能设备控制指令的系统级安全防护方法
CN104933453A (zh) 环网柜信息的管理系统和方法
CN105631317A (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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20160203