Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: seba123neo en 21 Octubre 2009, 02:38 AM

Título: [SOURCE] Native Api - NtSuspendProcess/NtResumeProcess
Publicado por: seba123neo en 21 Octubre 2009, 02:38 AM
Hola, este es un ejemplo de estas 2 api's nativas de NTDLL.DLL, la api NtSuspendProcess sirve como dice la palabra para suspender un proceso, es como si lo dejaria trabado, y la otra NtResumeProcess sirve para liberarlo y reestablecerlo a la normalidad, es muy facil el funcionamiento no hay mucha vuelta de tuerca, simplemente se les pasa el handle del proceso abierto con OpenProcess y listo.aca en el ejemplo el PID que usa OpenProcess esta fijo, o sea al PID del proceso que quieran usar como ejempo lo van a tener que averiguar ustedes  :P, lo hago asi para no ensuciar el codigo fuente, ya que para obtener el PID hay millones de paginas para ver como hacerlo y por eso se los dejo a ustedes.supongamos entonces que nuestro PID es el 1384 y supongamos pertenece a la calculadora de windows.

Código (vb) [Seleccionar]
'****************************************************************
' Procedure : SuspendProcess
' Author    : seba123neo
' Date      : 20/10/2009
' Purpose   : Suspend/Resume Process
'****************************************************************

Option Explicit

'NTDLL.DLL
Private Declare Function NtSuspendProcess Lib "ntdll.dll" (ByVal hProc As Long) As Long
Private Declare Function NtResumeProcess Lib "ntdll.dll" (ByVal hProc As Long) As Long

Private Enum TYPESUSPEND
   Suspend = 0
   Release = 1
End Enum

Private Const SYNCHRONIZE = &H100000
Private Const STANDARD_RIGHTS_REQUIRED = &HF0000
Private Const PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)

Private Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Sub Command1_Click()
   Call SuspendProcess(1384, Suspend)
End Sub

Private Sub Command2_Click()
   Call SuspendProcess(1384, Release)
End Sub

Private Sub SuspendProcess(ByVal pPID As Long, ByVal pTypeSuspend As TYPESUSPEND)
   Dim vHandle As Long
   vHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pPID)
   If vHandle <> 0 Then
       Select Case pTypeSuspend
           Case 0: NtSuspendProcess vHandle
           Case 1: NtResumeProcess vHandle
       End Select
   End If
   CloseHandle vHandle
End Sub


saludos.
Título: Re: [SOURCE] Native Api - NtSuspendProcess/NtResumeProcess
Publicado por: LeandroA en 21 Octubre 2009, 03:57 AM
Muy bueno Seba ;-), le corta todo los hilos al proceso.

Saludos