青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

S.l.e!ep.¢%

像打了激速一樣,以四倍的速度運轉,開心的工作
簡單、開放、平等的公司文化;尊重個性、自由與個人價值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

The Fast Way to ShutDown the computer

Posted on 2009-11-04 22:02 S.l.e!ep.¢% 閱讀(332) 評論(0)  編輯 收藏 引用 所屬分類: RootKit

Demo_Executable

?

Introduction

Sometimes an application just needs to quickly shutdown Windows. Unfortunately, there is no well-documented method to do this, and Microsoft does not support it. In fact, neither do I. However, I am presenting two methods to do so just as a mere idea.

Disclaimer: I am not responsible for any unwanted behavior of this program. If your computer doesn't start up again afterwards, it is not my fault. The program is presented merely as a "proof of concept".

Background

Many of the Nt/Zw functions inside the Windows kernel are documented, but some are not. The NtShutdownSystem function is documented pretty well here at NTInternals. The NtSetSystemPowerState function, however, is not.

At the final stages of the Windows shutdown process, NtShutdownSystem is called. It is responsible for shutting down all drivers, flushing Registry hives and the disc cache, clearing the page file, etc. After doing so, it calls the NtSetSystemPowerState function.

NtSetSystemPowerState then causes all plug-and-play devices to be shut down and the system to be either halted, powered off, or rebooted.

However, calling these two functions without notifying the system first is extremely dangerous, and may cause instability in the system.

Using the code

Both NtShutdownSystem and NtSetSystemPowerState are inside NTDLL.DLL, which is why we have to load it first. We also have to enable the SE_SHUTDOWN_NAME privilege in order to call it:

Collapse Copy Code
OpenProcessToken(GetCurrentProcess(),TOKEN_QUERY|TOKEN_ADJUST_PRIVILEGES, &hToken);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0);
CloseHandle(hToken); 

hNTDLL = LoadLibrary("NTDLL.DLL");

After doing so, we obtain the functions:

Collapse Copy Code
				typedef DWORD (WINAPI* lpNtShutdownSystem)(SHUTDOWN_ACTION Action);
lpNtShutdownSystem NtShutdownSystem = 
   (lpNtShutdownSystem)GetProcAddress(hNTDLL, "NtShutdownSystem");

typedef DWORD (WINAPI* lpNtSetSystemPowerState)(
IN POWER_ACTION SystemAction,IN SYSTEM_POWER_STATE MinSystemState,IN ULONG Flags);
lpNtSetSystemPowerState NtSetSystemPowerState =
   (lpNtSetSystemPowerState)GetProcAddress(hNTDLL, "NtSetSystemPowerState");

As the typedefs show, NtShutdownSystem requires a SHUTDOWN_ACTION parameter, which is documented here. The three options, ShutdownNoReboot, ShutdownReboot, and ShutdownPowerOff are self-explanatory.

NtSetSystemPowerState is a bit more complicated. Microsoft makes it a bit easier for us by documenting all three parameters. The first two, POWER_ACTION and SYSTEM_POWER_STATE, are documented well. The third, flags, is simply the reason for shutdown, which is also documented here on MSDN.

Calling the actual functions is rather simple:

Collapse Copy Code
				void CEmergency_ShutdownDlg::OnShutdown() 
{
    if (NtShutdownSystem)
    {
        DWORD returnval = NtShutdownSystem(ShutdownPowerOff);
        if (returnval != 0) FormatNtMessage(returnval);
    }
}

void CEmergency_ShutdownDlg::OnPowerdown() 
{
    if (NtSetSystemPowerState)
    {
        DWORD returnval = NtSetSystemPowerState(
            PowerActionShutdownOff,
            PowerSystemShutdown,
            SHTDN_REASON_MAJOR_OTHER | 
                       SHTDN_REASON_MINOR_OTHER | 
                       SHTDN_REASON_FLAG_PLANNED
            );
        if (returnval != 0) FormatNtMessage(returnval);
    }
}

FormatNtMessage is simply a specialized function to display an error, given an NTSTATUS error code. It uses the FormatMessage function.

Points of interest

Only one point of interest: save all un-saved work before executing any one of the functions, or else it'd be rather interesting what happens to them.

History

I probably won't be updating this, unless there is a critical flaw anywhere in the code.

  • v1.0 - March 16, 2009.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

hxhl95


Member
A random 14 year old guy in Vancouver with an avid interest in how Windows works. Started coding a few years ago, beginning with a bit of game design using GDI+ and some Windows programming. Recently moved onto messing with the Windows kernel and hoping to get into algorithm design soon.

http://xkcd.com/424/
Location: Canada Canada

Other popular Win32/64 SDK & OS articles:

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            99精品欧美一区二区蜜桃免费| 亚洲一区二区黄色| 久久午夜国产精品| 久久免费视频观看| 亚洲人成在线免费观看| 亚洲欧洲精品天堂一级| 欧美刺激午夜性久久久久久久| 亚洲黄色av| 日韩视频精品在线观看| 国产精品美女一区二区| 久久精品视频99| 久久综合国产精品台湾中文娱乐网 | 亚洲欧洲日本mm| 日韩午夜视频在线观看| 国产热re99久久6国产精品| 久久综合影视| 欧美日韩国产成人| 久久久久国产一区二区三区四区 | 9人人澡人人爽人人精品| 国产精品日韩二区| 欧美电影电视剧在线观看| 欧美日韩一区二| 久久大香伊蕉在人线观看热2| 另类天堂视频在线观看| 亚洲一区在线视频| 久久久噜噜噜久噜久久| 亚洲影院免费观看| 久久久久久久高潮| 亚洲在线中文字幕| 米奇777在线欧美播放| 亚洲欧美日韩国产综合在线| 久久蜜桃精品| 欧美一区二区三区婷婷月色| 欧美aⅴ一区二区三区视频| 欧美一级视频免费在线观看| 欧美二区不卡| 麻豆成人在线| 国产免费成人在线视频| 亚洲欧洲在线视频| …久久精品99久久香蕉国产| 亚洲一区二区三区在线播放| 99精品国产在热久久下载| 久久精品国产2020观看福利| 亚洲在线免费观看| 欧美久久视频| 欧美国产高清| 亚洲第一色中文字幕| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 亚洲日本免费| 在线播放一区| 欧美中文在线观看国产| 午夜免费电影一区在线观看| 欧美日韩第一页| 亚洲国产成人精品久久久国产成人一区| 国产日韩欧美在线一区| 亚洲无限av看| 午夜国产精品视频免费体验区| 欧美精品1区2区| 亚洲人成欧美中文字幕| 亚洲日本欧美天堂| 欧美jizzhd精品欧美巨大免费| 久久亚洲私人国产精品va媚药 | 老鸭窝毛片一区二区三区| 久久久久91| 尤妮丝一区二区裸体视频| 久久久7777| 免费成人av| 亚洲黄色成人久久久| 免费成人小视频| 亚洲第一精品在线| 日韩亚洲精品视频| 欧美日韩国产一区二区| 99精品国产热久久91蜜凸| 亚洲免费视频观看| 国产片一区二区| 久久精品国产一区二区电影| 奶水喷射视频一区| 亚洲欧洲精品一区二区| 欧美日韩国产不卡在线看| 一区二区三区四区五区在线| 欧美一区二区日韩一区二区| 国产主播一区二区三区| 噜噜噜在线观看免费视频日韩| 欧美护士18xxxxhd| 亚洲无线视频| 国产一区二区三区久久久久久久久 | 亚洲国产日韩欧美综合久久| 亚洲免费av电影| 国产精品捆绑调教| 欧美在线看片a免费观看| 欧美激情一区在线| 亚洲欧美日韩国产精品| 国产精品无码专区在线观看| 久久久久网址| 在线亚洲自拍| 美女精品网站| 亚洲香蕉在线观看| 国内伊人久久久久久网站视频| 免费观看成人鲁鲁鲁鲁鲁视频 | 欧美jizzhd精品欧美喷水| 日韩亚洲视频| 国产三级欧美三级| 欧美激情网友自拍| 欧美在线免费视频| 日韩视频中午一区| 免费高清在线一区| 亚洲男人的天堂在线| 亚洲国产精品日韩| 国产欧美日韩不卡免费| 欧美激情视频在线播放 | 亚洲国产高清一区| 久久精品视频免费播放| 99综合视频| 在线日韩中文字幕| 国产亚洲制服色| 欧美日韩中文字幕综合视频| 久久天天躁狠狠躁夜夜av| 亚洲综合不卡| 99国产精品久久久久久久久久| 美女啪啪无遮挡免费久久网站| 亚洲欧美制服中文字幕| 日韩午夜激情av| 亚洲国产精品福利| 国产在线观看一区| 国产精品亚洲第一区在线暖暖韩国| 欧美国产三区| 另类春色校园亚洲| 久久久精品一品道一区| 亚洲欧美日韩另类| 亚洲网站在线| 中国亚洲黄色| 一区二区福利| 一区二区三区四区国产精品| 亚洲激情另类| 亚洲精品韩国| 日韩视频一区二区| 亚洲人成小说网站色在线| 亚洲国产成人av在线| 亚洲电影av在线| 亚洲福利视频网| 亚洲第一区在线| 亚洲国产美女久久久久| 亚洲国产精品免费| 亚洲激情网站| 日韩一级视频免费观看在线| 亚洲精品少妇| 一区二区三区色| 亚洲免费视频网站| 午夜免费日韩视频| 久久久久国产精品人| 久久乐国产精品| 欧美国产日韩免费| 欧美日韩另类国产亚洲欧美一级| 欧美日韩一区二区在线| 国产精品高潮粉嫩av| 国产丝袜一区二区| 伊人久久久大香线蕉综合直播 | 国产欧美日韩精品丝袜高跟鞋 | 男女视频一区二区| 欧美日韩成人综合| 国产精品一区二区在线观看不卡| 国产欧美日韩在线视频| 国内精品久久久久久久97牛牛| 一区二区三区在线观看欧美| 亚洲精品视频一区| 亚洲欧洲av一区二区三区久久| 欧美一级二区| 欧美高清成人| 亚洲视频一区在线观看| 久久av一区二区三区| 欧美成年人网| 国产精品一区二区三区免费观看| 国产亚洲精品高潮| 亚洲免费黄色| 欧美在线日韩精品| 欧美.日韩.国产.一区.二区| 一片黄亚洲嫩模| 久久精品一区二区国产| 欧美日韩国产精品自在自线| 国产亚洲欧美一级| 一本色道久久88精品综合| 久久国产精品毛片| 亚洲精品在线观| 久久久午夜电影| 国产精品av一区二区| 亚洲韩日在线| 久久久久久穴| 99pao成人国产永久免费视频| 久久成人免费| 国产精品美女久久久久久2018| 在线国产日韩| 欧美制服丝袜第一页| 亚洲美女少妇无套啪啪呻吟| 久久三级视频| 国产精品丝袜久久久久久app| 亚洲美女福利视频网站| 蜜桃av久久久亚洲精品| 午夜精品久久久久久久99黑人| 欧美日韩国产一区二区三区地区 | 国产日韩精品在线观看|