Comment puis-je empêcher les tricheurs de modification de la mémoire?


10

Il existe de nombreux programmes de modification de la mémoire de nos jours ( Cheat Engine & co). Existe-t-il un moyen efficace de maintenir une variable constante réellement constante?

J'avais deux idées:

  1. Créez un thread séparé mettant à jour la variable constante à une valeur constante, par exemple 200 chaque minute. Problème: on peut également modifier la deuxième valeur.
  2. Stockez la valeur sur le serveur. Problème: je souhaite maintenir le trafic réseau aussi bas que possible.

J'ai besoin de ce mécanisme pour les constantes et les variables autorisées à contenir uniquement une certaine plage de valeurs.

Y a-t-il de meilleures façons de procéder?


1
Aucun de ceux-ci ne fonctionnera. Dans la première situation, le tricheur n'a qu'à écraser la valeur «200» que vous copiez et ce n'est pas plus difficile que d'écraser l'original. Dans la situation 2, le tricheur peut maintenant changer la valeur sans même modifier votre programme simplement en changeant les octets reçus sur le réseau (par exemple, avec un proxy local)
Jimmy

6
Je n'ai pas encore vu de protection contre la triche qui ne peut pas être désactivée par un pirate. Assurez-vous simplement que vous ne faites pas du jeu un cauchemar vivant pour les utilisateurs légitimes, dans votre croisade contre les tricheurs :)

1
Connexes ; plus spécifique, mais sinon le même.
Anko

1
La plupart des jeux ont des "Trainers". Je veux dire, l'enfer, même Mass Effect: Andromeda a un entraîneur, et il n'est sorti que depuis un peu plus d'une semaine. Je dis ne t'en fais même pas. Si les grandes sociétés de jeux ne peuvent pas éviter cela, qu'est-ce qui vous fait penser que vous avez une chance?
Krythic

Réponses:


21

Si votre jeu est en solo: ce n'est pas possible, mais vous ne devriez pas vous en soucier .

Si votre jeu est multijoueur: vous devez alors stocker tous vos états importants sur le serveur, ce qui est beaucoup plus difficile à pirater qu'une machine locale.


4
Il est très facile de se protéger contre la triche multijoueur en créant un serveur faisant autorité et en ne prédisant que l'état côté client. Fondamentalement, il suffit d'envoyer les données du joueur du client au serveur, et non "J'ai fait des xdégâts y".
jmegaffin

En effet @BorealGames, c'est ce que je veux dire par "stocker tous les états importants sur le serveur".
jcora

Je voulais juste clarifier un peu :)
jmegaffin

11

Cela ne peut pas être fait , https://security.stackexchange.com/a/4639 concerne le DRM, mais la même chose s'applique à tout ce que l'utilisateur ne veut pas sur son ordinateur, y compris les mécanismes anti-triche. (Ce qui a tendance à être encore plus difficile à faire que le DRM.)

Mais pourquoi voudriez-vous, vraiment pourquoi le feriez-vous? C'est l'ordinateur de votre client, pas le vôtre, le client fait avec son ordinateur tout ce qu'il veut en faire. Vous n'avez aucun droit à ce sujet. Votre programme est supprimé si le client ne l'aime pas.

Pour les jeux multijoueurs, il ne s'agit pas de concevoir le binaire qui fonctionne, mais de concevoir la communication. Laisser les utilisateurs envoyer simplement "J'ai gagné avec 20000 points" ne fonctionne pas, ni "J'ai 2000 Gold" . Vous devrez simuler le jeu vous-même et laisser les joueurs envoyer ce qu'ils font comme "J'ai ordonné au soldat de se déplacer vers le point X / Y" ou "J'ai acheté l'article numéro 43" , pas le résultat de cela les actions sont. Le serveur décide quels sont les résultats et qui a finalement gagné.

S'il s'agit d'un jeu solo avec un score élevé en ligne, une option serait de demander au joueur de vous envoyer une rediffusion, de la simuler et de décider du résultat à partir de cela.


11
Petite suggestion de correction: le client ne doit pas envoyer "J'ai acheté l'article numéro 43" mais plutôt "Je veux acheter l'article numéro 43". Le serveur devrait alors répondre par "OK, vous perdez 200 GP, vous gagnez un Item43", "Non, vous n'avez pas assez d'or" ou "Non, la boutique que vous parcourez actuellement n'a pas de numéro d'article 43". Le serveur doit se comporter comme le maître de jeu d'un RPG stylo et papier. Les joueurs disent ce qu'ils veulent faire et le serveur leur dit s'ils réussissent.
Philipp

De plus, je ne suis pas sûr de modifier la mémoire en cours d'utilisation d'un ordinateur personnel, mais modifier le binaire d'un jeu lui-même (même s'il est sur votre ordinateur) est généralement contraire au CLUF et peut être défini plus en détail dans les lois sur les droits d'auteur, etc.
lozzajp

Ce n'est pas que violer un CLUF, l'équivalent numérique du jaywalking, n'ait jamais arrêté personne.
jkmartindale

3

Le premier n'est pas efficace et n'empêchera aucune personne déterminée d'attaquer votre jeu - et il est également sujet aux erreurs. Cependant, vous pouvez le rendre beaucoup plus difficile , pas une preuve complète , si vous le souhaitez. Certaines stratégies communes sont disponibles sur le Web, mais comme d'autres l'ont mentionné - vous devez vous demander si cela en vaut la peine.

Pour des raisons d'argument, voici quelques façons d'empêcher le piratage dans un environnement solo:

  1. Ouvrez une poignée pour tous les autres processus sur la machine des utilisateurs (invasive et non portable) et écrasez leur WriteProcessMemory avec une fonction factice ou un avertissement. Le choix t'appartient. Cela peut être vaincu car ... les applications sont libres de faire de même et d'écraser à nouveau le handle ou de faire des choses pour éviter cela.
  2. Vérifiez votre application et faites-la vérifier elle-même via un bouclier de piratage - cela est utile pour de nombreuses modifications permanentes de votre application, mais n'arrêtera pas une attaque de mémoire commune. Cela peut être vaincu parce que ... des outils comme ADA, OllyDbg et même de simples modifications hexadécimales peuvent apporter des correctifs permanents et des modifications à votre application pour supprimer le code incriminé - cela inclut votre idée de minuteur fileté!
  3. Recherchez les outils de piratage connus. Cela peut également être vaincu en recompilant un outil ou en attaquant directement votre client. Cela peut être vaincu car ... une recompilation, un changement de nom de l'application ou un changement dans ce que votre scanner utilise comme heuristique rendra cela inutile. Envisagez d'utiliser une partie spéciale de la mémoire qu'une application est connue pour utiliser si vous optez pour cela.

L'alternative, bien sûr, consiste simplement à tout stocker sur le serveur et à créer un serveur de jeu maître. Non seulement cela coûte cher, nécessite un entretien et augmente le temps de développement ... les fans ne sont pas tellement impressionnés par la mise en œuvre de jeux populaires comme Diablo III . Ou ici. Je dois noter que pour un RPG flash en ligne comme Adventure Quest, ce modèle a en fait assez bien fonctionné pour eux.

Je ne peux pas fournir beaucoup de conseils sur la façon de mettre en œuvre ce type d'approche car elle est très large, large et nécessite beaucoup de planification. La base à savoir est que le serveur décide de tout et que le client n'est rien d'autre qu'une simple console d'entrée et d'affichage.


3

Beaucoup de gens utilisent ces programmes pour rechercher un score stocké dans une variable, par exemple

int score = 10;

pour ce faire, ils ont besoin de connaître le score, généralement à partir du score affiché dans le jeu.

Je pensais, est-ce que cela pourrait les décourager ...

public static float randomVal; // at start of level generate random float

private float 1a3sf5vhh4; //represents score

void hjgkkj4(int val) //add score method
{
   var 5vhh4 =  1a3sf5vhh4/randomVal+val;
   1a3sf5vhh4 =  5vhh4*randomVal;
}

alors quand vous devez afficher le score, faites ...

string displayScore = ""+ 1a3sf5vhh4/randomVal;

cela incitera les tricheurs à rechercher ce qu'ils pensent être le score (le score affiché) afin qu'ils ne trouvent que la valeur affichée.

Le vrai score sera Score * randomVal stocké ailleurs. Ils ne peuvent pas changer le score en changeant la valeur affichée.

cela aiderait-il?

ps je ne suis pas un expert alors ne vous gênez pas lol.


Je viens de trouver cette vidéo, fait quelques remarques
Raimi

Des outils de triche peuvent également être configurés pour détecter de telles choses. Cela prend juste plus de temps à suivre.
Kromster

mais pour un petit jeu solo hors ligne, quelque chose comme ça serait une bonne solution? semble qu'il pourrait au moins arrêter certaines des applications là
Raimi

Oui, c'est juste le cas d'EffortSpent vs ProtectionAchieved, où la deuxième partie ne peut jamais atteindre 100%.
Kromster

1
Les noms aléatoires dans le code source n'aideront pas non plus, du moins dans la plupart des cas. Le programme est généralement compilé en IL / bytecode ou directement en binaire, etc.
lozzajp

2

En ce qui concerne les jeux solo , vous ne pouvez pas empêcher la tricherie, et vous ne devriez pas .


Pourquoi ne puis-je pas empêcher la triche dans mon propre jeu?

Comme d'autres réponses l'ont souligné, même les meilleurs efforts pourraient potentiellement être contournés par un seul pirate informatique et fournis au reste de votre base de joueurs. Vous pouvez toujours faire des efforts contre cela, mais cherchez d'autres réponses pour savoir comment . Cette réponse signifie pour vous éviter les ennuis, si votre jeu vise uniquement à fournir un gameplay solo.

Pourquoi devrais-je laisser les joueurs tricher dans une partie solo?

Pour citer Sam ,

Passez plus de temps à créer un grand jeu et moins de temps à empêcher les crétins de gâcher leur propre plaisir - simple.

Cela manque complètement le point . Les jeux sont une forme de divertissement . Généralement, votre base de joueurs joue à votre jeu pour vous amuser . Si un joueur utilise des astuces dans votre jeu, il y a une raison pour laquelle il utilise des astuces. Il est prudent de supposer que nous ne pouvons pas garantir la définition du plaisir de chaque joueur; s'ils utilisent des tricheurs , c'est peut-être leur façon de rendre votre jeu plus agréable pour eux.

Comment la triche rend-elle un jeu plus agréable?

Bien que chaque individu soit unique, il existe quelques conditions dans lesquelles les tricheurs peuvent rendre un jeu plus divertissant, du haut de ma tête:

  • Le jeu est un peu lent, et le joueur souhaite utiliser des tricheurs pour faire ressortir l'action avant qu'ils ne soient complètement repoussés.
  • Le joueur est incapable de dépasser un certain défi; ils ne tricheraient pas normalement, mais ils sont sur le point d'abandonner, dans la frustration. Ils peuvent arrêter de jouer à votre jeu ou utiliser une astuce pour contourner l'obstacle et continuer à jouer la deuxième moitié de votre jeu.
  • Le joueur ne peut pas consacrer le temps nécessaire à votre jeu pour l'expérience prévue. En appliquant des astuces, l'utilisateur peut obtenir un «démarrage en cours» et être en mesure de profiter du contenu prévu de votre jeu. Si vous pensez que cela ne semble pas plausible, considérez que c'est la raison pour laquelle j'ai personnellement joué très peu de Fallout 4. En comparaison, c'est le seul jeu que j'ai précommandé au cours des 5 dernières années, et le seul jeu que j'ai jamais précommandé et acheté pour plus d'une plateforme. J'adore le jeu; Je n'ai pas le temps pour ça.
  • Votre jeu a un bug , ce qui empêche le joueur de progresser davantage. Un cheat contourne le bug, afin que le joueur puisse continuer à jouer. Les récents jeux Elder Scrolls sont connus pour cette situation .

Pourquoi cela ne s'applique-t-il qu'aux jeux solo?

Il est important de souligner que cela ne fonctionne que dans les jeux solo ; si le joueur vous dit qu'il veut utiliser des astuces pour s'amuser davantage dans son jeu, aucun mal n'est fait. Dès qu'il y a plusieurs joueurs dans le jeu, les exploits de ce premier joueur pourraient devenir un désavantage injuste pour les autres joueurs. C'est la seule situation réelle où vous ne devriez pas permettre de tricher.


0

Que fait un outil de piratage de mémoire?

Il existe deux façons d'utiliser l'outil de piratage.

  1. Il accepte soit une adresse connue où les variables du joueur sont stockées.
  2. Vous alimentez les changements dans la variable et il analyse la mémoire pour les changements.

Que peux-tu y faire?

  1. Vous pouvez utiliser des variables allouées dynamiquement pour stocker les variables du lecteur afin que l'adresse ne cesse de changer au démarrage. Il n'y aura pas d'adresse fixe qu'un site de triche pourrait lister.

  2. Crypter les variables du lecteur: mise à l'échelle de la valeur, ajout d'une constante, etc. Cela pose un nouveau problème: un pirate inconditionnel pourrait démonter votre programme et trouver les chiffres que vous utilisez pour crypter vos variables de lecteur. Pour cela, utilisez des nombres aléatoires. Vous pouvez également augmenter les valeurs de vos variables de joueur, puis ajouter un nombre aléatoire de sorte que le nombre ajouté ne modifie pas significativement la valeur (ajouter 10 ou 20 à une valeur augmentée de 2000 ne fait pas beaucoup de différence).

Bien sûr, un pirate sérieux peut toujours trouver des moyens de surmonter ces obstacles, mais ce ne sera pas facile.

  std::default_random_engine myRNG;
  std::uniform_int_distribution<int> myDist_padding(10,100);
  class Player
  {
      public:
          Player()
          {
              Health = new float;
              Armor = new float;

              std::uniform_int_distribution<int> myDist_scale(1000,10000);
              scale = myDist_scale(myRNG);
          }
          float GetPlayerHealth() const;
          void SetPlayerHealth(float health);
      private:
          float *Health;
          float *Armor;
          int scale, constant;
  }

  //wrappers for Set/GetPlayerHealth
  void Player::SetPlayerHealth(float health)
  { 
      this->Health = health * scale + constant + myDist_padding(myRNG);     //random padding; adding 10 or 100 to a number that is scaled up by 1000 will cause an increase in 1%
      //1% of error is ok I guess?
  }
  int Player::GetPlayerHealth() const
  {
      return (this->Health - constant)/scale;
  }

Bien que le code ci-dessus résout certains problèmes graves, il est toujours craquable. La seule information dont le pirate aura besoin est: les variables du joueur sont accessibles via un pointeur (il pourrait également le découvrir en démontant votre jeu mais cela va être ennuyeux et difficile). Une fois que le pirate a l'adresse de vos variables de joueur avec d'autres variables aléatoires secrètes, il va être facile pour lui de développer une triche.

À mon avis, sans démontage, vous ne pouvez pas vraiment écrire un outil de piratage pour un tel système. Le résultat est imprévisible car vous allez ajouter un nombre aléatoire aux variabels du joueur à chaque fois qu'il est modifié. La plage dans laquelle les variables du lecteur sont stockées n'est pas la même à chaque démarrage.

Que pouvez-vous faire de plus?

Continuez à changer l’adresse des variables du joueur de temps en temps. Cela entrave-t-il la lisibilité du code? Eh bien, il le fait dans une certaine mesure, mais vous pouvez résumer l'ensemble du processus dans une seule classe qui a des commentaires bien expliqués. L'interface fournie par la classe aura des fonctions Set / Get simples. Le programmeur frontal n'aurait pas à se soucier de la complexité sous-jacente.


0

Économie:

Si vous voulez durcir votre jeu contre les tricheurs, la meilleure façon est d'acheter une solution logicielle qui le fait pour vous. Il existe plusieurs fournisseurs, et vous pouvez en trouver plusieurs en recherchant "anti cheat breaks my game" .

Les professionnels sont bien meilleurs pour prévenir les tricheurs que vous, et bien mieux pour ne pas casser votre jeu que vous (et ne réussissent toujours pas à 100%, dans aucun de ces cas). Donc, si vous pensez qu'il est utile de mettre une telle solution dans votre jeu, achetez-la. Faire le vôtre coûtera beaucoup plus cher.

Une question connexe est "est-il utile d'utiliser un logiciel anti-triche?". La réponse est: Non, sauf si une partie décente de votre jeu repose sur un mode compétitif en ligne.


0

La seule façon de protéger votre jeu contre le modding et l'édition de mémoire est de le rendre en ligne uniquement et de traiter les valeurs vitales côté serveur .

Peut-être que vous pouvez crypter les valeurs pour que les modifications de la mémoire des débutants ne les atteignent pas, mais toutes les communautés, telles que Cheat Engine , GameGuarian pour Android, ArtMoney, Game Hacker, etc. ont des gens qui vont pouvoir pirater tout ce que vous traitez client - côté et montrer aux autres comment le faire ou publier des formateurs.

C'est un effort futile pour essayer de dissuader les tricheurs côté cleint à mon avis. De plus, ce n'est pas vraiment juste, car c'est leur appareil et s'ils veulent éditer en mémoire des choses qui se passent sur leur appareil, pourquoi les gêneriez-vous? Le client est roi après tout.


0

Je veux dire que ce n'est pas si difficile. Vous pouvez garder 99% de la triche d' édition de mémoire (ces Game Guardian , Cheat Engine ect à distance par des valeurs de multiplication simples. Même la multiplication par 10 dans la mémoire gardera la plupart de la baie à distance.

Je me souviens que beaucoup de jeux flash à l'époque se multipliaient par 8 ou 6. Ou si vous êtes vraiment sérieux, codez quelques vérifications ou cryptez les valeurs en mémoire.


-2

Vous ne pouvez pas - je le répète, vous ne pouvez pas. Il n'y a pas de réponse à cette question qui ne peut être annulée par un bon hacker.

Mais alors quoi? Si quelqu'un veut tricher à votre jeu (en supposant qu'aucune perte ou réalisation monétaire n'est impliquée), qui s'en soucie? Ils se trompent seulement.

Passez plus de temps à créer un grand jeu et moins de temps à empêcher les crétins de gâcher leur propre plaisir - simple.


Le vote à la baisse, car je crois que le plaisir joue un rôle important dans cette réponse, mais est complètement raté . Au lieu d'explications supplémentaires, je soumets une réponse alternative.
Gnemlock

-3

Cryptez l'enfer! Stockez des nombres importants décomposés dans plusieurs emplacements conjoints avec d'autres valeurs afin qu'ils changent constamment! Utilisez des numéros fictifs qui, s'ils sont modifiés, leur indiquent qu'ils sont des tricheurs.

Tout peut être fêlé, mais la plupart ne prendront pas le temps de le faire.


4
... et votre code source sera alors un gâchis illisible et incontrôlable. Bonne chance pour trouver un bug ou faire un changement d'équilibre sans faire exploser le tout.
Philipp

Si je devais mettre en œuvre cette forme de prévention de la triche, je serais sincèrement déçu si les pirates se rendaient à mon mauvais plan et abandonnaient. Cela signifierait que je n'ai perdu personne d'autre que le mien.
Marcks Thomas

@MarcksThomas Eh bien, si les pirates abandonnent, vous n'avez pas perdu votre temps. C'était le but, après tout, n'est-ce pas?
Dan

Je ne suis pas entièrement d'accord avec vous sur ce @Philipp - il existe des moyens de garder le code source clair, tout en brouillant le code de production quand il part. Dans la pratique, cela implique le chiffrement et certains mambojambo numériques et en particulier le timing et le filetage :-). Nous testons avec le code source non modifié et s'il y a une erreur dans le code de production, nous le laissons brutalement planter (avec un petit retard, juste pour être mauvais :-)). Un petit changement quelque part en est également la cause.
Stormwind

Thoght je voterais pour cela comme la meilleure réponse dans cette chaîne, mais il semble que je l'ai déjà fait. Il y a beaucoup de règles mathématiques à utiliser, qui seront impossibles à rétroconcevoir simplement à cause de la complexité et surtout du timing. On peut par exemple marquer l'application pour un crash différé ou laisser sa sensibilité diverger dans un état inutile (injouable). Bien sûr, cela doit être une bonne raison pour cela.
Stormwind

-4

La façon dont je le gère dans les jeux en ligne est la suivante.

Je ne vais pas aider les hackers à me supporter. Je ne mentionnerai aucun programme que j'utilise pour ce faire. Vous devrez comprendre cela. La seule façon de vraiment les arrêter est de savoir une chose. Ils ne veulent pas que leur programme de piratage soit détecté.

Jusqu'à présent, tous les utilisateurs de hacker / formateur que j'ai vaincus. Le développeur du hack mettra un détecteur dessus pour voir si quelque chose regarde. Si quelque chose se produit, le programme pirate / formateur se fermera automatiquement de sa part ou ne fonctionnera qu'à moitié.

Par exemple, dans la saleté 3, les utilisateurs de formateurs peuvent faire tourner automatiquement votre voiture. Mais si vous installez un détecteur de votre côté, le propre détecteur de triche le détectera et fermera une partie de la triche. Pas tout cela.

La seule partie du programme d'entraîneur que j'ai vu effectuée par mon ingérence est les super freins (freinage parfait) et le spinout (voiture perdant le contrôle sans raison). J'ai surtout des jeux de course comme vous pouvez le voir. Ils proviennent tous de codemasters et malheureusement, ces jeux sont souvent maltraités par les tricheurs.

Je crois que je ne peux les arrêter qu'à cause de la façon dont nous nous connectons les uns aux autres en jouant. C'est probablement la même raison pour laquelle ils pourraient provoquer un spin-off pour un joueur normal qui n'a aucune idée de la sécurité.

Ma plus grande suggestion est d'obtenir un très bon antivirus de sécurité Internet (Norton, Mcafee, Avast et tous les autres av de merde ne vous aideront pas). Soyez prêt à dépenser de 50 $ à 90 $ sur un très bon av que je n'ai pas listé, puis apprenez à l'expérimenter pour jouer en ligne.

Cela demande beaucoup de patience et beaucoup de cobayes. J'ai eu beaucoup de succès avec cela, mais aussi beaucoup d'années d'expérience dans le traitement des utilisateurs de formateurs. Je ne connais aucun code. Cela n'a rien à voir avec ça. La partie code est verrouillée et vous ne pouvez rien y faire. Vous pourriez penser que vous le pouvez, mais il n'est tout simplement pas possible d'arrêter ce qu'ils font de leur côté.

Vous pouvez toujours les interdire avec des choses comme VAC, car Vac détecte les signatures et certains comportements et modifications de fichiers qu'il connaît déjà. Il interdit uniquement le compte associé à la triche.

Mais ils n'arrêtent pas vraiment la triche. Ils ne peuvent pas s'en soucier. Ils bannissent simplement votre compte. L'autre chose que je voudrais mentionner concerne Wolfenstein ET. Un jeu très ancien. Mais pour moi, c'était la mesure de sécurité la meilleure et la plus dure de toutes.

Je n'ai jamais vu comment ils l'ont fait. Je leur ai donné l'idée de ce qui arrêterait réellement les tricheurs et j'ai suggéré à l'un des dévolopeurs jaymod d'interdire par voie de guide. Qu'est-ce qu'un guide facilement accessible lorsque vous jouez à des jeux? Cartes graphiques. La raison pour laquelle ils ont implémenté cela est parce que les gens changent simplement les adresses IP et que vous n'avez pas besoin d'un compte pour le jeu, vous pouvez donc simplement changer votre nom, votre adresse mac qui changerait également votre adresse IP.

Mais quand ils ont interdit la carte graphique. Si vous vouliez rejouer, vous deviez RMA votre carte ou en acheter une nouvelle. Mais c'est hors sujet. Il s'agit de détection et je suis parti sur une tangente. Malheureusement, je ne joue plus autant à des jeux maintenant. Mais mec, j'aimais tous mes cochons gunea. Surtout ceux des voitures de projet. Le seul jeu de course qui n'était pas codemasters. Mais toujours effectué par le même non-sens.


Je vois plusieurs problèmes avec cette réponse. 1. Format. Il est difficile à lire en raison de la structure et en raison de l'incohérence grammaticale, il y a des parties où je ne peux pas comprendre ce que vous voulez dire. 2. Vous semblez parler beaucoup du sujet en tant que joueur jouant contre d'autres tricheurs . Ce serait pertinent sur Arqade , mais nous sommes plus concernés par le développement de jeux . 3. Vous dites "n'utilisez pas ceux que j'ai mentionnés", en ce qui concerne l'antivirus. Vous mentionnez "Norton, mcafe, avast et tous les autres merdiques . Cela ne nous dit pas quoi utiliser , surtout lorsque vous nommez certains des mieux classés.
Gnemlock

La dernière moitié entière semble être une anecdote sur la façon dont vous pensez une société de jeux vidéo a pris vos conseils (je crois que vous allez à l'effort de dire vous n'êtes pas sûr de savoir comment le faire, donc j'interprète que votre explication plus de la façon dont il est fait doit être basé sur la spéculation , pas sur les faits).
Gnemlock
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.