CN112507339A - 一种视窗操作系统下基于内核的防硬盘被格式化的方法 - Google Patents
一种视窗操作系统下基于内核的防硬盘被格式化的方法 Download PDFInfo
- Publication number
- CN112507339A CN112507339A CN202011257175.2A CN202011257175A CN112507339A CN 112507339 A CN112507339 A CN 112507339A CN 202011257175 A CN202011257175 A CN 202011257175A CN 112507339 A CN112507339 A CN 112507339A
- Authority
- CN
- China
- Prior art keywords
- operating system
- parameters
- rtl
- hard disk
- user
- 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
Images
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying 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
本发明公开了一种视窗操作系统下基于内核的防硬盘被格式化的方法,包括以下步骤:创建和设置所述视窗操作系统的Image回调函数,以监视所述视窗操作系统应用层加载的所有进程及其模块,并获得每个所述进程及其模块的信息;从所述进程及其模块的信息中获取结构体RTL_USER_PROCESS_PARAMETERS;从所述结构体RTL_USER_PROCESS_PARAMETERS中获取成员CommandLine的字符串值;比较所述字符串值,判断其中是否存在执行格式化硬盘命令对应的特定字符串:如有,则用空格替换所述特定字符串后,交还该结构体给该进程,以确保该进程不格式化硬盘。本发明属于ring 0层,无进程也无DLL存在,不易被卸载,因而更加安全可靠。
Description
技术领域
本发明属于软件领域,尤其涉及一种视窗操作系统下基于内核的防硬盘被格式化的方法。
背景技术
硬盘格式化是一种清除电脑中数据的重要手段,其对于数据的危害也最大。一旦格式化,通常很难恢复数据或需要付出较多的时间和费用才能部分恢复数据。而执行格式化这个指令的门槛却非常低,普通的用户通过几个简单的操作即可进行格式化操作。这使得在数据日益重要的今天,如何防范硬盘被误格式化,或员工离职时恶意操作或者黑客进入后格式化硬盘,这显得日益重要。
发明内容
为了克服上述问题,本发明提供一种安全可靠的视窗操作系统下基于内核的防硬盘被格式化的方法。
本发明的技术方案是提供一种视窗操作系统下基于内核的防硬盘被格式化的方法,其是一种在所述视窗操作系统的ring0级下执行的方法,其包括以下步骤:
创建和设置所述视窗操作系统的Image回调函数,以监视所述视窗操作系统应用层加载的所有进程及其模块,并获得每个所述进程及其模块的信息;从所述进程及其模块的信息中获取结构体RTL_USER_PROCESS_PARAMETERS;
从所述结构体RTL_USER_PROCESS_PARAMETERS中获取所述结构体RTL_USER_PROCESS_PARAMETERS的成员CommandLine的字符串值;
比较所述字符串值,判断其中是否存在执行格式化硬盘命令对应的特定字符串:
如有,则用空格替换所述特定字符串后,交还该结构体给该进程,以确保该进程不格式化硬盘;
如无,则直接返回以使得该进程继续执行。
优选的,所述特定字符串为"c:\windows\system32\dllhost.exe/processid:{"。
优选的,从所述Image回调中的返回参数中获取其对应的结构体RTL_USER_PROCESS_PARAMETERS的方法为:
调用系统函数PsGetProcessWow64Process:
如返回值正常,则获取其中的所述结构体RTL_USER_PROCESS_PARAMETERS;
如返回值异常,则调用系统函数PsGetProcessPeb,如返回值正常,则获取其中的所述结构体RTL_USER_PROCESS_PARAMETERS。
优选的,从所述Image回调中的返回参数中获取其对应的结构体RTL_USER_PROCESS_PARAMETERS的方法为:
调用系统函数PsGetProcessPeb:
如返回值正常,则获取其中的所述结构体RTL_USER_PROCESS_PARAMETERS;
如返回值异常,则调用系统函数PsGetProcessWow64Process,如返回值正常,则获取其中的所述结构体RTL_USER_PROCESS_PARAMETERS。
优选的,所述方法随所述视窗操作系统启动而开始执行。
优选的,所述视窗操作系统是64位的windows10操作系统。
本发明的视窗操作系统下基于内核的防硬盘被格式化的方法,是基于内核来实现,属于ring 0层,相比于应用层(ring 3)的技术实现,既无进程也无DLL存在,不易被卸载,因而更加安全可靠。
附图说明
图1是本发明的原理示意图。
具体实施方式
下面对本发明的具体实施方式作进一步详细的描述。
1、技术基础
我们基于目前的64位win10来实现。目前的操作系统,就权限而言,分为ring3和ring0。前者是应用层,权限低,后者是内核层,权限高,可以自由地使用整个系统的资源。在内核层实现,可以使防护的等级更高。如何让程序进入ring0中执行,其方法很多,最常见的就是编写驱动程序的方法进入ring0;也读写物理内存的方法来读写GDT所在的物理内存,在GDT上生成自己的调用门来随意进出ring0。本发明中采用第一种编写驱动程序的方法。其详细实现的过程相关公开的资料很多,且非本发明的重点所在。在内核中,操作系统提供了一种接口叫Image回调(即PsSetLoadImageNotifyRoutine函数),这个函数可以让我们加载到内核的程序能拦截应用层加载的所有进程及模块。Image回调函数的相关调用资料,请参见微软官网的相关文档。
通过分析格式化的过程,可以发现其是通过特定的命令带特定的参数进行的,如果对此命令带的此参数进行修改,就可以阻止格式化磁盘。
2、过程描述参见图1
命令分析的过程是,应用层执行带格式化命令时,对应的进程会在Image回调中获取一个叫做RTL_USER_PROCESS_PARAMETERS的结构体,该结构体在32位系统中是公开的,在64位系统中对64位的进程也是公开的,但是对于进程的该结构体如何获取,却没有公开。我们通过逆向,获取了该结构体的方法。32位进程和64位进程的结构体RTL_USER_PROCESS_PARAMETERS是不一样的,64位系统中32位进程的该结构体的结构如下:
typedef struct_RTL_USER_PROCESS_PARAMETERS{
UCHAR Reserved1[16];
PVOID Reserved2[10];
UNICODE_STRING ImagePathName;
UNICODE_STRING CommandLine;
…
}
32位进程和64位进程的结构体中,都包括成员CommandLine。当格式化硬盘时,会发现该成员中会出现字符串"c:\windows\system32\dllhost.exe/processid:{"。经过反复试验证实,如果发现该字符串,只需要将该字符串用空格覆盖,则不会格式化盘符且无提示。而用其它字符覆盖,则会弹出错误。
其伪代码如下:
Wchar_t s[]=L"c:\windows\system32\dllhost.exe/processid:{";
int len=wcslen(s)*2;
if(CommandLine.Length>len&&memcmp(CommandLine.Buffer,s,len)==0)
memset(CommandLine.Buffer,”,CommandLine.Length);
3、Image回调中获取结构体RTL_USER_PROCESS_PARAMETERS的方法:
首先创建和设置视窗操作系统的Image回调函数(创建和设置的方法请参见微软相关文档、或参见https://write-bug.com/article/2162.html),实现内核层级的对模块加载的监控,包括加载DLL模块、内核模块等,并获得每个所述进程及其模块的信息。对返回的进程及其模块的信息,调用系统提供的函数PsGetProcessWow64Process来获取结构体RTL_USER_PROCESS_PARAMETERS;对于64位的进程,则调用系统提供的内核函数PsGetProcessPeb来获取。其中,考虑到无法确认是32位进程还是64位进程,可以首先调用PsGetProcessWow64Process,调用PsGetProcessWow64Process成功,则不需调用PsGetProcessPeb函数;否则则调用PsGetProcessPeb函数;或反之。这样即可不论32位进程还是64位进程,均可成功获得结构体RTL_USER_PROCESS_PARAMETERS。
以上实施例仅为本发明其中的一种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (6)
1.一种视窗操作系统下基于内核的防硬盘被格式化的方法,其是一种在所述视窗操作系统的ring0级下执行的方法,其特征在于,包括以下步骤:
创建和设置所述视窗操作系统的Image回调函数,以监视所述视窗操作系统应用层加载的所有进程及其模块,并获得每个所述进程及其模块的信息;从所述进程及其模块的信息中获取结构体RTL_USER_PROCESS_PARAMETERS;
从所述结构体RTL_USER_PROCESS_PARAMETERS中获取所述结构体RTL_USER_PROCESS_PARAMETERS的成员CommandLine的字符串值;
比较所述字符串值,判断其中是否存在执行格式化硬盘命令对应的特定字符串:
如有,则用空格替换所述特定字符串后,交还该结构体给该进程,以确保该进程不格式化硬盘;
如无,则直接返回以使得该进程继续执行。
2.根据权利要求1所述的一种视窗操作系统下基于内核的防硬盘被格式化的方法,其特征在于:所述特定字符串为"c:\windows\system32\dllhost.exe/processid:{"。
3.根据权利要求1所述的一种视窗操作系统下基于内核的防硬盘被格式化的方法,其特征在于:从所述Image回调中的返回参数中获取其对应的结构体RTL_USER_PROCESS_PARAMETERS的方法为:
调用系统函数PsGetProcessWow64Process:
如返回值正常,则获取其中的所述结构体RTL_USER_PROCESS_PARAMETERS;
如返回值异常,则调用系统函数PsGetProcessPeb,如返回值正常,则获取其中的所述结构体RTL_USER_PROCESS_PARAMETERS。
4.根据权利要求1所述的一种视窗操作系统下基于内核的防硬盘被格式化的方法,其特征在于:从所述Image回调中的返回参数中获取其对应的结构体RTL_USER_PROCESS_PARAMETERS的方法为:
调用系统函数PsGetProcessPeb:
如返回值正常,则获取其中的所述结构体RTL_USER_PROCESS_PARAMETERS;
如返回值异常,则调用系统函数PsGetProcessWow64Process,如返回值正常,则获取其中的所述结构体RTL_USER_PROCESS_PARAMETERS。
5.根据权利要求1所述的一种视窗操作系统下基于内核的防硬盘被格式化的方法,其特征在于:所述方法随所述视窗操作系统启动而开始执行。
6.根据权利要求1-5其中之一所述的一种视窗操作系统下基于内核的防硬盘被格式化的方法,其特征在于:所述视窗操作系统是64位的windows10操作系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011257175.2A CN112507339A (zh) | 2020-11-11 | 2020-11-11 | 一种视窗操作系统下基于内核的防硬盘被格式化的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011257175.2A CN112507339A (zh) | 2020-11-11 | 2020-11-11 | 一种视窗操作系统下基于内核的防硬盘被格式化的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112507339A true CN112507339A (zh) | 2021-03-16 |
Family
ID=74957128
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011257175.2A Pending CN112507339A (zh) | 2020-11-11 | 2020-11-11 | 一种视窗操作系统下基于内核的防硬盘被格式化的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112507339A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448644A (zh) * | 2021-06-22 | 2021-09-28 | 苏州浪潮智能科技有限公司 | 操作系统ring3模式OC硬盘配置方法、装置、终端及存储介质 |
-
2020
- 2020-11-11 CN CN202011257175.2A patent/CN112507339A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448644A (zh) * | 2021-06-22 | 2021-09-28 | 苏州浪潮智能科技有限公司 | 操作系统ring3模式OC硬盘配置方法、装置、终端及存储介质 |
CN113448644B (zh) * | 2021-06-22 | 2023-07-18 | 苏州浪潮智能科技有限公司 | 操作系统ring3模式OC硬盘配置方法、装置、终端及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10460099B2 (en) | System and method of detecting malicious code in files | |
US6591362B1 (en) | System for protecting BIOS from virus by verified system management interrupt signal source | |
US6385721B1 (en) | Computer with bootable hibernation partition | |
KR101174751B1 (ko) | 커널 콜백 매커니즘을 이용한 악성코드 자동 분석 방법 | |
US8621628B2 (en) | Protecting user mode processes from improper tampering or termination | |
EP2704004B1 (en) | Computing device having a dll injection function, and dll injection method | |
US6993663B1 (en) | Input buffer overrun checking and prevention | |
US7650556B2 (en) | System and method for checking and correcting BIOS errors | |
US7373530B2 (en) | Systems and methods for providing power-loss protection to sleeping computers systems | |
US7367062B2 (en) | Method for BIOS security of computer system | |
US6698016B1 (en) | Method for injecting code into another process | |
JP2018041438A5 (zh) | ||
US20060123210A1 (en) | Method for logically consistent backup of open computer files | |
US20070101317A1 (en) | False code execution prevention method, program for the method, and recording medium for recording the program | |
US20130247198A1 (en) | Emulator updating system and method | |
US20110191850A1 (en) | Malware detection | |
EP2797021B1 (en) | A method for neutralizing pc blocking malware using a separate device for an antimalware procedure activated by user | |
JP2007316637A (ja) | 個別アプリケーション・プログラム用のスクリーンセーバ | |
TW201506788A (zh) | 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全啓動覆蓋技術 | |
US20140380479A1 (en) | Method and System for Controlling Closing of Terminal, and Computer Storage Medium | |
CN112507339A (zh) | 一种视窗操作系统下基于内核的防硬盘被格式化的方法 | |
CN112506424A (zh) | 视窗操作系统下基于内核的防止硬盘分区被删除的方法 | |
KR100762973B1 (ko) | 컴퓨터의 악성코드 탐지 및 제거 방법과 그 장치, 그방법을 컴퓨터에서 실행시키기 위한 프로그램 코드를기록한 기록매체 | |
US20090144533A1 (en) | Firmware exclusive access of a peripheral storage device | |
KR102149711B1 (ko) | 위장 프로세스를 이용한 랜섬웨어 행위 탐지 및 방지 장치, 이를 위한 방법 및 이 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체 |
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 |