J'espère que vous vous débrouillez bien en ces temps compliqués, une bonne maîtrise tout autour: D
Alors j'arrive à mon problème, actuellement je travaille sur un jeu en Java et je sais qu'il est possible de modifier le fichier jar de mon jeu ce qui me gêne un peu car il peut donner des possibilités de triche aux joueurs malintentionnés. .. J'avais pensé à une solution même si elle n'est pas infaillible, ce serait de vérifier si le fichier jar n'a pas été modifié. Mais le problème est que je ne sais pas comment vérifier cela, j'avais pensé à un système qui vérifierait le point du fichier même si je doute que ce soit la meilleure solution.
Si vous avez d'autres idées pour sécuriser mon jeu, je serais intéressé: D
3 Réponses :
Vous aurez besoin de savoir où se trouve le fichier jar: Java - Rechercher des fichiers dans un répertoire
Ensuite, vous pouvez vérifier la dernière date de modification du fichier: https://www.boraji.com/java-get-last-modified-date-of-a-file
Cependant, je ne considérerais pas cela comme une défense très puissante contre la triche, car on peut modifier le fichier jar et supprimer la validation de la date du fichier.
Vous devrez réfléchir au type de triche qui peut survenir et proposer également d'autres mesures de sécurité.
MODIFIER
Comme l'a souligné Dave Thompson, l'horodatage modifié peut également être changé, ce qui rend la modification du fichier jar inutile, même si l'ingénierie inverse est toujours nécessaire par les pirates, car c'est ainsi qu'ils découvrent les règles du application sont.
Je n'ai même pas besoin de modifier le fichier jar, je peux définir de manière triviale l'horodatage modifié sur n'importe quelle valeur que je veux - sur chaque Unix depuis pour toujours, c'est intégré (tactile), sur Windows depuis plus d'une décennie PS le fait en une ligne et avant cela, je pourrais utiliser VBS ou écrire un programme C en environ 3 lignes.
En ce qui concerne votre question sur d'autres idées, la meilleure chose à faire est
Il est possible de vérifier si un fichier JAR sur votre machine a été modifié. Comparez simplement un hachage cryptographique du fichier JAR actuel avec un hachage précédemment enregistré pour une copie parfaite. (Ou faites simplement une comparaison octet par octet avec la copie vierge.)
Mais vous ne pouvez pas faire cela pour le fichier JAR sur la machine de l'utilisateur :
Fondamentalement, il n'y a aucun moyen fiable de détecter qu'un tricheur exécute un JAR modifié ... mis à part la détection du comportement anormal du tricheur lui-même.
Mais pensez-y de cette façon. S'il y avait un bon mécanisme (fiable, sans contournement) pour détecter qu'un tricheur exécute un client modifié, les tricheurs ne seraient pas un problème dans les nombreux jeux en ligne qui existent. Et (par extension) il n'y aurait aucun moyen de contourner les systèmes d'application des licences logicielles ... car les éditeurs de logiciels utiliseraient un mécanisme similaire.
Donc, mon conseil serait de ne pas perdre trop de temps sur cette approche. Cela ne fonctionne que contre des personnes ayant une expertise technique limitée ou une motivation limitée.
Le seul moyen d'éviter complètement les tricheurs est de contrôler la plate-forme sur laquelle le client s'exécute. Cela n'est généralement pas pratique.
Un hachage. Mais ils peuvent simplement trouver le contrôle de hachage. Obfuscation. Peut encore être vaincu. Appel du serveur - en fait le même que le hachage. Bonne chance!
Java a la capacité intégrée pour le créateur de signe i> un pot; Le JVM vérifie cette signature s'il est présent et détectera si une entrée dans le pot a été modifiée i>. La signature utilise la cryptographie de l'interdiction de l'interdiction que personne d'autre ne peut simuler. Mais un tricheur peut enlever i> la signature; Si vous cochez pour vérifier le manque de signature, ils peuvent supprimer / modifier ce code. Fondamentalement, cela se défend contre des tiers (c'est-à-dire une personne sur le réseau où le code a été téléchargé, qui était le cas d'utilisation d'origine de Java), pas votre utilisateur prévu.