[VB.NET]Suspend/Resume process

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

M

Membre supprimé 245833

Bonjour tout le monde.
Aujourd'hui je vous partage un tuto qui ma été proposé par Evaelis pour faire mon bypass S4League.
Donc aujourd'hui je vais vous apprendre à faire un programme qui Suspend/Resume un processus, avec la liste des process et de les kills.

Donc il nous faut:
Microsoft Visual Basic
Et c'est tout ;)

Tutoriel:
On va mettre 3 Button:
-Button1 : Suspend
-Button2 : Suspend
-Button3 : ProcessList
On va mettre 2 PictureBox:
-PictureBox1 : BackColor = Red, Image = S4League
-PictureBox2 : BackColor = Red, Image = HGWC
On va mettre 4 Label:
-Label1 : "Status:"
-Label2 : "Non suspend" & ForeColor = Red
-Label3 : "Status:"
-Label4 : "Non suspend" & ForeColor = Red
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
On va rajouter une 2ème Form:
On va mettre 1 ListBox
-ListBox1 : Sorted = True
On va mettre 4 Button:
-Button1 : "Kill Process"
-Button2 : "Suspend"
-Button3 : "Refresh"
-Button4 : "Resume"
Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!

On va rajouter un module, ca va nous servir pour les fonctions resumeprocess et suspendprocess.
On va mettre ce code:
Public Enum ThreadAccess As Integer
TERMINATE = (&H1)
SUSPEND_RESUME = (&H2)
GET_CONTEXT = (&H8)
SET_CONTEXT = (&H10)
SET_INFORMATION = (&H20)
QUERY_INFORMATION = (&H40)
SET_THREAD_TOKEN = (&H80)
IMPERSONATE = (&H100)
DIRECT_IMPERSONATION = (&H200)
End Enum
Revenons à la Form1 !
On devra mette des declare functions ! Voilà les functions à déclarer:
Private Declare Function SuspendThread Lib "kernel32.dll" (ByVal hThread As Long) As Long
Private Declare Function ResumeThread Lib "kernel32.dll" (ByVal hThread As Long) As Long
Public Declare Function OpenThread Lib "kernel32.dll" (ByVal dwDesiredAccess As ThreadAccess, ByVal bInheritHandle As Boolean, ByVal dwThreadId As UInteger) As IntPtr
Public Declare Function SuspendThread Lib "kernel32.dll" (ByVal hThread As IntPtr) As UInteger
Public Declare Function ResumeThread Lib "kernel32.dll" (ByVal hThread As IntPtr) As UInteger
Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal hHandle As IntPtr) As Boolean
Maintenant le plus important !
On a besoin de mettre 2 Sub ! SuspendProcess et ResumeProcess, donc je vous donne le code:
Private Sub SuspendProcess(ByVal process As System.Diagnostics.Process)
For Each t As ProcessThread In process.Threads
Dim th As IntPtr
th = OpenThread(ThreadAccess.SUSPEND_RESUME, False, t.Id)
If th <> IntPtr.Zero Then
SuspendThread(th)
CloseHandle(th)
End If
Next
End Sub
Private Sub ResumeProcess(ByVal process As System.Diagnostics.Process)
For Each t As ProcessThread In process.Threads
Dim th As IntPtr
th = OpenThread(ThreadAccess.SUSPEND_RESUME, False, t.Id)
If th <> IntPtr.Zero Then
ResumeThread(th)
CloseHandle(th)
End If
Next
End Sub

Alors maintenant on veut suspend le process S4Client.exe donc on à besoin de ce code:
If Button1.Text = "Suspend" Then
Dim game As Process() = Process.GetProcessesByName("S4Client")
SuspendProcess(game(0))
PictureBox1.BackColor = Color.Green
Label2.ForeColor = Color.Green
Label2.Text = "Suspend"
Button1.Text = "Resume"
Else
Dim game As Process() = Process.GetProcessesByName("S4Client")
ResumeProcess(game(0))
PictureBox1.BackColor = Color.Red
Label2.ForeColor = Color.Red
Label2.Text = "Pas suspend"
Button1.Text = "Suspend"
End If
Explications:
-Si le button1.texte = "Suspend" Alors
Game = un process = Process.getprocessbyname("S4Client") (Ici on dit que Game = le process S4Client.exe)
Après on dit SuspendProcess(game(0)) (On va suspend S4Client)
Après c'est simple :)
Sinon​
Game = un process = Process.getprocessbyname("S4Client") (Ici on dit que Game = le process S4Client.exe
ResumeProcess(game(0)) (On va resume S4Client)​
Maintenant on va double clique sur Button2:
Et on va mettre ce code:
If Button2.Text = "Suspend" Then
Dim game As Process() = Process.GetProcessesByName("HGWC")
SuspendProcess(game(0))
PictureBox2.BackColor = Color.Green
Label3.ForeColor = Color.Green
Label3.Text = "Suspend"
Button1.Text = "Resume"
Else
Dim game As Process() = Process.GetProcessesByName("HGWC")
ResumeProcess(game(0))
PictureBox2.BackColor = Color.Red
Label3.ForeColor = Color.Red
Label3.Text = "Pas suspend"
Button2.Text = "Suspend"
End If
Explication:
Même Explication qu'en haut​
Maintenant on veut voir la liste des process ! Donc double clique sur Button3:
Form2.Show()
Fini pour la Form1. Passons à la Form2​

Double clique sur la Form2 pour avoir un FormLoad.
Donc on veut que la listbox à comme items les process en cours.
Donc on a besoin de ce code:
For Each p As Process In Process.GetProcesses
ListBox1.Items.Add(p.ProcessName.ToString)
Next
En français:
Pour chaque p Comme Process Dans Process.GetProcesses
ListBox1.Items.Add (p.ProcessName.ToString)
Suivant
Maintenant double clique sur le button1 pour kill un process select.
Et on a besoin de sa:
Dim myProcesses As Process() = Process.GetProcessesByName(ListBox1.SelectedItem)
Dim myProcess As Process
For Each myProcess In myProcesses
myProcess.Kill()
Next myProcess
On dit que myProcesse est un process et on veut le process selectionné dans la listbox1.
Donc la on a encore besoin de suspend et resume.
Donc en haut de tout les codes(En dessous de Public Class2):
Private Declare Function SuspendThread Lib "kernel32.dll" (ByVal hThread As Long) As Long
Private Declare Function ResumeThread Lib "kernel32.dll" (ByVal hThread As Long) As Long
Public Declare Function OpenThread Lib "kernel32.dll" (ByVal dwDesiredAccess As ThreadAccess, ByVal bInheritHandle As Boolean, ByVal dwThreadId As UInteger) As IntPtr
Public Declare Function SuspendThread Lib "kernel32.dll" (ByVal hThread As IntPtr) As UInteger
Public Declare Function ResumeThread Lib "kernel32.dll" (ByVal hThread As IntPtr) As UInteger
Public Declare Function CloseHandle Lib "kernel32.dll" (ByVal hHandle As IntPtr) As Boolean
Private Sub SuspendProcess(ByVal process As System.Diagnostics.Process)
For Each t As ProcessThread In process.Threads
Dim th As IntPtr
th = OpenThread(ThreadAccess.SUSPEND_RESUME, False, t.Id)
If th <> IntPtr.Zero Then
SuspendThread(th)
CloseHandle(th)
End If
Next
End Sub
Private Sub ResumeProcess(ByVal process As System.Diagnostics.Process)
For Each t As ProcessThread In process.Threads
Dim th As IntPtr
th = OpenThread(ThreadAccess.SUSPEND_RESUME, False, t.Id)
If th <> IntPtr.Zero Then
ResumeThread(th)
CloseHandle(th)
End If
Next
End Sub
Maintenant qu'on a mit ce code qui va nous servir pour Suspend et Resume, on double clique sur Button2:
Dim game As Process() = Process.GetProcessesByName(ListBox1.SelectedItem)
SuspendProcess(game(0))

On veut refresh la listbox donc:
ListBox1.Refresh()
On veut aussi resume un process donc tout simplement:
Dim game As Process() = Process.GetProcessesByName(ListBox1.SelectedItem)
ResumeProcess(game(0))

Et voilà le tutorial est finis ! Je ne réponderai pas au question sur: "Comment suspend Xtrap ?" Cause: J'ai eu beaucoup de mal, donc Evaelis m'a aidé, et je ne partage pas le code qui m'a donné. Voilà tout. Ce tutorial marche sur tout les process !​
 

Evaelis

La Voix de la Sagesse
V
Ancien staff
Apr 28, 2010
22,949
468
1,699
Valhalla
On va rajouter un module, ca va nous servir pour les fonctions resumeprocess et suspendprocess.
Pas besoin de rajouter de module.
En français:
Citation:
Pour chaque p Comme Process Dans Process.GetProcesses
ListBox1.Items.Add (p.ProcessName.ToString)
Suivant
Pour chaque processus de la liste qu'on appel p
Ajouter dans la listbox(Nom du processus sous form de string)
Ensuite
 

Ben

Master Chief
V
Ancien staff
Mar 3, 2011
4,069
3
944
Un peut partout.
Hé bhé tu va chercher loin toi dis donc ^^ il y a plus simple et beaucoup moins long, tu déclare plusieurs choses inutile et des fois en double, mais sinon à part ça c'est assé complet et bien expliqué (même si plus d’explications aux niveaux des déclarations serrais un plus)

edit: apparemment tu ne comprends pas trop ce que tu explique, va chercher l'erreur o_O
.adios
 
Last edited:
M

Membre supprimé 245833

Hé bhé tu va chercher loin toi dis donc ^^ il y a plus simple et beaucoup moins long, tu déclare plusieurs choses inutile et des fois en double, mais sinon à part ça c'est assé complet et bien expliqué (même si plus d’explications aux niveaux des déclarations serrais un plus), merci pour le partage ;)
D'accord, j'ai ptet mis trop de déclare, à beaucoup plus simple ? Pas grave ;)
 

Misuki

Git Wizard en freelance
V
Ancien staff
Jun 15, 2012
2,303
66
954
Y a beaucoup de point noir sur les explications, c'est dommage. Et effectivement comme le dis Ben, tu déclare beaucoup de choses pour rien, et ya plus optimisé.
 
May 23, 2013
508
0
322
'merica
N'ayant testé que sur 32bits, je ne savais pas qu'il y avait des différences avec les versions 64bits.
Mais merci de me l'avoir fait remarquer
 
Aug 30, 2013
884
0
922
Correction (désolé des anciennes fautes)

Euh désolé de dire sa mais je trouve que tu n'expliques pas assez les choses surtout quand tu nous dis de mettre telle chose ou le met on ? Et met un tutoriel vidéo sinon comme ça se sera mieux non ? Parce qu'avec ton tutoriel j'arrive pas à créer mon suspender jusqu'à ou on doit placer ce qu'il faut etc donc bon ... Sinon merci :D
 
Last edited:
Apr 26, 2011
1,315
2
944
26
In my home
Discord
brokeos
Très bon tuto, mais comme l'a dit Ben, tu ne comprends pas (je pense) ce que tu expliques, essayes de comprendre et après explique nous avec tes mots ;)