hiberfil.sys 和 pagefile.sys 可能大家并不陌生,就是正常系统都有的那两个和内存等大的隐藏文件。
删除他们,可能你用上最牛逼的删除工具也未必成功,但是呢,系统的一条命令竟然能够删除 "powercfg -f off" ,真是神奇。
然后呢,我偷偷的放下了手上答应老板说三星期交货的网站(哎当时就不该说大话的,玩耍的时间都没了),冒着完不成工作的风险来分析一下这个神奇的命令做了些啥。
先上我们的分析好手,Process Monitor
可以看到这个命令执行了之后,做了两件事,一件事是解除文件句柄,再是修改了注册表的值。所以能够看出修改注册表的值和删除文件之间没有直接的关系。
打开看解除文件句柄的调用栈,其实并没有什么ruan用,不过可以了解一下内核流程,其中有部分的native api还是能够借鉴的。
这个是改写的注册表地址,如果只是想要单纯的禁用和启用休眠操作这里就应该是可以了。
上调试器,对一些可能会用到的API下断。还好程序比较小,其实这些被我下断的API完全都没有用到(全靠耐心,详见后面内容)
找到了关键的一个API调用,执行完了这个API之后 hiberfil.sys 文件会被删除掉。
然后我们百度一下这个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,那是相当的好用。
程序的运行效果如图(WinXP、Win7 已测),源码以上传附件。至于能做什么?发挥下想象如果 hiberfil.sys 和 pagefile.sys 都能删掉,那么还有什么东西删不了的!
完了我要继续苦逼的做网站了
补充:
找到了个更全的API说明 https://docs.microsoft.com/zh-cn/windows/desktop/api/powerbase/nf-powerbase-callntpowerinformation
NtPowerInformation(Ntdll.dll引出) 这个API的上层是 CallNtPowerInformation(PowrProf.dll引出),但参数基本一致
POWER_INFORMATION_LEVE 参数说明
del_hiberfil.zip
1.22 KB, 下载次数: 71, 下载积分: 吾爱币 -1 CB
删除 hiberfil.sys 源码
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |