Ser capaz de descompilar / aplicar ingeniería inversa al código del cliente fácilmente es realmente solo un pequeño obstáculo. Los hackers emprendedores han estado doblando ejecutables a su voluntad (maliciosamente y no) durante años antes de que aparecieran lenguajes de alto nivel, triviales para descompilar como C #. La seguridad solo a través de la oscuridad no es seguridad en absoluto.
Cualquier dato en la máquina del usuario (código o datos de activos regulares) ya está esencialmente comprometido. Realmente no puede protegerse contra eso: si no desea que las personas editen datos, no los ponga en su máquina, guárdelos en sus servidores. Del mismo modo, si no desea que modifiquen el código en el cliente, asegúrese de que el cliente no tenga control sobre nada útil.
Si esa no es una opción (por ejemplo, su multijugador es completamente de igual a igual), puede hacer cosas como calcular hash de los activos relevantes y solo permitir que las personas jueguen entre sí si los hashes coinciden. Sí, alguien podría elaborar cuidadosamente una edición del ejecutable de modo que devuelva un hash diferente, pero todo lo que debería significar es que el jugador infractor desincronizará y se desconectará del juego relativamente rápido porque sus activos no coinciden con el resto de los jugadores'.
También puede emplear un tipo de prueba de "reglas de mayoría" que le permite desconectar jugadores cuya simulación se ha desviado de la sincronización con otros jugadores, dando al jugador "anfitrión" (quien haya comenzado el juego) el voto decisivo.