當前位置:首頁 » 電腦資訊 » 系統休眠文件為什麼那麼大

系統休眠文件為什麼那麼大

發布時間: 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 12:28:43 瀏覽:878
為什麼找不到以前的群了 發布:2025-01-11 12:20:21 瀏覽:564
為什麼蘋果手機可以打開一直閃 發布:2025-01-11 12:10:25 瀏覽:354
為什麼剛打開微信總是自動退出 發布:2025-01-11 11:37:40 瀏覽:371
金毛為什麼眼睛是琥珀色 發布:2025-01-11 11:21:20 瀏覽:844
為什麼晚上越晚睡早上越睡不著 發布:2025-01-11 11:18:27 瀏覽:961
安裝文件為什麼要注冊 發布:2025-01-11 11:02:02 瀏覽:296
喝中葯為什麼眼睛會痛 發布:2025-01-11 10:46:45 瀏覽:520
蘋果手機微信為什麼老是重復提醒 發布:2025-01-11 10:32:18 瀏覽:452
蘋果手機開了飛行模式為什麼無服務 發布:2025-01-11 10:25:20 瀏覽:549