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

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资源网| 在线免费观看日本一区| 欧美国产日韩免费| 欧美精品三级| 午夜国产精品视频| 欧美一区二区三区视频免费| 狠狠v欧美v日韩v亚洲ⅴ| 欧美成人首页| 欧美三级在线视频| 久久久久久久尹人综合网亚洲| 久久精品国产综合精品| 亚洲高清在线观看| 夜夜嗨av一区二区三区四季av| 国产精品你懂得| 欧美.日韩.国产.一区.二区| 欧美日本久久| 久久久青草青青国产亚洲免观| 久久久久国色av免费看影院 | 免费黄网站欧美| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲影视在线播放| 伊人婷婷欧美激情| 日韩午夜av在线| 国产一区日韩一区| 亚洲伦理在线观看| 国产一区免费视频| 亚洲日本欧美| 国产麻豆日韩| 最新国产乱人伦偷精品免费网站| 国产精品你懂的| 欧美激情一二区| 国产伦精品一区二区三区免费迷| 欧美h视频在线| 国产精品一区二区在线| 亚洲高清资源| 国内精品久久久久伊人av| 最新69国产成人精品视频免费| 国产欧美日韩一区| 亚洲欧洲一区| 国产在线视频不卡二| 日韩亚洲一区在线播放| 伊人久久噜噜噜躁狠狠躁| 一区二区成人精品| 亚洲精品一区二区三区av| 午夜在线电影亚洲一区| 亚洲在线观看视频网站| 欧美日韩成人一区| 欧美国产日韩a欧美在线观看| 国产午夜精品在线| 一区二区三区国产在线| 亚洲久久视频| 欧美高清视频在线观看| 亚洲成色www8888| 黄色一区二区三区四区| 欧美一区二区三区四区在线观看地址| 一区二区三区日韩欧美| 欧美激情精品久久久久久大尺度| 老鸭窝91久久精品色噜噜导演| 国产精品私房写真福利视频| 一区二区三区国产精品| 亚洲欧美国产高清| 国产精品电影在线观看| 一区二区三区国产| 亚洲欧美在线免费| 国产精品久久夜| 亚洲综合色噜噜狠狠| 欧美尤物一区| 国产在线日韩| 久久夜色精品国产亚洲aⅴ| 蜜桃视频一区| 亚洲日本电影在线| 欧美日韩三级电影在线| 一区二区三区免费在线观看| 亚洲婷婷在线| 国产日本欧美视频| 久久深夜福利| 亚洲国产影院| 亚洲综合第一页| 国产亚洲一区二区三区在线观看| 久久成人免费网| 欧美国产乱视频| 在线一区亚洲| 国产精品一区二区三区久久久 | 女主播福利一区| 日韩视频专区| 国产精品入口福利| 久久精品国产免费| 91久久精品美女高潮| 亚洲一区二区视频| 国产一区亚洲一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲国产天堂久久综合| 99精品久久免费看蜜臀剧情介绍| 国产精品99免费看| 久久se精品一区二区| 亚洲欧洲在线播放| 欧美制服丝袜第一页| 亚洲国产另类 国产精品国产免费| 欧美连裤袜在线视频| 欧美一区二区福利在线| 亚洲国产精品成人精品| 午夜精品福利视频| 亚洲人成人77777线观看| 国产精品久久久一区二区| 久久久一区二区三区| 中文精品视频| 亚洲国产精品免费| 久久精品亚洲热| 亚洲婷婷在线| 亚洲第一精品夜夜躁人人爽| 国产精品久久久久久模特| 欧美v日韩v国产v| 香蕉久久精品日日躁夜夜躁| 亚洲美女av网站| 欧美成黄导航| 久久久一区二区三区| 亚洲一区二区三区午夜| 亚洲人成欧美中文字幕| 韩国精品一区二区三区| 国产精品免费aⅴ片在线观看| 欧美成人有码| 久久乐国产精品| 欧美一区二区三区四区在线观看| 在线视频欧美一区| 最新亚洲视频| 亚洲成在人线av| 欧美不卡一区| 米奇777超碰欧美日韩亚洲| 欧美一区二区在线播放| 亚洲在线免费视频| aaa亚洲精品一二三区| 亚洲激情在线播放| 亚洲成人在线免费| 尤物九九久久国产精品的特点 | 欧美日韩国产一区二区| 麻豆精品精华液| 麻豆成人精品| 老妇喷水一区二区三区| 久久精品男女| 久久躁日日躁aaaaxxxx| 久久久久高清| 另类av导航| 欧美成人免费在线视频| 欧美成人资源网| 欧美顶级少妇做爰| 欧美日韩大片| 国产精品久久久久久久久免费樱桃| 欧美日韩一区二区三区高清| 欧美日本国产一区| 国产精品爱久久久久久久| 国产精品视频网| 国产无遮挡一区二区三区毛片日本| 国产精品一区二区久久久久 | 久久天天躁狠狠躁夜夜av| 久久久久久网| 欧美a级片一区| 欧美日本韩国一区| 国产精品videosex极品| 国产精品国产亚洲精品看不卡15| 国产精品热久久久久夜色精品三区 | 欧美成人高清视频| 欧美久久久久| 国产精品一区二区三区观看| 国产一区二区三区丝袜| 亚洲激情视频在线播放| 亚洲在线播放| 久久综合中文| 亚洲精品视频在线| 午夜精品www| 欧美大片网址| 国产精品永久免费在线| 在线国产日韩| 亚洲男人的天堂在线观看| 久久久久久国产精品一区| 亚洲国产高潮在线观看| 亚洲性视频h| 欧美大片va欧美在线播放| 国产精品扒开腿爽爽爽视频| 韩国av一区二区| 亚洲一区二区网站| 欧美+亚洲+精品+三区| 这里只有精品视频| 久久综合伊人77777蜜臀| 国产精品电影观看| 亚洲片在线观看| 久久久久久久成人| 中文在线不卡| 欧美成人午夜视频| 国产亚洲成人一区| 99日韩精品| 蜜桃伊人久久| 欧美亚洲网站| 国产精品v欧美精品∨日韩| 在线观看国产成人av片| 亚洲欧美另类国产| 日韩视频在线一区二区三区| 久久久99免费视频| 国产视频不卡|