#2
Ciao a Tutti , sono sempre Diolegend , oggi vi voglio portare un'altra guida molto interessante , forse qualcuno si e' affascinato al codice precedente , questo e' il link : https://www.inforge.net/xi/threads/...mmi-crash-del-sistema-se-viene-chiuso.474451/
Questa volta pero' invece di auto proteggersi , proteggiamo invece gli altri programmi , il codice non e' lunghissimo.
C++:
#include <Windows.h>
#include <iostream>
#include "ntdll.h"
#pragma comment(lib,"ntdll.lib")
BOOL SettarePermesso()
{
TOKEN_PRIVILEGES d_Privilegi;
LUID d_Luid;
HANDLE d_Token;
LookupPrivilegeValue(NULL, L"SeDebugPrivilege", &d_Luid);
d_Privilegi.PrivilegeCount = 1;
d_Privilegi.Privileges[0].Luid = d_Luid;
d_Privilegi.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &d_Token);
AdjustTokenPrivileges(d_Token, 0, &d_Privilegi, sizeof(TOKEN_PRIVILEGES), 0, 0);
return true;
}
int main()
{
SettarePermesso();
DWORD d_PID = 0;
BOOL d_Smart = TRUE;
std::cout << "Inserisci il PID del processo, nel quale vuoi settare il sistema di difesa --> ";
std::cin >> d_PID;
HANDLE d_Processo = OpenProcess(PROCESS_ALL_ACCESS, FALSE, d_PID);
NtSetInformationProcess(d_Processo, ProcessBreakOnTermination, &d_Smart, sizeof(ULONG));
std::cout << "Sistema di difesa : [ATTIVO]" << std::endl;
while (true);
return 0;
}
Per chi non sapesse cos'e il PID , e soltato un numerino per indentificare il processo, se non mi credete vi passo la breve descrizione in inglese di wikipedia:
In computing, the process identifier (normally referred to as the process ID or just PID) is a number used by most operating system kernels — such as that of UNIX, macOS or Microsoft Windows — to uniquely identify an active process. This number may be used as a parameter in various function calls, allowing processes to be manipulated, such as adjusting the process's priority or killing it altogether.
Ho aperto paint nella macchina virtuale e il suo pid e' 372 , faccio termina e mi appare queste finestra , dove mi chiede se voglio confermare.
Dopodiche' inserisco il process id nel programma ovvero 372 e provo di nuovo a terminare , ma questa volta mi appare un'altra finestra dove mi chiede se voglio davvero terminare il processo, perche' causera' il crash del sistema.
Ho confermato e mi crasha.
Spiegazione del codice sorgente:
Devo prima di tutto ottenere il permesso per cambiare il processo ( OpenProcess ), Dopodiche' segno ProcessBreakOnTermination Abilitato con la funzione NtSetInformationProcess, tutto qua.
Vi ho lasciato il download dei due files ( ntdll.h e ntdll.lib)
- Diolegend