Funcional en W7 x32, en x64 no probé ya que son pocas las ganas de provocar un BSOD en mi PC.
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.8.1
Author: Naker90
Script Function:
Protege el proceso especificado con un BSOD (Blue Screen of Death)
Funcional en W7 x32
La funcion necesita permisos de administrador para elevar privilegios y asignar la proteccion al proceso
Ejemplo:
ProtectProcess_BSOD('Anotador Naker90.exe') => El proceso del anotador quedaria protegido con BSOD
#ce ----------------------------------------------------------------------------
#RequireAdmin
#include <Security.au3>
Func ProtectProcess_BSOD($sProcessName)
Const $sPriority = 29
Const $sProcess_All_Access = 0x1F0FFF
Const $sTokenAdjustPrivileges = 0x20
Const $sTokenQuery = 0x0008
;Obtenemos el PID del proceso (Si el PID es 0 damos el mensaje y salimos, de lo contrario continuamos con el code)
Local $sPID = ProcessExists($sProcessName)
if $sPID = 0 then
MsgBox(64, 'ERROR', 'No Existe ningun procesos en ejecucion con ese nombre')
Exit
Else
;Elvemos privilegios para poder asignar la proteccion al proceso
;Abrimos el acceso al Token con OpenThreadTokenEx aignandole los derechos de TokenAdjustPrivileges y TokenQuery
Local $sOpenThreadToken = _Security__OpenThreadTokenEx (BitOR($sTokenAdjustPrivileges, $sTokenQuery))
;Habilitamos el privilegio
_Security__SetPrivilege($sOpenThreadToken, 'SeDebugPrivilege', True)
;Cerramos el handle del acceso
DllCall('Kernel32.dll', 'int', 'CloseHandle', 'handle', $sOpenThreadToken)
;Obtenemos el handle del proceso que queremos proteger con la API OpenProcess
Local $sHandle = DllCall('Kernel32.dll', 'handle', 'OpenProcess', 'dword', $sProcess_All_Access, 'bool', True, 'dword', $sPID)
;Creamos la estructura que le vamos a pasar despues a NtSetInformationProcess y le asignamos el valor "True"
Local $sStruct = DllStructCreate('bool BSOD')
DllStructSetData($sStruct, 'BSOD', True)
;Le asignamos la proteccion al proceso con NtSetInformationProcess
DllCall('Ntdll.dll', 'int', 'NtSetInformationProcess', 'handle', $sHandle[0], 'int', $sPriority, 'int', DllStructGetPtr($sStruct), 'int', 4)
;Cerramos el handle que abrimos antes con OpenProcess
DllCall('Kernel32.dll', 'int', 'CloseHandle', 'handle', $sHandle[0])
EndIf
EndFunc
También les dejo un binario por si quieren testear.Link: [Enlace externo eliminado para invitados]
Pass: Indetectables.net
Saludos