Red de conocimiento informático - Aprendizaje de código fuente - ¡Llame al experto en mecanografía, llame al experto en informática! ¡Ayúdame a escribir el siguiente contenido! Forzar el cierre del código fuente

¡Llame al experto en mecanografía, llame al experto en informática! ¡Ayúdame a escribir el siguiente contenido! Forzar el cierre del código fuente

; Para plataformas de tipo NT, obtenga permisos de apagado/reinicio.

AdjustToken proc

LOCAL hdlProcessHandle:DWORD

LOCAL hdlTokenHandle:DWORD

LOCAL tmpLuid:LUIDCUST

LOCAL tkp:TOKEN_PRIVS

LOCAL tkpNewButIgnored:TOKEN_PRIVS

LOCAL lBufferNeeded:DWORD

LOCAL tBuff[32]:BYTE

LOCAL ptBuff: Llamar GetCurrentProcess; obtiene el identificador del proceso actual

mov hdlProcessHandle, eax; guárdelo en hdlProcessHandle

lea eax, tBuff Almacene la dirección del búfer temporal en eax; > mov ptBuff, eax; Establecer puntero de búfer temporal

mov BYTE PTR [eax], 0; Inicializar búfer

invocar OpenProcessToken,hdlProcessHandle,40,ADDR hdlTokenHandle

invocar LookupPrivilegeValue,ptBuff, SADD("SeShutdownPrivilege"), ADDR tmpLuid

lea eax, tmpLuid; ingrese la dirección de tmpLuid en eax

ingrese el contenido de tmpLuid en eax<; /p>

; Ingrese la dirección de tmpLuid en eax

Ingrese el contenido de tmpLuid en ecx: edx

mov ecx, (LUIDCUST PTR [eax]).usedpart

mov edx, (LUIDCUST PTR [eax]).ignorehigh32bitpart

lea eax, tkp; ponga la dirección de tkp en eax

mov (TOKEN_PRIVS PTR [eax] ]). p>

mov (TOKEN_PRIVS PTR [eax]).attributes, 2

invocar AdjustTokenPrivileges,hdlTokenHandle,0,ADDR tkp,\

SizeOf tkpNewButIgnored,ADDR tkpNewButIgnored,ADDR lBufferNeeded

ret

AdjustToken endp

LogoutNOW proc

invoca ExitWindowsEx,EWX_LOGOFF,0; cerrar sesión en la máquina

ret

Cerrar sesión AHORA endp

Apagar AHORA proc

invocar SalirWindowsEx,EWX_SHUTDOWN + EWX_FORCE + EWX_POWEROFF,NULL cerrar;

Apague la máquina

ret

ShutdownNOW endp

RestartNOW proc

invoke ExitWindowsEx,EWX_REBOOT,0 ; >

ret

Reiniciar AHORA endp

Cópialo e ingresa tú mismo