Fondamentalmente impossibile per convalidare che una versione non modificata del tuo client si connette al tuo server.
... a meno che non faccia ciò che è necessario per assicurarlo. Ciò significa hardware resistente alla manomissione lato client.
Quando il codice viene eseguito sul computer del client, il proprietario del computer può eseguire un debugger e modificare il codice client in qualsiasi punto con valori arbitrari. Il "debugger" può essere una macchina virtuale in piena regola. Se vuoi evitarlo, puoi provare a impegnarti in un elaborato nascondiglio e cercare un gioco dove immagini sistemi di rilevamento extra, e gli attaccanti contrastano questi con varianti dei loro stessi strumenti. Questo è il problema delle persone che cercano di progettare soluzioni software anti-cheat (ad es. PunkBuster ); questo è anche il problema delle persone che vogliono vendere servizi Video-on-Demand impedendo ai clienti di salvare i video localmente e quindi pubblicarli su varie piattaforme di condivisione file.
Per riassumere, queste protezioni non funzionano bene, anche quando i dati da proteggere sono banali come vite extra in alcuni giochi.
Per evitare ciò, devi far funzionare il tuo codice su hardware protetto, che si difenderà da un'ispezione approfondita dal suo presunto proprietario. Questo è il modello di console di gioco, terminali di pagamento e smart card.
Un TPM è un tentativo di compromesso: un modulo antimanomissione che funziona all'interno di un normale PC; l'assunto è che un utente normale troverà troppo difficile modificare l'hardware per, ad esempio, leggere e scrivere tutta la RAM senza passare attraverso i pezzi sotto il controllo del modulo TPM (ad es. la CPU).
Senza tale hardware sul lato client, quello che stai cercando di fare non funzionerà. A meno che la modifica del codice cliente non sia così inutile di quanto nemmeno nessuno ci provi. Tutto dipende dal valore di ciò che è in gioco qui.