当前位置:首页 » 电脑资讯 » 系统休眠文件为什么那么大

系统休眠文件为什么那么大

发布时间: 2022-02-27 20:25:45

⑴ C盘里hiberfil.sys和pagefile.sys都是什么为什么占那么大的空间

1.首先,你要明白清理出来16G空间并非易事。安装Win8消费者预览版,仅需6.5G空间而已,Win8只占用5.9G左右。这里推荐VHD方式安装,随便选一个分区即可,不一定要在系统盘,安装Win8后可能需要重新激活Win7…
2.Hiberfile.sys是系统的休眠文件,其大小和你的内存大小有关,如果你的内存是4G,那其大小可能就是3G;该文件无法直接删除,除非你关闭系统休眠功能,如果确定不使用休眠功能,可以在开始菜单中输入cmd,在cmd上右击以管理员身份运行(Win7),在新打开的黑色窗口中输入Powercfg –h off,即可关闭休眠功能,休眠文件也就被删除了。反之,输入Powercfg -h on打开休眠。
3.pagefile.sys就是你的虚拟内存,也叫页面文件,如果你没有改变默认设置其大小会很大,如果你的内存是4G,可以关闭虚拟内存,系统也会反应的更快。部分软件可能必须打开虚拟内存,所以如果某个软件有影响,可能设置一个比较小的值,比如16-256。
4.可以使用360卫士,ToolWiz Care等第三方软件清理一下,会有点效果。
5.将你的用户文件夹内除桌面外其它文件夹的路径更改到非系统分区,提示移动文件时选择是。(如果更改桌面路径到D盘,将来D盘出问题无法读取,系统也会因为无法读取桌面文件夹而瘫痪)
6.如果你有下载软件、快播之类的,建议将其缓存和下载路径设到非系统分区,文件也清理、移动一下。
7。在Program Files文件夹属性中启用磁盘压缩,可减少空间占用,而且不会影响系统性能{nttwqz原创答案}。
8.将无关紧要的程序删除,特别是安装到系统盘的。也可以使用搬家的办法,例如,要将系统自带的Media Player播放器移动到D盘Program Files目录下,首先将C:\Program Files\下的Windows Media Player文件夹移动到D:\Program Files\下,然后以管理员身份打开cmd,输入mklink /j “C:\Program Files\ Windows Media Player” “D:\Program Files\ Windows Media Player”即可,这就把它搬到D盘了,开始菜单中的Windows Media Player图标照样可以正常使用。想恢复也很简单,把C:\Program Files\下的那个Windows Media Player快捷方式删除,把D盘的那个重新移动过来即可。
9.如果安装了Office 2010,C盘的那个MSOCache文件夹安装缓存,也可以删除。删除之后更改office功能需要安装盘。
10.%windir%\SoftwareDistribution\Download里面是自动更新下载的文件,更新之后可以删除。
11.现在,腾出来16G空间还是有可能的……

⑵ 系统休眠文件好大的文件啊,不知道这个文件能用来干嘛的能删除不

和内存一样,内存大,休眠文件就大。删除了系统就重启,休眠前没保存的文件会丢失,其他没什么损失。

⑶ 系统休眠文件是怎么回事啊

跟睡眠的功能差不多,还占磁盘,该删

你应该取消休眠了,才能删除的

如果不是的话那么容易就删除了确实不可思议

⑷ 为什么禁用了休眠Hiberfil.sys这个巨大的文件还在

在Windows Vista 禁用休眠

打开具有管理员权限的命令行窗口;
输入如下命令:
PowerCfg –h off

关闭命令行窗口,重启系统。
2.彻底删除休眠文件释放磁盘空间

最简单的办法,浏览至系统分区,找到”hiberfil.sys”文件——当然,该文件为“系统”、“隐藏”——直接将其删除也不是不行,不过,在某些情况下,这样操作可能存在一定的风险。

下面介绍更安全的办法:

依次点击“开始”“所有程序”“附件”“系统工具”“磁盘清理”;
选择操作对象为系统分区;
磁盘清理工具接下来将扫描硬盘,完成后将显示一系列的清理选项;
勾选其中的“休眠文件清理器”,然后点击确定;
如此,即安全地删除了休眠文件,为您的硬盘释放出一部分可用空间来。

⑸ Win10系统如何减小休眠文件大小

,,用系统管理员身份打开CMD窗口,如下输入命令行,即可修改休眠文件体积:

⑹ WIN7系统休眠导致C盘越大

休眠模式的原理:将内存中所有数据写入文件中进行保存,在启动时进行还原。自然而然也就会占用磁盘空间。

这就会导致C盘有一个hiberfil.sys的大文件,当然通过正常方式是没有办法删除的,会提示文件正在使用中。

⑺ 怎么内存变大后休眠文件也变大了

休眠文件一直都是2.89G。

⑻ 系统为什么这么大

1、休眠文件 hiberfil.sys :
该文件在C盘根目录为隐藏的系统文件,隐藏的这个hiberfil.sys文件大小正好和自己的物理内存是一致的,当你让电脑进入休眠状态时,Windows 7在关闭系统前将所有的内存内容写入Hiberfil.sys文件。而后,当你重新打开电脑,操作系统使用Hiberfil.sys把所有信息放回内存,电脑恢复到关闭前的状态。可Windows 7 并不会将这个文件删除,而是一直放在硬盘上,会白白地占用一部分磁盘空间。有了睡眠功能就可以了,休眠功能可以选择不要的,团队的人就统统关闭了这个硬盘大户。又占空间,又要频繁读写硬盘。刺客的t61就这么一下多了4个G的空间。
Windows 7下面安全删除休眠文件的方法一:用管理员身份运行cmd.exe 打开命令行窗口,然后运行:powercfg -h off,注意,C盘残留的hiberfil.sys隐藏文件可以取消隐藏后,直接删除。
2、虚拟内存 pagefile.sys:
Windows 系统,包括Windows 7 ,默认设置物理内存的1.5倍大小,作为分页交换文件,如果你是系统管理的大小,那么,这个体积是自动变化的,往往越来越大。如果你的物理内存比较少,只有512m或者1g,你可以选择保留这个文件。
如果保留这个文件,我们建议你把他放到另外一个分区里面,不和C盘(系统盘)放到一起,不然,你到时候做Ghost或者其他备份的时候,还是需要手动删除它。建议你一定要指定大小,就指定成1.5倍的Ram物理内存大小即可。
如果你的内存在2G以上,我们建议你直接关闭虚拟内存功能,你会发现,你的整个Windows系统都“飞”了起来。
设置虚拟内存的方法:控制面板 - 经典视图里面点击系统,点击左侧高级系统设置,点击第一个设置(性能),再点击高级,在虚拟内存那儿,点击设置。注意,C盘残留的pagefile.sys隐藏文件可以取消隐藏后,直接删除。

⑼ 我电脑物理内存写的是2G,但是系统休眠文件却只有1.48G,这是为什么

更全面的回答 求采纳

发这份笔记时,比较惶恐,因为连我自己都觉得,这个东西没用。但是事实上,在很多偏门或机密的领域里,它仍然是非常有价值的。鉴于国内这方面资料比较少,所以写了一篇笔记,与大家共享。

Analyze Hibernation File

Introction
What’s Hibernation File?
Hibernation File也就是系统的休眠文件Hiberfil.sys,位于系统卷的根目录下。windows在系统休眠时,将物理内存中的数据(包括系统运行时的状态数据)mp到Hiberfil.sys,并生成一个有效的文件头。下次系统开机的时候,利用hiberfil.sys文件中的数据恢复系统。

How to generate a valid Hiberfil.sys?
从用户的角度来说,系统停机时,按下休眠按钮,则会自动生成一个有效的Hiberfil.sys。
从电源管理器的角度来说,只有当系统电源状态从S0àS4的时候,才会生成一个有效的休眠文件。
注:当系统正常运行时,电源状态为S0;完全关闭时,电源状态S5;休眠状态时,电源状态S4,此时只有电源电路和唤醒电路才有点滴电流;中间的几个状态S1,S2,S3,都是不同程度的睡眠状态。
从S4àS0的过程,也就是利用Hiberfil.sys恢复系统的过程。

Valuation of Hibernation File
It is quick and easy
恢复系统比重启系统要快。不解释(除特殊情况)。
A new method to mp physical memory
利用hibernation技术mp系统物理内存中的数据。这些数据包括处理器状态,当前EIP, IDT table, GDT table, SSDT table,当前状态的可执行代码和数据…
利用这些数据可以分析系统状态。

Leak Information?
Yes。正常情况下,利用Hiberfil.sys恢复系统,虽然恢复后会清除掉Hiberfil的Header数据(one page),使之无效,但是Header之后的数据还会保留。利用外部工具,构造一个Header,就可以读取该Hiberfil.sys的所有信息了。

Defensive uses
kernel –land malwares detection
分析hibernation file, 可以通过检查SSDT, IDT, GDT表的完整性来判断系统是否被修改。虽然在内核层有了更为轻量级的方法去检测系统关键表的完整性,但是存在anti对抗问题,hibernation提供了一种终极检测方式。
根据hibernation恢复原理,不在hibernation file中的代码,将不会被恢复执行。基于此,可以对抗SMM rootkit。(不做介绍)
Offensive uses
可以获取敏感数据,如:password, keys.
修改hibernation file, 提高某个进程的执行权限;绕过系统登录密码…

Hibernation file internals
Headline of hibernation process
当磁盘被挂起时(S0àS4),Windows内核(ntoskrnl.exe)执行体创建一个hibernation file,并将物理内存中的数据用LZ77算法压缩后,写入文件。
系统恢复时(S4àS0),OSLoader.exe读取hibernation file,加载解压后的数据到物理内存中,使系统以一种快捷方式恢复到休眠时的状态。
注:恢复过程的分析,见appendix 1。

Hibernation file structure
先直观的看下文件结构图:(左侧,域列表,是文件结构的组成域)

format.jpg下载此附件需要消耗2Kx,下载中会自动扣除。

File Header
位于休眠文件的第一页(0x1000 bytes)数据空间。该结构PO_MEMORY_IMAGE由内核调试符号导出。结构中主要包含了休眠文件的创建日期,版本号,校验和,有效标志,物理页数量等信息。
注:用休眠文件恢复系统时,只有第一页数据被清0,也就是file header,其他数据保留不变。

FreeMap Page
包含一个ulong数组,保存了空闲内存页的映射信息。

Processor State
处理器状态,由内核函数KiSaveProcessorControlState保存。包括控制寄存器CRX,GDT, IDT, EIP…
结构定义如下:
typedef struct _KPROCESSOR_STATE32
{
CONTEXT ContextFrame; //
KSPECIAL_REGISTERS SpecialRegisters; //
} KPROCESSOR_STATE32, *PKPROCESSOR_STATE32;

注:从vista版本以后,字段2和3的位置就交换过来了。

Memory Range Array
存储物理内存页的压缩数据。
typedef struct _MEMORY_RANGE_ARRAY
{
MEMORY_RANGE_ARRAY_LINK MemArrayLink;
MEMORY_RANGE_ARRAY_RANGE MemArrayRange[MAX_ARRAY_ENTRY];
} MEMORY_RANGE_ARRAY, *PMEMORY_RANGE_ARRAY;

字段MemArrayLink作为链接表指针,将多个这样的结构链接维护起来;
字段MemArrayRange指向数据区,最多包含255个入口。这也就是为什么要存在一个指向下一个MEMORY_RANGE_ARRAY结构的指针MemArrayLink,因为当休眠文件很大的时候,一个MEMORY_RANGE_ARRAY存储不了所有数据。

结构MEMORY_RANGE_ARRAY_RANGE定义如下:

typedef struct _MEMORY_RANGE_ARRAY_RANGE
{
ULONG PageNo; // ???
ULONG StartPage; // Block start (physical address)
ULONG EndPage; // Block stop (physical address)
ULONG CheckSum; // Always zero, but used under Windows 2000.
} MEMORY_RANGE_ARRAY_RANGE, *PMEMORY_RANGE_ARRAY_RANGE;
指定了页开始地址和页结束地址,在这些地址范围内的数据都是经过压缩算法来压缩后存储的,这个结构所对应的整块数据就是一个压缩块PageCompressedData,压缩快的起始部分是一个结构体,如下:
struct IMAGE_XPRESS_HEADER
{
CHAR Signature[8] = 81h, 81h, "xpress";
BYTE UncompressedPages = 15;
UINT32 CompressedSize;
BYTE Reserved[19] = 0;
};
也就是说,压缩块的标识是:\x81\x81xpress;之后就是压缩数据了。

注:每个压缩快所对应的解压后的块大小为64KB(0x10 pages)。
compression algorithm
This algorithm has been publicly documented since recent Microsoft Interoperability initiative (February 2008)
压缩块算法使用LZ77+DIRECT2;
LZ77用于压缩内存数据,DIRECT2对字节的位置进行编码和解码。

Project and Application
Sandman Project
该开源项目的主要特点是定义了休眠文件的文件结构,并给出了解析休眠文件的代码。
不过,这份代码中存在问题。在虚拟地址转换成物理地址时,作者将页面映射的PAE部分解析错了。
如果开启了PAE页面映射机制(实事上,几乎所有多核计算机都开启了PAE),那么MMU将会用三级表来实现地址转译,分别是:页目录指针表,页目录索引,页表索引,页字节偏移,其中前三项都是8字节长,而作者解析时将其作为4字节处理了。
具体改法:在mm.c文件à MmGetPhysicalAddress函数中,将处理PAE的偏移,改为8;

注:4KB分页时,地址转译只需二级表,页目录索引,页表索引,每项4字节长。

Tiamo NTLDR Project
作者Tiamo基本实现了一个完整的NTLDR,可以替换系统NTLDR,主要包括了利用休眠文件hiberfil.sys恢复系统的C++实现。不过我没有测试过可行性。
项目包括两部分:
16位实模式代码;
32位模式代码,即OsLoader.exe,是windows真正的32位入口程序。作者这部分代码参考了NT4代码,但是NT4代码中并没有实现恢复hiberfil的代码,估计作者是通过逆向写的。

Useful application
利用Sandman,开发了若干免费小工具,一般开发人员用不上。
可访问:http://www.moonsols.com

解析hiberfil.sys,获取系统版本号,休眠文件的创建时间,从休眠文件mp物理内存内容(见附件)。

ANTI SMM Rootkit应用;

其他方面,取证分析,以及未知的应用…

APPENDIX
简述用休眠文件恢复系统的过程

开机过程中,BIOS代码首先获得控制权,执行完硬件检测后跳转到MBR,MBR代码部分主要读取分区表信息,然后将控制权交给系统卷的引导扇区DBR,DBR执行一些初始化后,读取文件NTLDR,NTLDR中的16位模式代码开始执行,同样进行一些必要的初始化工作,然后将处理器切换到32位保护模式。
控制权交给osloader.exe, 此时处理器虽然已经工作在保护模式下,但是它的虚拟地址转译机制尚未开启,所以,处理器仍然直接使用物理地址。
Osloader 在入口函数NtProcessStartup里,调用全局初始化内存函数:
DoGlobalInitialization()-> InitializeMemorySubsystem() ->
实现的功能是: 用一个内存描述符数组把每一段内存的大小和用途记录下来,然后构造页目录和页表,使得16M一下的内存能够通过页面映射(paging)机制进行访问,在loader阶段是不使用高于16M以上的物理内存的,在设置好页目录寄存器,并打开页面映射机制。
之后,osloader 继续执行其他的初始化工作,包括IO设备的初始化。
分配PCR的页面-> 分配TSS的页面-> 初始化内存描述符-> 初始化IO系统BlIoInitialize。

接下来判断控制启动的方式。
函数:BlStartup(BootPartitionName);
过程大概这样:打开启动分区,以便加载驱动;初始化屏幕; 读取hiberfil.sys,如果是一个有效的休眠文件,则系统以hiberfil.sys方式恢复系统。如果不是,打开boot.ini文件,并显示一个引导选择菜单。如果boot.ini只包含一个引导选项,那么,此菜单不显示,而是立即应用该引导选项。

如果检测到hiberfil.sys有效,osloader将控制权交给一段能恢复系统的代码。大致流程如下:
打开hiberfil,不成功则返回-->成功则继续恢复 --> 分配页面缓冲-->解析头文件,判断image signature,有三种标志,分别处理,如果判断标志出错,就直接返回-->进行一些其他的校验工作->接下来分配PTE,读取内存映射页面的数据-> 分配压缩数据的缓冲->解压缩数据到物理内存—> 再经过一系列的恢复工作-> 读取处理器的状态......

通过NT4代码,分析NTLDR的工作流
boot/bootcode/mbr/i386/x86mboot.asm ->
这里执行MBR引导代码,读取分区表,获得引导分区,将引导分区的第一个扇区,即DBR读入到内存,然后将EIP调到DBR引导代码,执行。
boot/bootcode/ntfs/i386/ntfsboot.asm ->
该函数主要用来读取卷上的数据,主要是将ntldr读入到内存,然后执行。(卷上的数据是根据文件系统格式存储和管理的,所以访问卷上的文件内容,需借助文件系统代码去读。)到目前为止,程序还是在实模式下,即16-bit模式。
boot/startup/i386/su.asm ->
直接跳到 JMP RealStart,准备stack和segment,然后去执行suMain函数,该函数位于:
boot/startup/i386/main.c ->
来到了C代码。这里实现一些初始化,包括video ,memory,foppy等。之后在回到su.asm,进行模式切换,至32-bit;
boot/lib/i386/entry.c ->
入口函数NtProcessStartup,这里,进行一些初始化,调用DoGlobalInitialization 初始化16M以下的内存,分页机制开始启动。又进行了一些system memory和I/O system的初始化工作后,理解调用BlStartup函数,也就是说ntldr在BlStartup函数中执行完毕后,就返回了。该函数在:
boot/bldr/i386/initx86.c ->
这个函数打开boot.ini,获取启动选项,继续调用osloader.c;
\boot\bldr\osloader.c

注:NT4不支持hiberfil休眠机制,在XP以后的系统中,恢复hiberfil的过程在 BlStartup过程中被调用。

通过逆向分析NTLDR,分析hibernation file
这里只说下分析方法,省去细节。
恢复Hiberfil的工作是由osloader完成的,所以,通过逆向分析osloader.exe,可以了解恢复hiberfil的一些具体细节。

NTLDR位于系统盘根目录下,是一个具有隐藏只读属性的binary系统文件,不能直接使用IDA进行分析。
NTLDR由两个image组成,一个是16-bit下的binary image,就像是一个.com 文件;另一个是32-bit 下的PE file image,主要包含加载任务,这个PE image对应的文件就是osloader.exe。

提取osloader.exe的方法
用一个16进制编辑器(e.g. WinHex),打开NTLDR, 查找'MZ'或'PE'标志,然后从'MZ'标志开始,将剩下的hex data全部复制并粘贴到另外一个空文件,重命名为:osloader.exe。用winhex的话,会很简单(找到'MZ'标志,ALT+1,然后拖到文件末尾,ALT+2,这样就选中的从'MZ'到文件末尾的区块,然后右键'edit'->' block'->'into a new file')。
提取出osloader之后,用IDA加载,加载的时候会提示从MS官方下载'未公开'的符号,选择YES或NO,等待分析,可能要花2分钟左右时间。

分析osloader.exe文件
常理来说,osloader应该是一个native app,其入口函数是:NtProcessStartup。但是IDA分析后,入口函数为DriverEntry,当成驱动程序来分析了。但是,事实上,native app本质上就是一个驱动。
接下来就是利用各种资源,找自己关注的代码区分析了。

热点内容
为什么苹果云存储不了歌曲 发布:2025-01-11 09:43:12 浏览:274
为什么安装cad要关闭杀毒软件 发布:2025-01-11 09:41:50 浏览:203
话费慢充为什么到账时间不一样 发布:2025-01-11 09:40:09 浏览:71
为什么华硕的电脑发烫很严重 发布:2025-01-11 09:28:41 浏览:180
为什么电脑触摸板不灵了 发布:2025-01-11 09:27:00 浏览:809
绿米智能开关为什么比小米的贵 发布:2025-01-11 09:21:28 浏览:937
太帅为什么找不到女朋友 发布:2025-01-11 09:07:44 浏览:864
为什么狗会对着一样东西一直叫 发布:2025-01-11 09:06:10 浏览:444
为什么晚上睡觉总觉得不对头 发布:2025-01-11 09:02:05 浏览:372
电脑为什么重新插电源就能开机 发布:2025-01-11 08:36:14 浏览:645