吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 20105|回复: 44
收起左侧

[系统底层] 如何删除 hiberfil.sys 及原理剖析(有源码)

  [复制链接]
JuncoJet 发表于 2019-1-10 17:21
本帖最后由 JuncoJet 于 2019-1-11 11:27 编辑

hiberfil.sys 和 pagefile.sys 可能大家并不陌生,就是正常系统都有的那两个和内存等大的隐藏文件。
删除他们,可能你用上最牛逼的删除工具也未必成功,但是呢,系统的一条命令竟然能够删除 "powercfg -f off" ,真是神奇。
然后呢,我偷偷的放下了手上答应老板说三星期交货的网站(哎当时就不该说大话的,玩耍的时间都没了),冒着完不成工作的风险来分析一下这个神奇的命令做了些啥。

先上我们的分析好手,Process Monitor
Image 304.jpg
可以看到这个命令执行了之后,做了两件事,一件事是解除文件句柄,再是修改了注册表的值。所以能够看出修改注册表的值和删除文件之间没有直接的关系。

打开看解除文件句柄的调用栈,其实并没有什么ruan用,不过可以了解一下内核流程,其中有部分的native api还是能够借鉴的。
Image 305.jpg

这个是改写的注册表地址,如果只是想要单纯的禁用和启用休眠操作这里就应该是可以了。
Image 308.jpg

上调试器,对一些可能会用到的API下断。还好程序比较小,其实这些被我下断的API完全都没有用到(全靠耐心,详见后面内容)
Image 306.jpg

找到了关键的一个API调用,执行完了这个API之后 hiberfil.sys 文件会被删除掉。
Image 309.jpg

Image 310.jpg

然后我们百度一下这个API的原型,因为OllyICE没法显示,这些native api只能暴力搜索
https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/wdm/nf-wdm-ntpowerinformationAPI官方说明

API原型(黄色的是平台特有的宏,一开始以为是结构,仔细研究下貌似并不是)
__kernel_entry NTSYSCALLAPI NTSTATUS NtPowerInformation(
    POWER_INFORMATION_LEVEL  InformationLevel,
    PVOID                      InputBuffer,
    ULONG                     InputBufferLength,
    PVOID                     OutputBuffer,
    ULONG                     OutputBufferLength
);

完整的调用大致是这样
char buff[]={0};
NtPowerInformation((POWER_INFORMATION_LEVE)0xA,buff,sizeof(buff),(PVOID)0,0);

因为OllyICE只是个Ring3调试器,所以大致只能分析到这,在进去跳入内核必须要内核调试器才能分析。
然后我们写个程序来验证一下我们这个分析和猜测,
其实这个提权部分,还是走了不少弯路的,然后想起了当年写过的一个VB的秒关程序。里面有个未公开的提权API,那是相当的好用。
TIM截图20190110171215.jpg

程序的运行效果如图(WinXP、Win7 已测),源码以上传附件。至于能做什么?发挥下想象如果 hiberfil.sys 和 pagefile.sys 都能删掉,那么还有什么东西删不了的!
del_hiberfil.gif

完了我要继续苦逼的做网站了

补充:
找到了个更全的API说明 https://docs.microsoft.com/zh-cn/windows/desktop/api/powerbase/nf-powerbase-callntpowerinformation

NtPowerInformation(Ntdll.dll引出) 这个API的上层是 CallNtPowerInformation(PowrProf.dll引出),但参数基本一致
TIM截图20190111112731.jpg
POWER_INFORMATION_LEVE 参数说明

del_hiberfil.zip

1.22 KB, 下载次数: 115, 下载积分: 吾爱币 -1 CB

删除 hiberfil.sys 源码

免费评分

参与人数 10威望 +1 吾爱币 +16 热心值 +9 收起 理由
L4Nce + 1 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
遥望流年 + 1 + 1 谢谢@Thanks!
深蓝浅蓝 + 1 + 1 谢谢@Thanks!
xq8751 + 1 + 1 谢谢@Thanks!
rty600 + 1 + 1 谢谢@Thanks!
ytfrdfiw + 1 + 1 谢谢@Thanks!
Perry + 1 新技能get
yixi + 1 + 1 谢谢@Thanks!
wazt + 1 + 1 谢谢@Thanks!
HxiaoH + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

爱飞的猫 发表于 2019-1-10 22:57
hiberfil.sys 是休眠文件,关掉他就不能休眠了。
pagefile.sys 是页面文件,内存不足的时候就“暂时”将优先级低(一般是后台程序)的内存切换到这里,空出来的内存给现在有需要的程序用。

一般使用可以留着,没必要清理。
Bakura 发表于 2019-1-10 19:20
是powercfg -h off,关掉休眠和虚拟内存这两个都会消失的。
gunxsword 发表于 2019-1-11 19:52
powercfg -h off 休眠的那个文件,执行这个命令,关闭,就自动删除了,虚拟内存的,肯定要留着啊,不能删啊,如果觉得占的多,可以手动设置大小!

至于这个提权的方法,有空可以试试
 楼主| JuncoJet 发表于 2019-1-10 17:21
编译附件的源码需要nasmx编译器
dazhidf 发表于 2019-1-10 17:56 来自手机
厉害了,支持技术贴
wazt 发表于 2019-1-10 18:11
大牛的这波操作非常6,学习了
虚无空幻 发表于 2019-1-10 18:19
确定试了正在执行的文件和独占模式打开的文件都能删除掉?
诗雨晴天 发表于 2019-1-10 18:42
厉害了,大佬
双棍劫 发表于 2019-1-10 19:14
感谢分享
罗茂松 发表于 2019-1-10 19:21
这个有点意思,看看
yhzh 发表于 2019-1-10 20:23
感谢分享。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 13:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表