0
votes

Comment vérifier que mon fichier jar n'est pas modifié?

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


2 commentaires

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 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 . La signature utilise la cryptographie de l'interdiction de l'interdiction que personne d'autre ne peut simuler. Mais un tricheur peut enlever 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.


3 Réponses :


0
votes

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.


1 commentaires

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.



1
votes

En ce qui concerne votre question sur d'autres idées, la meilleure chose à faire est Validate tout du client . Une chose à laquelle vous devriez toujours vous rappeler est que Le client ne peut pas faire confiance parce que vous ne pouvez rien en vérifier. Tout ce que vous pouvez faire est de stocker l'état sur un serveur distant et lorsque le client vous indique quelque chose, validez-le et donnez une réponse si nécessaire ou empêchez l'action si nécessaire.


0 commentaires

3
votes

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 :

  • Vous ne pouvez pas vous connecter à l'ordinateur de l'utilisateur et accéder à son système de fichiers pour consulter le fichier JAR. (Même si vous le pouviez, il n'y a aucune garantie que vous verrez le fichier que le tricheur utilise réellement.)
  • Si votre application (exécutée sur la machine de l'utilisateur) essaie de signaler l'intégrité de ses fichiers JAR, cela peut être annulé par le tricheur. Il leur suffit de modifier le fichier JAR contenant le code de rapport pour signaler un faux hachage.

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.


0 commentaires