原 文: 玩玩360——ExitWindowsEx大法
作 者: dplayer
时 间: 2009-09-10,13:54
链 接: http://bbs.pediy.com/showthread.php?t=97539
=========================================================
请哪位抽空将以下代码翻译成Delphi的、Thanks~
=========================================================
/*-----------------------------------------------------------------------
the coding by dplayer -_-
-----------------------------------------------------------------------*/
#include "resource.h"
#include <windows.h>
/*-------------------------------------------------------------*/
/* 定义子程序与全局变量、常量 */
/*-------------------------------------------------------------*/
BOOL CALLBACK MainDlg (HWND, UINT, WPARAM, LPARAM) ;
BOOL EnablePrivilege(HANDLE hToken,LPCTSTR szPrivName,BOOL fEnable);
HINSTANCE hInst;
/*-------------------------------------------------------------*/
/* WinMain - 基于WIN32的程序的入口 */
/*-------------------------------------------------------------*/
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
hInst = hInstance;
DialogBoxParam (hInstance, MAKEINTRESOURCE(IDD_MAINDLG), NULL, MainDlg, NULL);
return 0;
}
/*-------------------------------------------------------------*/
/* MainDlg - 主对话窗口 */
/*-------------------------------------------------------------*/
BOOL CALLBACK MainDlg (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
HANDLE hToken;
BOOL temp;
switch (message)
{
case WM_INITDIALOG:
SendMessage(hDlg,WM_SETICON,ICON_BIG,LPARAM(LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON)))); //设置图标
OpenProcessToken (GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken);
EnablePrivilege (hToken, SE_SHUTDOWN_NAME, TRUE);
break;
case WM_QUERYENDSESSION:
return true;
break;
case WM_CLOSE:
SendMessage(hDlg, WM_CLOSE, 0, 0);
DestroyWindow(hDlg);
break;
case WM_COMMAND:
switch (LOWORD (wParam))
{
case IDC_OK:
ShowWindow(hDlg,SW_HIDE);
do
{
temp=ExitWindowsEx (EWX_SHUTDOWN ,0XFFFFFFFF);
} while (!temp);
break;
}
break;
}
return FALSE;
}
/////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------
// 提权函数
///////////////////////////////////////////////////////////////////////////
BOOL EnablePrivilege(HANDLE hToken,LPCTSTR szPrivName,BOOL fEnable)
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
LookupPrivilegeValue (NULL, szPrivName, &tp.Privileges[0]. Luid);
tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED:0;
AdjustTokenPrivileges (hToken, FALSE, &tp, sizeof(tp), NULL, NULL);
return((GetLastError() == ERROR_SUCCESS));
}
/////////////////////////////// END OF FILE /////////////////////////////////////
[课程]Android-CTF解题方法汇总!