Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

Python - 4: Développons un anti-cheat en Python


Messages recommandés

  • Robot

Yop !

 

Autre partie, avec celle-ci vous allez pouvoir annuler presque tous les cheats pour les débutants (m2bob, lalaker etc....).

 

Quel est le principe ?

J'ai précisé "débutant" car on peut contourner cette méthode, mais peut évident pour les débutants.

Notre client va scan en permanence les processus démarrés, et si il y en a un qui correspond à notre BlackList PAF ! :leloup:

Pour ça, on va reprendre notre ancien fichier, aller tout à la fin, et on code ! Let's go !

 


 

D'abord, vous allez devoirs ajouter ces imports :

import thread
import time
Si vous avez modifié le fichier, vérifiez que vous ne les avez pas déjà.

Si vous commencez sur un nouveau fichier ajoutez aussi :

import os
 
On va créer une fonction qu'on va nommer processf :
import osimport thread
import timedef 
	processf():
 
Bien, on va maintenant mettre tout dans une structure try pour éviter les erreurs :
import os
import thread
import time
def processf():
  try:
 
On crée aussi l'except: si ça échoue, et on dit au programme d'attendre, de "dormir" pendant 5 secondes :
import os
import thread
import time

def processf():
  	try:	
      pass	except:	time.sleep(5) # attendre 5 secondes
 
Bien, maintenant on va faire ce qu'on appelle une boucle infinie, avec un while. On va lui dire, "Le temps que 1 est égale à 1 tu fais ça !" Et comme vous vous doutez, un sera toujours égale à un, on appelle ça une boucle infinie.
import os
import thread
import time
def processf():
  try:	
    while 1 == 1:
      except:	time.sleep(5)
 
Tout ce qui va se trouver après le while et avec une tabulation en plus va se répéter à l'infini !

Bien, créons maintenant notre liste de processus,notre BlackList, vous allez vous même la remplir, je vais mettre deux trucs simples : 

 

import os
import thread
import time
def processf():
  try:
    while 1 == 1:
      Black_List = ["skype.exe", "chrome.exe"]
      except:	time.sleep(5)
 

Ici bien sûr les processus sont bidons ! Je ne connais pas les processus de Mt2bob etc, à voue de les chercher avec votre gestionnaire des tâches.

Bien, maintenant, pour chaque membre, nous allons ouvrir notre liste de processus. Nous allons ensuite la mettre entièrement en minuscule. Cela vous donne l'avantage de ne pas être gêner avec la casse :

import osimport thread
import time
def processf():
  try:
    while 1 == 1:
      Black_List = ["inyector.exe","cheatengine-x86_64.exe","ollydbg.exe","skype.exe"]
      for p in os.popen("tasklist"):			process = p.lower()
        except:	time.sleep(5)
 

Bien, maintenant nous allons devoir vérifier si pour chaque membre de notre Black_List on peut trouver son nom dans notre process qui contient la liste de tous les processus démarrés.

for Member in Black_List:
Ensuite, si il trouve le Member dans process :
if process.find(Member) != -1:
On isole le nom du processus :
p = process.split()
Puis on le ferme :
os.popen("taskkill /im %s /f" % p[0])
Puis, on lui dit d'attendre 5 secondes avant de recommencer :
time.sleep(5)
 

Bien ! ça donne :

 

import os
import thread
import time
def processf():
try:
  while 1 == 1:		Black_List = ["inyector.exe","cheatengine-x86_64.exe","ollydbg.exe","skype.exe"]
    for p in os.popen("tasklist"):			process = p.lower()
      for Member in Black_List:
        if process.find(Member) != -1:
          p = process.split()
          os.popen("taskkill /im %s /f" % p[0])
          time.sleep(5)
          except:	time.sleep(5)
 

Il ne nous reste plus car relancer la fonction en cas d'erreur, ajoutez alors:

import os
import thread
import time
def processf():
try:
  while 1 == 1:
    Black_List = ["inyector.exe","cheatengine-x86_64.exe","ollydbg.exe","skype.exe"]
    for p in os.popen("tasklist"):
      process = p.lower()
      for Member in Black_List:
        if process.find(Member) != -1:
          p = process.split()
          os.popen("taskkill /im %s /f" % p[0])
          time.sleep(5)
          except:time.sleep(5)thread.start_new_thread(processf, ())
 

On utilisez ici les threads. C'est pour le lancer en parallèle par abus de langage on va dire.

Voilà ! N'oubliez pas de l'import si ce n'est pas déjà fait.

 

Je vous laisse le soin de remplir la liste de processus !

 

Bonne chance !

  • Metin2 Dev 1
  • Love 1

french_banner.gif

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 0

      OldEraMT2 | Classique 2009 Oldschool | Niveau 99 | 7 langues | Sans pay2win | Bêta fermée

    2. 6

      problème de connexion à mon serveur local (je suis débutant dans ce genre d'entreprise )

    3. 2

      problème de lancement serveur

    4. 9
    5. 0

      [PVM/PVP] ATLAX2 - EASY PLAY

    6. 2

      problème de lancement serveur

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.