CN107480538A - 文件加密方法、装置、计算机可读存储介质和设备 - Google Patents
文件加密方法、装置、计算机可读存储介质和设备 Download PDFInfo
- Publication number
- CN107480538A CN107480538A CN201710525749.1A CN201710525749A CN107480538A CN 107480538 A CN107480538 A CN 107480538A CN 201710525749 A CN201710525749 A CN 201710525749A CN 107480538 A CN107480538 A CN 107480538A
- Authority
- CN
- China
- Prior art keywords
- file
- encrypted
- function
- file destination
- hook
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2149—Restricted operating environment
Abstract
本发明涉及信息处理技术领域,尤其涉及文件加密方法、装置、计算机可读存储介质和设备,包括获取第一钩子函数和第二钩子函数,在对目标文件进行打开操作的过程中,先调用第一钩子函数判断目标文件是否位于待加密文件列表中,再调用打开文件函数对目标文件进行打开操作,若目标文件位于待加密文件列表中,则将目标文件的文件句柄保存到待加密文件句柄列表中,在对目标文件进行写入操作的过程中,先调用第二钩子函数判断目标文件的文件句柄是否位于待加密文件句柄列表中,若目标文件的文件句柄位于待加密文件句柄列表中,则对目标文件进行加密操作,再调用写入文件函数对目标文件进行写入操作,从而实现了在系统底层对文件进行自动加密。
Description
技术领域
本发明涉及信息处理技术领域,尤其涉及文件加密方法、装置、计算机可读存储介质和设备。
背景技术
目前,软件开发通常会采用模块化开发,即,将软件的功能进行模块化拆分,不同的模块负责不同的功能,同时,在设计模块时尽可能的使得模块松耦合,也就是使模块能够独立使用,并且可以使得不同的开发人员去开发不同的模块。然而,由于不同的模块由不同的开发人员开发,因此很有可能因为某个人的疏忽导致文件没有进行加密,文件内容被其他人获得,而,文件内容一旦泄露,可能会被黑客利用作为攻击该软件的工具,因此,现有技术亟需一种对文件进行加密的方法。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的文件加密方法、装置、计算机可读存储介质和设备。
本发明提供一种文件加密方法,所述方法包括:
获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
优选的,所述方法还包括:
获取用于钩取关闭文件函数的第三钩子函数;
在对所述目标文件进行关闭操作的过程中,先调用所述第三钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,再调用所述关闭文件函数对所述目标文件进行关闭操作,其中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则在所述待加密文件句柄列表中删除所述目标文件的文件句柄。
优选的,所述第一钩子函数和所述第二钩子函数的编译脚本为Lua脚本。
优选的,所述方法还包括:
集成Lua脚本引擎。
优选的,所述获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数,包括:
从服务器中获取所述第一钩子函数和所述第二钩子函数。
优选的,所述第一钩子函数的参数类型与所述打开文件函数的参数类型相同,所述第二钩子函数的参数类型与所述写入文件函数的参数类型相同。
本发明还提供一种文件加密装置,所述装置包括:
获取模块,用于获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
第一调用模块,用于在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
第二调用模块,用于在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
优选的,所述装置还包括:
第二获取模块,用于获取用于钩取关闭文件函数的第三钩子函数;
第三调用模块,用于在对所述目标文件进行关闭操作的过程中,先调用所述第三钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,再调用所述关闭文件函数对所述目标文件进行关闭操作,其中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则在所述待加密文件句柄列表中删除所述目标文件的文件句柄。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现以下步骤:
获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
本发明实施例中的一个或多个技术方案,至少具有如下技术效果或优点:
本申请通过用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数,在对目标文件进行打开操作的过程中,先调用第一钩子函数判断目标文件是否位于待加密文件列表中,再调用打开文件函数对目标文件进行打开操作,其中,若目标文件位于待加密文件列表中,则将目标文件的文件句柄保存到待加密文件句柄列表中,同时,在对目标文件进行写入操作的过程中,先调用第二钩子函数判断目标文件的文件句柄是否位于待加密文件句柄列表中,若目标文件的文件句柄位于待加密文件句柄列表中,则对目标文件进行加密操作,再调用写入文件函数对目标文件进行写入操作,从而实现了在系统底层对文件进行自动加密,提高了文件的安全性。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考图形表示相同的部件。在附图中:
图1示出了本发明实施例中的文件加密方法的流程图;
图2示出了本发明实施例中的文件加密装置的结构图;
图3示出了本发明实施例中的计算机设备的实体结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本申请实施例提供一种文件加密方法,该文件加密方法应用于客户端中,如图1所示,所述方法包括:
步骤101:获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数。
步骤102:在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中。
步骤103:在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
具体来讲,在本申请中,第一钩子函数用于钩取打开文件函数,第二钩子函数用于钩取写入文件函数,第一钩子函数和第二钩子函数的编译脚本为Lua脚本,从而能够实现实时更新,第一钩子函数和第二钩子函数存储在服务器中,在步骤101中,客户端从服务器中获取第一钩子函数和第二钩子函数。
进一步,在本申请中,为实现对Lua脚本的执行,所述方法还包括:
集成Lua脚本引擎。
本申请通过集成Lua脚本引擎,从而能够实现对Lua脚本的执行,由于Lua引擎是开源的,因此,只需要将Lua引擎的代码集成到客户端代码中,则可以调用Lua引擎接口来实现调用Lua脚本执行其中的函数功能。
下面将对第一钩子函数和第二钩子函数以及执行第一钩子函数和第二钩子函数的过程进行详细描述。
针对第一钩子函数而言,本申请使用Detours对Windows的打开文件函数(CreateFile)进行钩取(HOOK),从而能够实现对主程序中所有的打开文件的操作进行监控的技术效果。具体的,在对目标文件进行打开操作的过程中,使用Detours对CreateFile函数进行HOOK的实现如下:
DetourAttach(&(PVOID&)CreateFile,MY_CreateFile);
其中,CreateFile函数其函数原型如下:
其中,参数lpFileName表示打开文件的名字,参数dwDesiredAccess表示是打开文件进行读还是进行写,参数dwShareMode表示文件的共享模式,参数lpSecurityAttributes标示文件的安全属性,参数dwCreationDisposition标示打开文件的操作,是否是创建或者打开已经存在的文件,参数dwFlagsAndAttributes指定文件的属性和标志,参数hTemplateFile指定模板文件。
其中,第一钩子函数(MY_CreateFile)的函数实现如下:
其中,第一钩子函数的参数类型与打开文件函数的参数类型相同。
在具体实施过程中,在对目标文件进行打开操作的过程中,先调用第一钩子函数判断目标文件是否位于待加密文件列表中,再调用打开文件函数对目标文件进行打开操作。其中,服务器中存储有待加密文件列表,待加密文件列表中存储有待加密的文件的文件名称,客户端从服务器中获取该待加密文件列表,在客户端本地判断目标文件的文件名是否位于待加密文件列表中。若待加密文件列表中存在目标文件的文件名,则将目标文件的文件句柄保存到待加密文件句柄列表中,待加密文件句柄列表中保存有待加密的文件所对应的文件句柄。
需要说明的是,在文件写入的过程中,并不会存在文件的名称,因此,本申请先对文件名称进行判断,继而通过保存文件句柄以实现后续的判断过程。
针对第二钩子函数而言,本申请使用Detours对Windows的写入文件函数(WriteFile,)进行钩取,从而能够实现对主程序中所有的写入文件的操作进行监控的技术效果。具体地,在对目标文件进行写入操作的过程中,使用Detours对WriteFile,函数进行HOOK的实现如下:
DetourAttach(&(PVOID&)WriteFile,MY_WriteFile);
其中,上式中第一个参数是WriteFile函数的内存地址,上式中第二个参数则是编写的HOOK函数MY_WriteFile。
其中,WriteFile函数其函数原型如下:
BOOL WriteFile(
HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);
其中,参数hFile则是文件的句柄,参数lpBuffer则是写入到文件存的内容,参数nNumberOfBytesToWrite标示需要写入文件的字节数,参数lpNumberOfBytesWritten标示实际写入的字节数,参数lpOverlapped标示文件的异步写操作。
其中,第二钩子函数(MY_WriteFile)的函数实现如下:
其中,第二钩子函数的参数类型与写入文件函数的参数类型相同。
在具体实施过程中,在对目标文件进行写入操作的过程中,先调用第二钩子函数判断目标文件的文件句柄是否位于待加密文件句柄列表中,若目标文件的文件句柄位于待加密文件句柄列表中,则对目标文件进行加密操作,再调用写入文件函数对目标文件进行写入操作,从而保证目标文件执行写入操作之前已加密,本申请将文件的内容加密后再执行写入操作。
在具体实施过程中,写入的文件内容存储在lpBuffer中,其写入的文件大小存储在nNumberOfBytesToWrite,本申请使用加密算法来对写入的数据进行加密操作,具体地,可以使用如下Lua加密算法:
LUA.encrypt(lpBuffer,nNumberOfBytesToWrite,KEY)
进一步,在本申请中,为了避免在客户端本地保存的文件句柄对客户端资源的占用,所述方法还包括:
获取用于钩取关闭文件函数的第三钩子函数;
在对所述目标文件进行关闭操作的过程中,先调用所述第三钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,再调用所述关闭文件函数对所述目标文件进行关闭操作,其中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则在所述待加密文件句柄列表中删除所述目标文件的文件句柄。
对于第三钩子函数而言,本申请使用Detours对Windows的关闭文件函数(CloseHandle)进行HOOK,从而对于文件写入完成后,则将文件关闭,同时将保存的句柄进行删除,Detours函数的实现如下:
DetourAttach(&(PVOID&)CloseHandle,MY_CloseHandle);
其中,CloseHandle函数的原型如下:
BOOL CloseHandle(HANDLE hObject);
其中,第三钩子函数的函数实现如下:
本申请与各步骤对应的功能代码编写在主程序中,从而,在主程序初始化时,对各功能代码进行调用,实现了在底层对文件进行加密的效果,使得其他模块开发者不需要去了解文件的加密功能,从而避免了模块开发者漏掉加密操作,产生错误。
本发明实施例还提供一种文件加密装置,如图2所示,所述装置包括:
第一获取模块201,用于获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
第一调用模块202,用于在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
第二调用模块203,用于在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
优选的,所述装置还包括:
第二获取模块,用于获取用于钩取关闭文件函数的第三钩子函数;
第三调用模块,用于在对所述目标文件进行关闭操作的过程中,先调用所述第三钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,再调用所述关闭文件函数对所述目标文件进行关闭操作,其中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则在所述待加密文件句柄列表中删除所述目标文件的文件句柄。
优选的,所述第一钩子函数和所述第二钩子函数的编译脚本为Lua脚本。
优选的,所述装置还包括:
集成模块,用于集成Lua脚本引擎。
优选的,第一获取模块201,具体用于:
从服务器中获取所述第一钩子函数和所述第二钩子函数。
优选的,所述第一钩子函数的参数类型与所述打开文件函数的参数类型相同,所述第二钩子函数的参数类型与所述写入文件函数的参数类型相同。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:
获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
本发明实施例还提供了一种计算机设备,如图3所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该计算机设备可以为包括手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以计算机设备为手机为例:
图3示出的是与本发明实施例提供的计算机设备相关的部分结构的框图。参考图3,该计算机设备包括:存储器301和处理器302。本领域技术人员可以理解,图3中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图3对计算机设备的各个构成部件进行具体的介绍:
存储器301可用于存储软件程序以及模块,处理器302通过运行存储在存储器301的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器301可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储数据(比如音频数据、电话本等)等。此外,存储器301可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器302是计算机设备的控制中心,通过运行或执行存储在存储器301内的软件程序和/或模块,以及调用存储在存储器301内的数据,执行各种功能和处理数据。可选的,处理器302可包括一个或多个处理单元;优选的,处理器302可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。
在本发明实施例中,该计算机设备所包括的处理器302可以具有以下功能:
获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网关、代理服务器、系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (10)
1.一种文件加密方法,其特征在于,所述方法包括:
获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取用于钩取关闭文件函数的第三钩子函数;
在对所述目标文件进行关闭操作的过程中,先调用所述第三钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,再调用所述关闭文件函数对所述目标文件进行关闭操作,其中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则在所述待加密文件句柄列表中删除所述目标文件的文件句柄。
3.如权利要求1所述的方法,其特征在于,所述第一钩子函数和所述第二钩子函数的编译脚本为Lua脚本。
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
集成Lua脚本引擎。
5.如权利要求1所述的方法,其特征在于,所述获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数,包括:
从服务器中获取所述第一钩子函数和所述第二钩子函数。
6.如权利要求1所述的方法,其特征在于,所述第一钩子函数的参数类型与所述打开文件函数的参数类型相同,所述第二钩子函数的参数类型与所述写入文件函数的参数类型相同。
7.一种文件加密装置,其特征在于,所述装置包括:
第一获取模块,用于获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
第一调用模块,用于在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
第二调用模块,用于在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取用于钩取关闭文件函数的第三钩子函数;
第三调用模块,用于在对所述目标文件进行关闭操作的过程中,先调用所述第三钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,再调用所述关闭文件函数对所述目标文件进行关闭操作,其中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则在所述待加密文件句柄列表中删除所述目标文件的文件句柄。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现以下步骤:
获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现以下步骤:
获取用于钩取打开文件函数的第一钩子函数和用于钩取写入文件函数的第二钩子函数;
在对目标文件进行打开操作的过程中,先调用所述第一钩子函数判断所述目标文件是否位于待加密文件列表中,再调用所述打开文件函数对所述目标文件进行打开操作,其中,若所述目标文件位于所述待加密文件列表中,则将所述目标文件的文件句柄保存到待加密文件句柄列表中;
在对所述目标文件进行写入操作的过程中,先调用所述第二钩子函数判断所述目标文件的文件句柄是否位于所述待加密文件句柄列表中,若所述目标文件的文件句柄位于所述待加密文件句柄列表中,则对所述目标文件进行加密操作,再调用所述写入文件函数对所述目标文件进行写入操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710525749.1A CN107480538A (zh) | 2017-06-30 | 2017-06-30 | 文件加密方法、装置、计算机可读存储介质和设备 |
PCT/CN2017/107612 WO2019000736A1 (zh) | 2017-06-30 | 2017-10-25 | 文件加密方法、装置、计算机可读存储介质和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710525749.1A CN107480538A (zh) | 2017-06-30 | 2017-06-30 | 文件加密方法、装置、计算机可读存储介质和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107480538A true CN107480538A (zh) | 2017-12-15 |
Family
ID=60596036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710525749.1A Pending CN107480538A (zh) | 2017-06-30 | 2017-06-30 | 文件加密方法、装置、计算机可读存储介质和设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107480538A (zh) |
WO (1) | WO2019000736A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109002726A (zh) * | 2018-06-06 | 2018-12-14 | 浙江华途信息安全技术股份有限公司 | Linux操作系统的文件读写透明加解密的方法 |
CN111723016A (zh) * | 2020-06-24 | 2020-09-29 | 湖南国科微电子股份有限公司 | 文件关闭方法、装置、电子设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101008974A (zh) * | 2007-01-26 | 2007-08-01 | 北京飞天诚信科技有限公司 | 一种电子文件保护方法及系统 |
US20090049550A1 (en) * | 2007-06-18 | 2009-02-19 | Pc Tools Technology Pty Ltd | Method of detecting and blocking malicious activity |
CN103605930A (zh) * | 2013-11-27 | 2014-02-26 | 湖北民族学院 | 一种基于hook和过滤驱动的双重文件防泄密方法及系统 |
CN103995990A (zh) * | 2014-05-14 | 2014-08-20 | 江苏敏捷科技股份有限公司 | 一种电子文件防泄密的方法 |
CN106203130A (zh) * | 2016-06-26 | 2016-12-07 | 厦门天锐科技股份有限公司 | 一种基于智能动态驱动层的透明加解密方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7945586B1 (en) * | 2007-03-29 | 2011-05-17 | Trend Micro Incorporated | Methods and apparatus to protect data |
CN101901313B (zh) * | 2010-06-10 | 2013-12-18 | 中科方德软件有限公司 | 一种Linux文件保护系统及方法 |
TWI488066B (zh) * | 2012-12-27 | 2015-06-11 | Chunghwa Telecom Co Ltd | 防止檔案以加密形式外洩的防護方法 |
CN104331644B (zh) * | 2014-11-24 | 2017-08-04 | 北京邮电大学 | 一种智能终端文件的透明加解密方法 |
CN105303073B (zh) * | 2015-11-26 | 2018-07-06 | 北京深思数盾科技股份有限公司 | 软件代码保护方法 |
-
2017
- 2017-06-30 CN CN201710525749.1A patent/CN107480538A/zh active Pending
- 2017-10-25 WO PCT/CN2017/107612 patent/WO2019000736A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101008974A (zh) * | 2007-01-26 | 2007-08-01 | 北京飞天诚信科技有限公司 | 一种电子文件保护方法及系统 |
US20090049550A1 (en) * | 2007-06-18 | 2009-02-19 | Pc Tools Technology Pty Ltd | Method of detecting and blocking malicious activity |
CN103605930A (zh) * | 2013-11-27 | 2014-02-26 | 湖北民族学院 | 一种基于hook和过滤驱动的双重文件防泄密方法及系统 |
CN103995990A (zh) * | 2014-05-14 | 2014-08-20 | 江苏敏捷科技股份有限公司 | 一种电子文件防泄密的方法 |
CN106203130A (zh) * | 2016-06-26 | 2016-12-07 | 厦门天锐科技股份有限公司 | 一种基于智能动态驱动层的透明加解密方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109002726A (zh) * | 2018-06-06 | 2018-12-14 | 浙江华途信息安全技术股份有限公司 | Linux操作系统的文件读写透明加解密的方法 |
CN111723016A (zh) * | 2020-06-24 | 2020-09-29 | 湖南国科微电子股份有限公司 | 文件关闭方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2019000736A1 (zh) | 2019-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Carrier | A hypothesis-based approach to digital forensic investigations | |
Ligh et al. | The art of memory forensics: detecting malware and threats in windows, linux, and Mac memory | |
Mahalik et al. | Practical mobile forensics | |
Fox | Information Technology: An Introduction for Today’s Digital World | |
CN103678487B (zh) | 一种网页快照的生成方法和装置 | |
US20100138653A1 (en) | Method and system for searching for, and collecting, electronically-stored information | |
CN106663018A (zh) | 在容器化工作空间环境中修改android应用生命周期以控制其执行的方法 | |
CN106845167A (zh) | 一种apk的加固方法和装置,及动态加载方法和装置 | |
Qasim et al. | Control logic forensics framework using built-in decompiler of engineering software in industrial control systems | |
Tamma et al. | Practical Mobile Forensics: Forensically investigate and analyze iOS, Android, and Windows 10 devices | |
CN109983464A (zh) | 检测恶意脚本 | |
CN106096441A (zh) | 数据存储方法及数据存储装置 | |
Afonin et al. | Mobile Forensics–Advanced Investigative Strategies | |
CN107480538A (zh) | 文件加密方法、装置、计算机可读存储介质和设备 | |
Lauko et al. | Extending DIVINE with Symbolic Verification Using SMT: (Competition Contribution) | |
JP6917150B2 (ja) | コード保護方法およびコンピュータプログラム | |
CN110597496B (zh) | 应用程序的字节码文件获取方法及装置 | |
Abalenkovs et al. | Mobile forensics: Comparison of extraction and analyzing methods of ios and android | |
CN113518991A (zh) | 秘密数组访问装置、秘密数组访问方法以及程序 | |
CN109558341A (zh) | 计算机内存数据保护方法和计算机 | |
Li et al. | Security modeling for embedded system design | |
CN107423634B (zh) | 文件解密方法、装置、计算机可读存储介质及设备 | |
CN107783904A (zh) | 单元测试桩去重方法、装置、计算机可读存储介质及设备 | |
CN104615935B (zh) | 一种面向Xen虚拟化平台的隐藏方法 | |
CN107592217A (zh) | 一种用户识别方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171215 |