I processi #
I processi sono la parte più importante di un controllo. I processi sono tutte le istanze di un programma (.exe
per Windows) in esecuzione. Essi vengono gestiti dalla CPU.
Una applicazione come Task Manager su Windows, elenca tutti i processi, ma senza altre informazioni rilevanti per un’analisi. Possiamo usare programmi come Process Explorer dalla Sysinternal suite e tanti altri simili. Il più utilizzato in ambito controlli è proprio System Informer (ex. Process Hacker).
Quando un programma viene avviato su Windows, viene creato un processo, che contiene le seguenti informazioni (soltanto le più rilevanti sono state elencate):
- Il file eseguibile da cui deriva il processo;
- Il percorso di quel file;
- Il processo parente;
- Gli argomenti con cui è stato avviato;
- I percorsi a cui sta accedendo;
- I sottoprocessi (threads);
- I moduli (librerie);
- Gli “Handles”;
- La memoria allocata al processo;
- Il programma stesso.
Processo parente #
Il processo parente, è il processo che ha avviato quel programma. Se noi facciamo doppio click su un eseguibile di qualsiasi tipo, il processo parente di quel processo sarà explorer.exe
. I servizi, hanno sempre dei processi parente noti. Il 90% dei servizi ha come processo parente services.exe
, oppure svchost.exe
. Servizi come il csrss.exe
e wininit.exe
non hanno un processo parente, perché avviati direttamente dal sistema operativo.
Argomenti di avvio #
Gli argomenti con cui un processo è stato avviato, sono le opzioni che si possono fornire ad un programma per alterare l’input iniziale. Alcuni processi hanno lo stesso eseguibile, ma si distinguino per gli argomenti di avvio, apparendo come processi separati ed autonomi.
I sottoprocessi (threads) #
Nei sistemi moderni, ogni processo ha uno o più threads, un modo di suddividere il lavoro su più core del processore. Il processo di Minecraft ha tanti sottoprocessi, utili ognuno in ambito diverso.
I moduli (librerie) #
I file eseguibili non hanno spesso tutto il codice al loro interno. Le librerie dinamiche (.dll
su Windows), sono dei file eseguibili che possono essere caricati da programmi per usufruire di:
- Assets statici;
- Pezzi di codice (funzioni).
Possono essere caricate da più programmi simultaneamente. Questo permette una condizione fondamentale nei sistemi moderni: la risuabilità del codice. I moduli sono importanti per trovare tracce di cheats. Gli injection client vengono iniettati sotto forma di moduli nel processo di Minecraft lasciando tracce in esso.
Gli “Handles” #
Gli “Handles” sono un’astrazione che il kernel di Windows usa per raggruppare tutti i file aperti e altre tipologie di oggetti legati al processo. Nel caso di Minecraft, nella sezione “Handles” di un processo troviamo tutti i file .jar
aperti dal gioco (librerie, mods e versioni) insieme ai vari assets usati da esso.
Processi noti #
Segue una lista di alcuni processi frequentemente controllati durante un ss.
explorer.exe #
Forse il più noto, l’explorer è la shell che ci permette di interagire graficamente con il sistema operativo. Osservando la memoria del processo, si è notato che ogni file visualizzato nell’explorer appare nella sua memoria. Inoltre, sono state scoperte altre particolarità, tra cui il pcaclient, utile per vedere gli ultimi 10 processi eseguiti.
csrss.exe #
Il “Client Server Runtime Process” è forse l’artefatto più importante di tutti. Ogni eseguibile viene registrato nella memoria di questo processo. Purtroppo la Windows API può dare problemi di permessi quando si tratta di accedere alla memoria di processi “delicati” come il soprascritto. Molto spesso, anche System Informer può accedere a tale area di memoria.
Con questo processo, possiamo provare che un programma è stato eseguito, ma senza alcuna informazione riguardo il quando. In questi casi, è importante capire se un cheat era in istanza oppure no.
msmpeng.exe #
Questo è il processo del servizio anti-malware di Windows Defender. Un processo poco conosciuto e poco esplorato, ma pieno di potenzialità. Facendo parte della suite di antivirus di Windows, ha informazioni su tutti i programmi eseguiti e quindi possibili tracce di cheats.