CN102779244A - 一种文件操作的执行方法及装置 - Google Patents

一种文件操作的执行方法及装置 Download PDF

Info

Publication number
CN102779244A
CN102779244A CN2011101211805A CN201110121180A CN102779244A CN 102779244 A CN102779244 A CN 102779244A CN 2011101211805 A CN2011101211805 A CN 2011101211805A CN 201110121180 A CN201110121180 A CN 201110121180A CN 102779244 A CN102779244 A CN 102779244A
Authority
CN
China
Prior art keywords
file
routine
path
input parameter
file operation
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
CN2011101211805A
Other languages
English (en)
Other versions
CN102779244B (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.)
Beijing Qihoo Technology Co Ltd
Original Assignee
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 Qizhi Software Beijing Co Ltd filed Critical Qizhi Software Beijing Co Ltd
Priority to CN201110121180.5A priority Critical patent/CN102779244B/zh
Priority to PCT/CN2012/075145 priority patent/WO2012152210A1/zh
Publication of CN102779244A publication Critical patent/CN102779244A/zh
Application granted granted Critical
Publication of CN102779244B publication Critical patent/CN102779244B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种文件操作的执行方法,包括:获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;依据所述文件路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。本发明可以增强和驱动级恶意程序攻防的对抗能力,并避免因文件操作干扰而导致安全软件间产生不兼容的潜在可能性。

Description

一种文件操作的执行方法及装置
技术领域
本发明涉及文件穿透的技术领域,特别是涉及一种文件操作的执行方法和一种文件操作的执行装置。
背景技术
在面对复杂问题的时候,人们往往会采用分而治之的方法分割、缩小问题的范围,这一点在操作系统的设计中亦是如此,Windows操作系统借助分层的设计思想解决复杂的问题,这一做法带来了可移植性、可扩展性等优点。不过,由于在设计理论上存在着安全性缺陷(例如缺乏完整性校验机制等),高可扩展性的另一方面也意味着系统存在大量的被篡改可能。以文件系统的设计为例,文件调用栈的分层式结构决定了其调用链上存在数据流被篡改的风险。正因为如此,保证自身文件操作过程的真实、可信成了安全软件的一个必然要求。
参考图1所示的操作系统文件操作执行流的示意图,在执行文件操作采用如下分层调用的方式:
调用者101调用内核接口层102,内核接口层102调用内核执行层103,内核执行层103调用文件对象解析例程104,文件对象解析例程104调用过滤驱动a105,顶层过滤驱动逐层调用直至调用到底层过滤驱动N106,底层过滤驱动N106调用文件系统下层设备107。其中,调用者101和内核接口层102属于操作系统用户态,内核执行层103、文件对象解析例程104、顶层过滤驱动a105、底层过滤驱动N106和文件系统下层设备107属于操作系统内核态。
从操作系统的角度看,文件操作执行流存在着如下潜在的篡改点:
1)内核接口层的用户态IAT Hook(Import Address Table Hook,导入表钩挂)/EAT Hook(Export Address Table Hook,导出表钩挂);
2)内核接口层的用户态Inline Hook(内联钩挂);
3)内核接口层调用内核执行层时的Int 2E(中断)/SysEnter Hook(用户态进入内核态钩挂);
4)内核执行层的Native API SSDT Hook(System Service DispatchTable Hook,系统服务分派表钩挂);
5)内核执行层的Native API Inline Hook;
6)文件对象解析例程的Object Parse Routine Hook(对象解析例程钩挂);
7)顶层过滤驱动a的顶层过滤驱动获取;
8)底层过滤驱动N的底层过滤驱动获取。
传统安全软件厂商虽然意识到了种种文件操作调用被劫持的可能性,但是现有的解决方案大多只考虑了操作系统用户态的劫持风险,在操作系统内核态的攻防上往往体现出一定的能力缺失,驱动级恶意程序(Rootkit)对抗能力偏弱。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种文件穿透操作的处理机制,不仅提供操作系统用户态的攻防,还进一步提供操作系统内核态的攻防,以增强和驱动级恶意程序攻防的对抗能力,并避免因文件操作干扰而导致安全软件间产生不兼容的潜在可能性。
发明内容
本发明所要解决的技术问题是提供一种文件操作的执行方法,以增强和驱动级恶意程序攻防的对抗能力,并避免因文件操作干扰而导致安全软件间产生不兼容的潜在可能性。
本发明还提供了一种文件操作的执行装置,用以保证上述方法在实际中的应用及实现。
为了解决上述问题,本发明实施例公开了一种文件操作的执行方法,包括:
获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
依据所述文件路径在对象管理器中查找对应的文件对象解析例程;
若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
优选的是,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体包括以下子步骤;
子步骤S1、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2;若是,则执行子步骤S4;
子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段;
子步骤S3、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤S1;若否,则执行子步骤S5;
子步骤S4、获得所述文件路径对应的文件对象解析例程。
子步骤S5、返回未找到对应文件对象解析例程的信息。
优选的是,所述调用者输入参数具有用户态地址;在查找文件对象解析例程之前,所述的方法还包括:
重构所述用户态地址至内核态内存空间。
优选的是,所述I/O请求包中包括从文件操作请求中提取的文件操作信息,在发送I/O请求包至预置的文件系统下层设备的原始地址之后,还包括:
由所述文件系统下层设备依据所述文件操作信息继续执行对应的文件操作。
优选的是,在获取文件操作请求之前,还包括:
调用者发起文件操作请求,调用对应的文件操作接口例程;其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
依据系统平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作系统内核态。
优选的是,在构建内核态结构参数之前,还包括:
文件操作接口例程将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程。
优选的是,所述文件操作接口例程包括文件创建例程FSCreateFile,在由所述文件系统下层设备继续执行所请求的文件操作之前,还包括:
插入新创建的文件对象至对象管理器,并得到返回的文件句柄。
优选的是,所述的方法,还包括:
依据所述文件操作请求校验调用者输入参数,若校验通过,则执行查找文件对象解析例程的步骤。
优选的是,所述文件操作接口例程与WINDOWS标准API一致,所述文件操作接口例程还包括:文件读取例程FSReadFile、文件写入例程FSWriteFile、文件属性设置例程FSSetFileAttributes、文件属性获取例程FSGetFileAttributes、文件指针设置例程FSSetFilePointer、增强文件指针设置例程FSSetFilePointerEx、文件大小获取例程FSGetFileSize、文件删除例程FSDeleteFile、目录移除例程FSRemoveDirectory、句柄关闭例程FSCloseHandle、第一个文件查找例程FSFindFirstFile、下一个文件查找例程FSFindNextFile、文件查找关闭例程FSFindClose、增加文件属性获取例程FSGetFileAttributesEx、判断路径是否为目录的例程FSPathIsDirectory、判断目标文件是否存在的例程FSPathFileExists、长路径获取例程FSGetLongPathName、短路径获取例程FSGetShortPathName、路径查找例程FSSearchPath、增强文件大小获取例程FSGetFileSizeEx、文件复制例程FSCopyFile、文件移动例程FSMoveFile和/或增强文件移动例程FSMoveFileEx。
优选的是,所述控制码包括:文件创建操作控制码FILE_IO_CREATE_FILE、文件读取操作控制码FILE_IO_READ_FILE、文件写入操作控制码FILE_IO_WRITE_FILE、文件查询操作控制码FILE_IO_QUERY_FILE、文件设置操作控制码FILE_IO_SET_FILE和/或文件关闭准备操作控制码FILE_IO_PREPARE_CLOSE。
本发明实施例还公开了一种文件操作的执行装置,包括:
内核态请求获取模块,用于获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
内核态对象解析模块,用于依据所述文件路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则调用内核IRP生成发送模块;
内核态IRP生成发送模块,用于依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
优选的是,所述内核对象解析模块具体包括以下子模块;
文件路径拆解子模块,用于按照路径分隔符逐级拆解出文件路径中的路径段;
对象管理器搜索子模块,用于采用当前拆解出的路径段在对象管理器中搜索,查找对应的文件对象例程。
优选的是,所述调用者输入参数具有用户态地址;所述的装置还包括:
内核地址重构模块,用于重构所述用户态地址至内核态内存空间。
优选的是,所述的装置,还包括:
用户态请求发送模块,用于由调用者发起文件操作请求,调用对应的文件操作接口例程;其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
用户态控制码发送模块,用于依据系统平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作系统内核态。
优选的是,所述的装置,还包括:
宽字符例程调用模块,用于将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程。
优选的是,所述文件操作接口例程包括文件创建例程FSCreateFile,所述的装置还包括:
句柄获取模块,用于插入新创建的文件对象至对象管理器,并得到返回的文件句柄。
优选的是,所述的装置,还包括:
内核态参数校验模块,用于依据所述文件操作请求校验调用者输入参数,若校验通过,则调用内核对象解析模块。
与现有技术相比,本发明具有以下优点:
在操作系统用户态接口完整实现一套文件操作调用库,调用者发起文件操作请求,调用对应的文件操作接口例程,操作系统内核态驱动获取并校验所述来自用户态的请求,构建查询数据结构循环解析传入的文件路径,最终查找到对象管理器中维护的对象类型,这一过程有效对抗了内核态的劫持内险。此后,操作系统内核态驱动构建并填充IRP请求数据包,发送至预先确定的文件系统下层设备的原始地址处,此时文件系统调用栈上的第三方过滤驱动,包括其他安全软件和驱动级恶意程序可以被穿透,从而既可以有效避免因文件操作干扰而导致和其他安全软件间产生不兼容的潜在可能性;又可以增强和驱动级恶意程序攻防时的对抗能力。
本发明实施例中所采用的文件路径解析方法还能动态解析目标文件路径,例如,对于动态映射的网络磁盘驱动器,通过搜索对象管理器就能动态获得DOS-Style文件路径格式、盘符和文件系统下层设备对象之间的对应处理关系,因而本发明实施例还有适用范围广,适用场景多的优点。
附图说明
图1是操作系统文件操作执行流的示意图;
图2是本发明的一种文件操作的执行方法实施例1的步骤流程图;
图3是本发明中依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤流程图;
图4是本发明的一种具体示例中在对象管理器中进行搜索的第一示意图;
图5是本发明的一种具体示例中在对象管理器中进行搜索的第二示意图;
图6是本发明的一种具体示例中在对象管理器中进行搜索的第三示意图;
图7是本发明的另一具体示例中在对象管理器中进行搜索的第四示意图;
图8是本发明的另一具体示例中在对象管理器中进行搜索的第五示意图;
图9是本发明的另一具体示例中在对象管理器中进行搜索的第六示意图;
图10是本发明的一种文件操作的执行方法实施例2的步骤流程图;
图11是应用本发明实施例实现的文件操作执行流示意图;
图12是本发明的一种文件操作的执行装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例的核心构思之一在于,在操作系统用户态接口完整实现一套文件操作调用库,调用者发起文件操作请求,调用对应的文件操作接口例程,操作系统内核态驱动获取并校验所述来自用户态的请求,构建查询数据结构循环解析传入的文件路径,最终查找到对象管理器中维护的对象类型,这一过程有效对抗了内核态的劫持内险。此后,操作系统内核态驱动构建并填充IRP请求数据包,发送至预先确定的文件系统下层设备的原始地址处,此时文件系统调用栈上的第三方过滤驱动(其他安全软件、驱动级恶意程序)被穿透(旁路,bypass)。简而言之,即本发明通过建立一条新的、可信的、可以穿透过滤驱动的文件操作执行路径,有效避免了传统操作系统的文件执行路径上存在的风险。
参考图2,示出了本发明的一种文件操作的执行方法实施例1的步骤流程图,具体可以包括以下步骤:
步骤201、获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
需要说明的是,在本发明实施例中,所述文件包括WINDOWS操作系统中所支持类型的文件,所述文件操作是指针对文件的原子操作或原子操作的组合,所述原子操作包括:文件创建、文件读取、文件写入、文件属性设置、文件属性获取、文件指针设置、文件大小获取、文件删除、目录移除、句柄关闭、第一个文件查找、下一个文件查找、文件查找关闭、判断路径是否为目录、判断目标文件是否存在、长路径获取、短路径获取、路径查找、文件复制、文件移动等。例如,文件的杀毒操作即为文件读取、第一个文件查找、下一个文件查找、文件查找关闭、文件移动等原子操作的组合。
步骤202、依据所述文件操作请求校验调用者输入参数,若校验通过,则依据所述文件路径在对象管理器中查找对应的文件对象解析例程;
参考图3,在本发明的一种优选实施例中,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体可以包括以下子步骤;
子步骤S1、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2;若是,则执行子步骤S4;
子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段;
子步骤S3、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤S1;若否,则执行子步骤S5;
子步骤S4、获得所述文件路径对应的文件对象解析例程。
子步骤S5、返回未找到对应文件对象解析例程的信息。
在具体实现中,可以预先构建对象管理器查询的OpenPacket结构,基于路径分隔符“\”循环拆解文件路径,例如,文件路径为:c:\a\b.txt,则第一次拆解出的路径段为c:,第二次拆解出的路径段为:c:\a,第三次拆解出的路径段为:c:\a\b.txt,即在本发明实施例,是基于递归调用的方式拆解文件路径。对象管理器(Object Manager)是Windows NT内核的一个基本组件。Windows NT在设计的时候,“面向对象”的设计思想已大行其道,即将原本散落在操作系统各处的资源集中抽象、封装起来,进而为各种内部服务提供一致的访问途径。对象管理器主要用于实现以下功能:(1)提供一种公共的、统一的机制来使用系统资源;(2)将对象保护隔离到操作系统的统一区域中,从而可以做到C2安全等级;(3)提供一种机制来记录进程使用对象的数量,从而可以对系统资源的使用加上限制;(4)建立一套对象命名方案,可以更方便地融合现有的对象。对象管理器共维护了几十种对象类型(Windows 2000是27种对象类型;Windows XP是29种对象类型),常见的如:符号链接(Symbolic Link)、进程(Process)、线程(Thread)、作业(Job)、文件(File)、事件(Event)、定时器(Timer)等等。
对象管理器中维护有拉链式的对象Hash表,基于每次拆解出的路径段搜索对象管理器,若能查找到对应的对象解析例程ParseProcedure,则继续下一次的文件路径拆解,并基于下一次拆解出的路径段和之前已拆解出的路径段搜索对象管理器,若当前的文件路径经过循环解析被完全拆解完毕,则经过搜索对象管理器找到的文件对象解析例程ParseRoutine为当前文件路径对应的文件对象解析例程。
公知的是,例程是某个系统对外提供的功能接口或服务的集合。比如操作系统的API、服务等就是例程。
为使本领域技术人员更好地理解本发明,以下结合图4、图5、图6、图7、图8和图9所示的对象管理器搜索示意图,通过一个具体例子详细说明本发明拆解文件路径搜索对象管理器的操作。
例如,文件路径为:c:\test\test.txt,c:就是一个符号链接(SymbolicLink),对象管理器搜索实质上是一个符号链接的查询过程。
(1)参考图4,搜索从对象管理器的“根”开始(即“\”);
(2)找到“\”下的GLOBAL??目录;
(3)根据GLOBAL??目录找到“\”下的GLOBAL??文件夹;此后,继续在GLOBAL??里寻找c:(注意C:在图中属于SymbolicLink)
(4)参考图5,从GLOBAL??文件夹中找到C:;
(5)依据C:所对应的类型(Type):SymbolicLink和附加信息(Additional Information):\Device\HarddiskVolume1找到Device文件夹;如有必要,会继续解析\Device\harddiskVolume1符号链接等等,直接无法拆解为止。
(6)参考图6,从Device文件夹下找到HarddiskVolume1。
又如,文件路径为“SystemRoot\System32\Drivers\ntfs.sys”,“SystemRoot”也是符号链接;
(1)参考图7,先找到SystemRoot;
(2)依据SystemRoot所对应的类型(Type):SymbolicLink和附加信息(Additional Information):\Device\Harddisk0\Partitionl\WINDOWS找到Device文件夹;
(3)参考图8,找到Device文件夹下的\Harddisk0;
(4)找到\Harddisk0下的Partitionl,依据Partitionl所对应的类型(Type):SymbolicLink和附加信息(Additional Information):\Device\HarddiskVolume1找到Device文件夹;
(5)参考图9,找到Device文件夹下的HarddiskVolume1。
在本例中,路径拆解的依据是路径分隔符“\”,每找到一个分隔符,就认为找到一段“因子”,然后去搜索对象管理器,如有必要再合并路径,重新搜索对象管理器。在本实施例中,搜索出的文件对象解析例程是一个函数,这个函数在注册的时候就和某个因子对应,它知道如何去正确地处理这些因子。
本发明实施例中所采用的文件路径解析方法能动态解析目标文件路径,例如,对于动态映射的网络磁盘驱动器,通过搜索对象管理器就能动态获得DOS-Style文件路径格式、盘符和文件系统下层设备对象之间的对应处理关系,因而本发明实施例还有适用范围广,适用场景多的优点。
步骤203、若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
在具体实现中,文件对象解析Parse Routine的实现类似于微软的IoParseDevice例程(模拟实现),其内部会构建并填充I/O请求包(I/ORequest Packet,IRP)并发送至文件系统下层设备的原始地址处。在微软的Windows操作系统家族中,都通过发送IRP来进行和驱动程序的通讯。用来封装IRP的数据结构不仅仅用来描述一个I/O操作的请求本身的内容,还要用来维护这一请求在一系列驱动程序中传递的过程中的相关状态信息。也就是说IRP可以被定义为:是I/O系统为了处理一个I/O请求而用来存储必要信息的地方。当一个线程调用一个I/O服务的时候,I/O管理器构造IRP,用于在I/O系统处理此请求的过程中代表此请求。
在具体实现中,所述文件系统下层设备的原始地址可以在系统初始化时设置。经过此步骤,文件系统调用栈上的第三方过滤驱动(其他安全软件、驱动级恶意程序)会被穿透,从而可以有效避免因文件操作干扰而导致和其他安全软件间产生不兼容的潜在可能性;还可以增强和驱动级恶意程序攻防时的对抗能力。
在实际中,所述I/O请求包中包括从文件操作请求中提取的文件操作信息,当I/O请求包(IPR)被发送至预置的文件系统下层设备的原始地址之后,则由所述文件系统下层设备依据所述文件操作信息继续执行对应的文件操作。具体而言,当IRP发送给文件系统的设备对象后,直到写入硬盘,还要经过一系列复杂的处理过程,一般而言,这个请求还要经过卷快照(Volsnap.sys)、卷管理器(Ftdisk.sys)、分区管理器(Partmgr.sys)、磁盘类驱动(disk.sys)、磁盘端口驱动(以IDE系统为例是atapi.sys)、小端口驱动(以Adaptec 1540 SCSI为例是Ahal54x.sys)等一系列的传递,最终由小端口驱动决定写入磁盘或磁带机的相应偏移。卷管理(包括快照)引入了动态的概念,使得windows可以创建多分区卷(比如镜像卷mirrors,条带卷stripes,RAID-5等),该组件会根据实际情况将请求定位到目标卷的某个偏移。分区管理器负责通知即插即用管理器当前有哪些分区,以及他们的状态(创建、删除等)。磁盘类驱动实现了对于所有磁盘共有的功能,例如,SCSI(Small Computer SystemInterface,小型计算机系统接口)Port是针对SCSI总线上的磁盘特性。最后小端口驱动针对某些厂商的特有产品特点,这类驱动往往由厂商自己提供。总的来说,就是每一层根据自己的接口,接收上层传递来的请求,以自己看到的“视图”,找到目标设备的某个扇区偏移,创建、写入、删除数据。
参考图10,示出了本发明的一种文件操作的执行方法实施例2的步骤流程图,具体可以包括:
步骤401、加载文件操作接口例程,初始化文件系统下层设备的原始地址;
作为具体应用的一种示例,所述文件操作接口例程包括:文件创建例程FSCreateFile、文件读取例程FSReadFile、文件写入例程FSWriteFile、文件属性设置例程FSSetFileAttributes、文件属性获取例程FSGetFileAttributes、文件指针设置例程FSSetFilePointer、增强文件指针设置例程FSSetFilePointerEx、文件大小获取例程FSGetFileSize、文件删除例程FSDeleteFile、目录移除例程FSRemoveDirectory、句柄关闭例程FSCloseHandle、第一个文件查找例程FSFindFirstFile、下一个文件查找例程FSFindNextFile、文件查找关闭例程FSFindClose、增加文件属性获取例程FSGetFileAttributesEx、判断路径是否为目录的例程FSPathIsDirectory、判断目标文件是否存在的例程FSPathFileExists、长路径获取例程FSGetLongPathName、短路径获取例程FSGetShortPathName、路径查找例程FSSearchPath、增强文件大小获取例程FSGetFileSizeEx、文件复制例程FSCopyFile、文件移动例程FSMoveFile和/或增强文件移动例程FSMoveFileEx。所述文件操作接口例程的设置,如调用约定、调用参数和对应的WINDOWS标准API一致。上述每个例程均包括窄字符例程和宽字符例程,例如对于FSCreateFile而言,包括窄字符例程FSCreateFileA和宽字符例程FSCreateFileW。
步骤402、调用者发起文件操作请求,调用对应的文件操作接口例程;其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径和用户态地址;
例如,调用者进程发起FSCreateFileA的文件创建请求。
步骤403、所述文件操作接口例程的用户态部分将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程;
公知的是,ANSI中的字符采用8bit,而UNICODE中的字符采用16bit。(对于字符来说ANSI以单字节存放英文字符,以双字节存放中文等字符,而Unicode下,英文和中文的字符都以双字节存放)。
以文件创建过程为例,为保证平台适用性,FSCreateFileA会将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程FSCreateFileW。
当然,若在实际中直接调用的是宽字符例程,则无需执行本步骤。
步骤404、依据系统平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作系统内核态;
所述系统平台的类型包括32位、64位以及32位兼容模式。作为本发明一种具体应用的示例,与所述文件操作接口例程对应的控制码包括:文件创建操作控制码FILE_IO_CREATE_FILE、文件读取操作控制码FILE_IO_READ_FILE、文件写入操作控制码FILE_IO_WRITE_FILE、文件查询操作控制码FILE_IO_QUERY_FILE、文件设置操作控制码FILE_IO_SET_FILE和/或文件关闭准备操作控制码FILE_IO_PREPARE_CLOSE。所述控制码定义了操作系统用户态和内核态驱动通信时的统一标识。
以文件创建过程为例,FSCreateFileW通过判断系统平台类型(32位、64位或32位兼容模式)构建结构参数,发送控制码FILE_IO_CREATE_FILE并同步等待返回。
在实际中,FSCreateFileW还可以处理畸形文件名、文件路径,并实际完成参数转换的操作。操作系统用户态和内核态驱动通信时输入、输出缓冲区可以采用METHOD_BUFFERED方式传输。METHOD_BUFFERED方式为:先分配缓冲,再从这个缓冲copy数据,缓冲区大小是输入缓冲和输出缓冲间空间较大的那个。读缓冲被copy到新的缓冲。在返回前,只是copy返回值到相同的缓冲。返回值被放到IO_STATUS_BLOCK,IO管理器copy数据到输出缓冲。
步骤405、操作系统内核态驱动获取文件操作请求,校验调用者输入参数,并重构(Captured)所述用户态地址至内核态内存空间;
以文件创建过程为例,由FSCreateFileW例程内核部分将执行步骤,并在内核态内存空间处理相应的调用者输入参数。
步骤406、若输入参数校验通过,则依据所述文件路径在对象管理器中查找对应的文件对象解析例程;
步骤407、若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
以文件创建过程为例,FSCreateFileW的内核部分会校验用户态传入参数,构建OpenPacket结构,循环解析文件路径格式并搜索对象管理器维护的拉链式对象Hash表。具体可以采用路径分隔符“\”拆解输入的文件路径,拆解出的路径部分搜索对象管理器维护的拉链式对象Hash表,查找出对应的ParseProcedure。在循环解析完毕时,便认为找到了对象的Parse Routine例程。Parse Routine内部会构建并填充IRP请求数据包并发送至文件系统下层设备的原始地址处,完成文件穿透的创建过程。此时,文件系统调用栈上的第三方过滤驱动(其他安全软件、驱动级恶意程序)被旁路。
在具体实现中,对于新创建出的对象还可以通过ObInsertObject例程插入至对象管理器的Hash结构中,并得到返回的文件句柄。并且,内核还可以同步调用返回用户态句柄信息以及调用结果。如果调用失败,用户态接口可以设置相应的错误码,这样,调用者线程可以通过GetLastError例程得到详细的错误信息。
以下结合图11所示的应用本发明实施例实现的文件操作执行流示意图更进一步说明本发明的工作原理。
调用者111调用本实施例中实现的驱动接口层112,而非调用现有技术中的内核接口层113;
驱动接口层112调用模拟内核执行层校验调用者输入参数114;
调用者输入参数验证通过后,执行搜索对象管理器循环解析文件路径115得到对象解析例程116,以及,构建IRP发送至文件系统下层设备原始地址117的操作;
在此过程中,现有技术中的文件对象解析例程118、顶层过滤驱动a119、底层过滤驱动N120被穿透。
IRP被发送至文件系统下层设备121后,由文件系统下层设备121执行IRP所请求的操作。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
参考图12,示出了本发明的一种文件操作的执行装置实施例的结构框图,具体可以包括以下模块:
内核态请求获取模块121,用于获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
内核态参数校验模块122,用于依据所述文件操作请求校验调用者输入参数,若校验通过,则调用内核对象解析模块123;
内核态对象解析模块123,用于依据所述文件路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则调用内核IRP生成发送模块124;
内核态IRP生成发送模块124,用于依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
在本发明的一种优选实施例中,所述内核对象解析模块123具体可以包括以下子模块;
文件路径拆解子模块,用于按照路径分隔符逐级拆解出文件路径中的路径段;
对象管理器搜索子模块,用于采用当前拆解出的路径段在对象管理器中搜索,查找对应的文件对象例程。
在具体实现中,所述调用者输入参数具有用户态地址;所述的装置还可以包括:
内核地址重构模块,用于重构所述用户态地址至内核态内存空间。
在本发明的一种优选实施例中,还可以包括以下模块:
用户态请求发送模块,用于由调用者发起文件操作请求,调用对应的文件操作接口例程;其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
用户态控制码发送模块,用于依据系统平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作系统内核态。
在具体实现中,还可以包括以下模块:
宽字符例程调用模块,用于将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程。
作为本发明实施例一种具体应用的示例,所述文件操作接口例程可以包括文件创建例程FSCreateFile,所述的装置还可以包括以下模块:
句柄获取模块,用于插入新创建的文件对象至对象管理器,并得到返回的文件句柄。
由于所述装置实施例基本相应于前述图1、图2和图3所示的方法实施例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此就不赘述了。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上对本发明所提供的一种文件操作的执行方法和一种文件操作的执行装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (17)

1.一种文件操作的执行方法,其特征在于,包括:
获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
依据所述文件路径在对象管理器中查找对应的文件对象解析例程;
若查找到对应的文件对象解析例程,则依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
2.如权利要求1所述的方法,其特征在于,所述依据文件路径在对象管理器中查找对应的文件对象解析例程的步骤具体包括以下子步骤;
子步骤S1、判断文件路径是否已经拆解完毕,若否,则执行子步骤S2;若是,则执行子步骤S4;
子步骤S2、按照路径分隔符拆解出文件路径中下一个待拆解的路径段;
子步骤S3、采用当前拆解出的路径段在对象管理器中搜索,判断是否存在对应的文件对象例程;若是,则返回子步骤S1;若否,则执行子步骤S5;
子步骤S4、获得所述文件路径对应的文件对象解析例程。
子步骤S5、返回未找到对应文件对象解析例程的信息。
3.如权利要求1或2所述的方法,其特征在于,所述调用者输入参数具有用户态地址;在查找文件对象解析例程之前,所述的方法还包括:
重构所述用户态地址至内核态内存空间。
4.如权利要求1或2所述的方法,其特征在于,所述I/O请求包中包括从文件操作请求中提取的文件操作信息,在发送I/O请求包至预置的文件系统下层设备的原始地址之后,还包括:
由所述文件系统下层设备依据所述文件操作信息继续执行对应的文件操作。
5.如权利要求3所述的方法,其特征在于,在获取文件操作请求之前,还包括:
调用者发起文件操作请求,调用对应的文件操作接口例程;其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
依据系统平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作系统内核态。
6.如权利要求5所述的方法,其特征在于,在构建内核态结构参数之前,还包括:
文件操作接口例程将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程。
7.如权利要求6所述的方法,其特征在于,所述文件操作接口例程包括文件创建例程FSCreateFile,在由所述文件系统下层设备继续执行所请求的文件操作之前,还包括:
插入新创建的文件对象至对象管理器,并得到返回的文件句柄。
8.如权利要求1所述的方法,其特征在于,还包括:
依据所述文件操作请求校验调用者输入参数,若校验通过,则执行查找文件对象解析例程的步骤。
9.如权利要求7所述的方法,其特征在于,所述文件操作接口例程与WINDOWS标准API一致,所述文件操作接口例程还包括:文件读取例程FSReadFile、文件写入例程FSWriteFile、文件属性设置例程FSSetFileAttributes、文件属性获取例程FSGetFileAttributes、文件指针设置例程FSSetFilePointer、增强文件指针设置例程FSSetFilePointerEx、文件大小获取例程FSGetFileSize、文件删除例程FSDeleteFile、目录移除例程FSRemoveDirectory、句柄关闭例程FSCloseHandle、第一个文件查找例程FSFindFirstFile、下一个文件查找例程FSFindNextFile、文件查找关闭例程FSFindClose、增加文件属性获取例程FSGetFileAttributesEx、判断路径是否为目录的例程FSPathIsDirectory、判断目标文件是否存在的例程FSPathFileExists、长路径获取例程FSGetLongPathName、短路径获取例程FSGetShortPathName、路径查找例程FSSearchPath、增强文件大小获取例程FSGetFileSizeEx、文件复制例程FSCopyFile、文件移动例程FSMoveFile和/或增强文件移动例程FSMoveFileEx。
10.如权利要求9所述的方法,其特征在于,所述控制码包括:文件创建操作控制码FILE_IO_CREATE_FILE、文件读取操作控制码FILE_IO_READ_FILE、文件写入操作控制码FILE_IO_WRITE_FILE、文件查询操作控制码FILE_IO_QUERY_FILE、文件设置操作控制码FILE_IO_SET_FILE和/或文件关闭准备操作控制码FILE_IO_PREPARE_CLOSE。
11.一种文件操作的执行装置,其特征在于,包括:
内核态请求获取模块,用于获取文件操作请求,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
内核态对象解析模块,用于依据所述文件路径在对象管理器中查找对应的文件对象解析例程;若查找到对应的文件对象解析例程,则调用内核IRP生成发送模块;
内核态IRP生成发送模块,用于依据所述文件对象解析例程生成I/O请求包,并发送至预置的文件系统下层设备的原始地址。
12.如权利要求11所述的装置,其特征在于,所述内核对象解析模块具体包括以下子模块;
文件路径拆解子模块,用于按照路径分隔符逐级拆解出文件路径中的路径段;
对象管理器搜索子模块,用于采用当前拆解出的路径段在对象管理器中搜索,查找对应的文件对象例程。
13.如权利要求11或12所述的装置,其特征在于,所述调用者输入参数具有用户态地址;所述的装置还包括:
内核地址重构模块,用于重构所述用户态地址至内核态内存空间。
14.如权利要求13所述的装置,其特征在于,还包括:
用户态请求发送模块,用于由调用者发起文件操作请求,调用对应的文件操作接口例程;其中,所述请求中包括调用者输入参数,所述输入参数中包括文件路径;
用户态控制码发送模块,用于依据系统平台的类型构建内核态结构参数,依据所述内核态结构参数生成相应的文件操作控制码,并发送至操作系统内核态。
15.如权利要求14所述的装置,其特征在于,还包括:
宽字符例程调用模块,用于将调用者输入参数中的ANSI相关参数转换为UNICODE类型,并调用对应的文件操作接口宽字符例程。
16.如权利要求15所述的装置,其特征在于,所述文件操作接口例程包括文件创建例程FSCreateFile,所述的装置还包括:
句柄获取模块,用于插入新创建的文件对象至对象管理器,并得到返回的文件句柄。
17.如权利要求11所述的装置,其特征在于,还包括:
内核态参数校验模块,用于依据所述文件操作请求校验调用者输入参数,若校验通过,则调用内核对象解析模块。
CN201110121180.5A 2011-05-11 2011-05-11 一种文件操作的执行方法及装置 Active CN102779244B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110121180.5A CN102779244B (zh) 2011-05-11 2011-05-11 一种文件操作的执行方法及装置
PCT/CN2012/075145 WO2012152210A1 (zh) 2011-05-11 2012-05-07 一种文件操作的执行方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110121180.5A CN102779244B (zh) 2011-05-11 2011-05-11 一种文件操作的执行方法及装置

Publications (2)

Publication Number Publication Date
CN102779244A true CN102779244A (zh) 2012-11-14
CN102779244B CN102779244B (zh) 2015-03-25

Family

ID=47124154

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110121180.5A Active CN102779244B (zh) 2011-05-11 2011-05-11 一种文件操作的执行方法及装置

Country Status (2)

Country Link
CN (1) CN102779244B (zh)
WO (1) WO2012152210A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104516974A (zh) * 2014-12-26 2015-04-15 华为技术有限公司 一种文件系统目录项的管理方法及装置
CN105677794A (zh) * 2015-12-31 2016-06-15 新浪网技术(中国)有限公司 PaaS系统中文件的操作处理方法及装置
CN105912482A (zh) * 2016-06-24 2016-08-31 飞天诚信科技股份有限公司 一种irp的处理方法及过滤驱动
CN110334063A (zh) * 2019-07-15 2019-10-15 深圳前海微众银行股份有限公司 文件系统的操作方法、装置、设备及计算机可读存储介质
CN112463662A (zh) * 2020-12-16 2021-03-09 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN112947990A (zh) * 2021-03-23 2021-06-11 四川虹美智能科技有限公司 开发库创建方法、装置及计算机可读介质
CN110334063B (zh) * 2019-07-15 2024-05-14 深圳前海微众银行股份有限公司 文件系统的操作方法、装置、设备及计算机可读存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11663333B2 (en) 2020-08-11 2023-05-30 Beijing Didi Infinity Technology And Development Co., Ltd. Cloud-based systems and methods for detecting and removing rootkit
CN113542412B (zh) * 2021-07-16 2024-01-05 天翼云科技有限公司 数据传输方法、装置、电子设备及存储介质
CN116708597B (zh) * 2023-08-04 2023-10-24 新华三技术有限公司 一种数据处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101256570A (zh) * 2008-02-22 2008-09-03 山东中创软件工程股份有限公司 一种基于Windows系统文件过滤驱动的文件保护技术
CN101414327A (zh) * 2007-10-15 2009-04-22 北京瑞星国际软件有限公司 文件保护的方法
CN101459697A (zh) * 2009-01-07 2009-06-17 清华大学 一种共享文件的访问方法和装置
US7647308B2 (en) * 2006-11-08 2010-01-12 Mcafee, Inc. Method and system for the detection of file system filter driver based rootkits

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100478460B1 (ko) * 2002-05-30 2005-03-23 주식회사 아이큐브 멀티 컨텐츠 파일 무선 수신기와 그 수신기에서의 데이터출력방법
CN101291346B (zh) * 2008-06-06 2012-02-15 中国科学院计算技术研究所 一种网格文件处理方法及其处理设备
CN101464900B (zh) * 2009-01-15 2010-07-21 上海交通大学 Ntfs文件系统下轻量级文件隐藏方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7647308B2 (en) * 2006-11-08 2010-01-12 Mcafee, Inc. Method and system for the detection of file system filter driver based rootkits
CN101414327A (zh) * 2007-10-15 2009-04-22 北京瑞星国际软件有限公司 文件保护的方法
CN101256570A (zh) * 2008-02-22 2008-09-03 山东中创软件工程股份有限公司 一种基于Windows系统文件过滤驱动的文件保护技术
CN101459697A (zh) * 2009-01-07 2009-06-17 清华大学 一种共享文件的访问方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
候春明 等: "基于文件系统过滤驱动的内核Rootkit隐藏技术", 《吉首大学学报(自然科学版)》 *
刘亮 等: "基于文件过滤驱动的文件保护技术研究", 《四川大学学报(自然科学版)》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104516974A (zh) * 2014-12-26 2015-04-15 华为技术有限公司 一种文件系统目录项的管理方法及装置
CN105677794A (zh) * 2015-12-31 2016-06-15 新浪网技术(中国)有限公司 PaaS系统中文件的操作处理方法及装置
CN105677794B (zh) * 2015-12-31 2019-04-05 新浪网技术(中国)有限公司 PaaS系统中文件的操作处理方法及装置
CN105912482A (zh) * 2016-06-24 2016-08-31 飞天诚信科技股份有限公司 一种irp的处理方法及过滤驱动
CN105912482B (zh) * 2016-06-24 2019-05-28 飞天诚信科技股份有限公司 一种irp的处理方法及过滤驱动
CN110334063A (zh) * 2019-07-15 2019-10-15 深圳前海微众银行股份有限公司 文件系统的操作方法、装置、设备及计算机可读存储介质
CN110334063B (zh) * 2019-07-15 2024-05-14 深圳前海微众银行股份有限公司 文件系统的操作方法、装置、设备及计算机可读存储介质
CN112463662A (zh) * 2020-12-16 2021-03-09 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN112463662B (zh) * 2020-12-16 2024-04-05 福州创实讯联信息技术有限公司 一种用户态控制i2c设备的方法与终端
CN112947990A (zh) * 2021-03-23 2021-06-11 四川虹美智能科技有限公司 开发库创建方法、装置及计算机可读介质
CN112947990B (zh) * 2021-03-23 2023-04-07 四川虹美智能科技有限公司 开发库创建方法、装置及计算机可读介质

Also Published As

Publication number Publication date
CN102779244B (zh) 2015-03-25
WO2012152210A1 (zh) 2012-11-15

Similar Documents

Publication Publication Date Title
CN102779244A (zh) 一种文件操作的执行方法及装置
US11016932B2 (en) Systems, methods, and apparatuses for simplifying filesystem operations utilizing a key-value storage system
CN104598809B (zh) 程序的监控方法及其防御方法以及相关装置
CN103176844B (zh) 一种ie6内核与新型ie内核的切换方法和系统
US9235451B2 (en) Browser kernel switching method
US11836112B2 (en) Path resolver for client access to distributed file systems
US9846636B1 (en) Client-side event logging for heterogeneous client environments
CN101808123B (zh) 在存储系统中访问存储资源的方法和装置
US20150121533A1 (en) Dynamic analysis interpreter modification for application dataflow
CN102622439B (zh) 一种在浏览器中展示文档的方法及装置
CN103443789B (zh) 后向兼容聚合文件系统操作性能改进方法和相应装置
CN108090360B (zh) 一种基于行为特征的安卓恶意应用分类方法及系统
CN102779030B (zh) 一种注册表操作的执行方法及装置
CN103678505A (zh) 一种在浏览器中运行应用程序的方法、装置和浏览器
US9317398B1 (en) Vendor and version independent browser driver
CN116069811B (zh) 使用用户定义的函数扩展数据库外部函数
US9430361B1 (en) Transition testing model for heterogeneous client environments
US10701087B2 (en) Analysis apparatus, analysis method, and analysis program
US8239862B2 (en) Apparatus, method, and computer program product for processing information
CN103955468A (zh) 基于浏览器的文档展示方法及装置
CN106202220A (zh) 一种读取对象存储系统中数据的方法以及装置
US11681653B2 (en) Namespace representation and enhanced browsability for replicated file systems
CN102768678B (zh) 文件操作方法及装置
CN107844360B (zh) 一种硬盘执行应用代码的方法及装置
US7634521B1 (en) Technique for scanning stealthed, locked, and encrypted files

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20151022

Address after: 100088, No. 6, building 2, building B, No. 301-306, Jiuxianqiao Road, Chaoyang District, Beijing, room 2, room 3

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

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

Address before: The 4 layer 100016 unit of Beijing city Chaoyang District Jiuxianqiao Road No. 14 Building C

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

TR01 Transfer of patent right

Effective date of registration: 20220727

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: Room 301-306, floor 2 and 3, building B, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100088

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

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

TR01 Transfer of patent right