Domanda [GUIDA] Proteggere il programma che vuoi tu, crash quando viene chiuso #2

Vi e' piaciuta la guida?

  • No, Fa Schifo

    Voti: 0 0.0%

  • Votanti totali
    1
Stato
Discussione chiusa ad ulteriori risposte.

diolegend

Utente Silver
22 Luglio 2013
132
18
11
86
#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;
}
KfWyxR4.png


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.

Tbeh5PN.png


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.


hq2kouf.png


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
 

Allegati

  • ntdll.zip
    94.4 KB · Visualizzazioni: 22
Stato
Discussione chiusa ad ulteriori risposte.