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

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.¢% 閱讀(333) 評論(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>
            在线观看日韩av电影| 欧美超级免费视 在线| 久久综合亚州| 亚洲专区欧美专区| 久久夜色撩人精品| 久久久久九九九九| 欧美视频一区二区三区…| 麻豆精品视频| 国产一区二区在线观看免费播放| 亚洲精品国产精品国自产在线| 国产精品五区| 一区二区三区产品免费精品久久75| 国内外成人在线视频| 亚洲永久视频| 亚洲天堂av在线免费观看| 免费观看久久久4p| 久久精品综合网| 国产偷国产偷亚洲高清97cao | 欧美www视频在线观看| 国产精品婷婷午夜在线观看| 99精品视频网| 一区二区三区视频在线播放| 欧美激情精品久久久久| 亚洲福利小视频| 亚洲茄子视频| 欧美精品综合| 日韩视频一区二区在线观看 | 国精品一区二区| 午夜一级久久| 久久久国产精品亚洲一区| 国产视频一区三区| 久久久7777| 女同性一区二区三区人了人一| 在线精品福利| 老**午夜毛片一区二区三区| 欧美jizzhd精品欧美巨大免费| 在线日韩精品视频| 男女视频一区二区| 亚洲日本中文| 午夜亚洲视频| 国语精品中文字幕| 老司机一区二区三区| 亚洲国产成人tv| 亚洲视频高清| 国产视频一区在线| 久久综合九色九九| 亚洲人成啪啪网站| 午夜在线不卡| 亚洲电影免费| 欧美三级网址| 久久久久久亚洲精品不卡4k岛国| 欧美大片免费久久精品三p | 亚洲国产91精品在线观看| 欧美福利网址| 亚洲一本大道在线| 免费不卡中文字幕视频| 艳女tv在线观看国产一区| 国产精品久久一区主播| 久久精品官网| 91久久精品一区| 欧美伊人久久久久久午夜久久久久| 韩国三级在线一区| 欧美剧在线免费观看网站| 亚洲综合视频1区| 亚洲电影一级黄| 久久不射网站| 亚洲人体偷拍| 国产午夜精品美女毛片视频| 欧美大尺度在线| 午夜影视日本亚洲欧洲精品| 亚洲黄色天堂| 久久久噜噜噜久久中文字幕色伊伊 | 欧美一乱一性一交一视频| 亚洲国产人成综合网站| 国产精品蜜臀在线观看| 蜜臀va亚洲va欧美va天堂| 亚洲一二区在线| 亚洲人线精品午夜| 老司机午夜免费精品视频| 亚洲视频综合| 亚洲精品免费网站| 国产一区再线| 国产精品一区免费在线观看| 欧美精品一区三区| 久久全国免费视频| 欧美在线综合视频| 亚洲免费在线播放| 日韩亚洲综合在线| 亚洲欧洲视频| 欧美黄污视频| 欧美v国产在线一区二区三区| 欧美亚洲免费在线| 亚洲综合精品四区| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美激情久久久久久| 久久精品91久久久久久再现| 一区二区三区四区五区视频| 亚洲国产美女| 亚洲第一毛片| 黄色成人小视频| 国产综合婷婷| 国产亚洲一区二区在线观看| 国产精品一区免费视频| 国产精品三级久久久久久电影| 欧美劲爆第一页| 欧美成年人网| 欧美国产日韩二区| 欧美黄网免费在线观看| 欧美国产视频在线| 欧美精品在线观看91| 欧美精品在线免费| 欧美精品一级| 欧美日韩一区在线观看视频| 欧美高清自拍一区| 欧美久久视频| 欧美午夜激情小视频| 国产精品嫩草99a| 国产精品欧美日韩一区二区| 欧美午夜视频网站| 国产精品三级视频| 国产一区视频在线看| 狠狠久久婷婷| 亚洲国产视频直播| 日韩视频免费观看高清在线视频 | 久久精品视频在线| 久久人人爽人人爽| 蜜桃av综合| 亚洲韩国日本中文字幕| 亚洲伦理中文字幕| 亚洲一区二区三区777| 欧美一区二区三区免费在线看| 久久aⅴ国产欧美74aaa| 久热精品在线视频| 欧美日韩国产黄| 国产精品午夜春色av| 136国产福利精品导航网址应用| 亚洲第一黄网| 国产精品99久久99久久久二8| 亚洲欧美视频在线观看| 久久免费黄色| 亚洲人精品午夜| 性xx色xx综合久久久xx| 蜜臀久久99精品久久久画质超高清| 欧美久久电影| 韩国一区电影| 亚洲手机在线| 久久男女视频| 99视频有精品| 久久久精品一区| 国产精品二区二区三区| 一区二区在线观看视频| 中国成人黄色视屏| 久久伊人免费视频| 一级日韩一区在线观看| 久久久91精品国产| 国产精品久久久久7777婷婷| 亚洲国产经典视频| 午夜国产不卡在线观看视频| 欧美国产先锋| 午夜国产不卡在线观看视频| 欧美韩日亚洲| 韩日精品在线| 午夜精品久久久久久久白皮肤| 欧美激情在线观看| 翔田千里一区二区| 欧美色欧美亚洲高清在线视频| 亚洲第一色在线| 欧美一区二视频| 99热免费精品| 欧美暴力喷水在线| 国产一区欧美日韩| 篠田优中文在线播放第一区| 91久久精品www人人做人人爽| 久久精品国产99国产精品| 国产精品二区二区三区| 99国产精品久久久久久久| 男同欧美伦乱| 久久激情中文| 国产亚洲福利| 欧美一级专区免费大片| 中日韩男男gay无套| 欧美国产精品劲爆| 亚洲人www| 欧美福利电影网| 久久这里只有精品视频首页| 国产热re99久久6国产精品| 亚洲免费在线看| 99re成人精品视频| 欧美日韩午夜在线| 一本色道久久综合精品竹菊| 欧美黄色小视频| 免费在线观看成人av| 亚洲高清在线视频| 美女日韩在线中文字幕| 久久久精品一区二区三区| 好看的av在线不卡观看| 久久久久综合| 六月丁香综合| 日韩写真在线| 亚洲最新在线|