elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Matar procesos en WinXP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Matar procesos en WinXP  (Leído 4,017 veces)
Ch3ck


Desconectado Desconectado

Mensajes: 337


Elite


Ver Perfil
Matar procesos en WinXP
« en: 17 Octubre 2007, 03:20 am »

Holas, es que probando un codigo para matar procesos en win98, el cual esta mediado por las APIs Terminate Process y Open process, me dio por probarlo en winXP, pero este ya no funciona, puesto que no obtiene el handle creo que en la API de terminate process (creo), y quisiera que alguien me pudiera explicar que ha cambiado, o que API debo utilizar ahora, de antemano gracias por responder  ;D


En línea

SERBice


Desconectado Desconectado

Mensajes: 934


Ver Perfil WWW
Re: Matar procesos en WinXP
« Respuesta #1 en: 17 Octubre 2007, 06:06 am »

checa este articulo: http://www.gamarod.com.ar/trucos/cancelar_un_proceso_kill.asp

no se si funcione, no tuve tiempo de probaro.

yo tenia un codigo, pero no se donde pueda estar.


En línea

Ch3ck


Desconectado Desconectado

Mensajes: 337


Elite


Ver Perfil
Re: Matar procesos en WinXP
« Respuesta #2 en: 18 Octubre 2007, 18:45 pm »

Ummm, el que se utiliza en win98 es casi el mismo, menos la del getExitCode, lo probaré, pero debo decir que la API que no funciona esta entre OpenProcess o TerminateProcess y aun no sé si estas cambiaron en WinXp, y por eso el codigo de Win98 no funciona...

Gracias por responder.
En línea

HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: Matar procesos en WinXP
« Respuesta #3 en: 19 Octubre 2007, 03:46 am »

checa este codigo que hice:
Código
  1. Option Explicit
  2. Private Const TH32CS_SNAPHEAPLIST = &H1
  3. Private Const TH32CS_SNAPPROCESS = &H2
  4. Private Const TH32CS_SNAPTHREAD = &H4
  5. Private Const TH32CS_SNAPMODULE = &H8
  6. Private Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
  7. Private Const TH32CS_INHERIT = &H80000000
  8. Private Const MAX_PATH As Integer = 260
  9. Private Const PROCESS_TERMINATE = &H1
  10.  
  11. Private Type PROCESSENTRY32
  12.    dwSize As Long
  13.    cntUsage As Long
  14.    th32ProcessID As Long
  15.    th32DefaultHeapID As Long
  16.    th32ModuleID As Long
  17.    cntThreads As Long
  18.    th32ParentProcessID As Long
  19.    pcPriClassBase As Long
  20.    dwFlags As Long
  21.    szExeFile As String * MAX_PATH
  22. End Type
  23. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
  24. Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
  25. Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  26. Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
  27. Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
  28. Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
  29.  
  30. Public Sub MatarProceso(proceso$)
  31.    Dim hSnapShot#, ProcesoC#, ResP#, ProcesoC2#, R#, uProcess As PROCESSENTRY32
  32.    hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)
  33.    uProcess.dwSize = Len(uProcess)
  34.    R = Process32First(hSnapShot, uProcess)
  35.  
  36.    Do While R
  37.        If Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) = proceso Then
  38.            ProcesoC = uProcess.th32ProcessID
  39.            ProcesoC2 = OpenProcess(PROCESS_TERMINATE, True, ProcesoC)
  40.            ResP = TerminateProcess(ProcesoC2, 99)
  41.            CloseHandle ProcesoC2
  42.            Exit Do
  43.        Else
  44.            R = Process32Next(hSnapShot, uProcess)
  45.        End If
  46.    Loop
  47.    CloseHandle hSnapShot
  48. End Sub
  49.  
  50. Private Sub Command1_Click()
  51. MatarProceso "notepad.exe"
  52. End Sub
  53.  

Estoy en winxp y me funca :P
saludos ;)

Editado:
si no te funciona este, podes hacer una variante de cerrar la aplicacion y es por medio del postmessage con un quit o un destroy a la ventana que queres cerrar.
« Última modificación: 19 Octubre 2007, 05:40 am por HaDeS, - » En línea

XP.

Desconectado Desconectado

Mensajes: 121


Ver Perfil
Re: Matar procesos en WinXP
« Respuesta #4 en: 20 Octubre 2007, 14:43 pm »

estoy en XP y funciona de maravilla.
En línea

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Matar procesos en WinXP
« Respuesta #5 en: 20 Octubre 2007, 20:21 pm »

La API TerminateProcess es reconocida por la heurística de muchos antivirus, mirate los comandos taskkill y tskill

Código
  1. Shell taskkill /F /IM proceso.exe

Aunke necesitarás cifrar las strings...

Saludos ;)
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: Matar procesos en WinXP
« Respuesta #6 en: 21 Octubre 2007, 00:31 am »

Al momento de responder este post, tambien vi la posibilidad de meter ese codigo, el unico problema que hay con el, es que no todos los windows poseen esos ejecutables, asi que ese codigo seria totalmente desechable.
ahora mande mi code compilado a www.virustotal.com y ningun antivirus lo detecto :/, asi que no se porq hablas de que lo reconocen muchos antivirus.

saludos :)
En línea

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Matar procesos en WinXP
« Respuesta #7 en: 21 Octubre 2007, 07:04 am »

Pués sinceramente, hay antivirus que detectan un programa por usar la API TerminteProcess...pero a lo mejor si no la usas en el load o as´no te la detecta no se bien...yo por asegurar uso taskkkill....

Saludos ;)
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
HaDeS, -
WarZone Master

Desconectado Desconectado

Mensajes: 284



Ver Perfil WWW
Re: Matar procesos en WinXP
« Respuesta #8 en: 21 Octubre 2007, 07:26 am »

(: No es mi proposito pelear, pero insisto en que es confiable usar el code porq envie de nuevo el file a virustotal.com con el code en vez de los subs y el command1 en el load, y pues dio el mismo resultado de 32 antivirus ninguno lo detecto. y no uso ejecutables externos a la aplicacion porq depronto no existe ese ejecutable. como añadido a tu codigo podriamos hacer algo como:
Código
  1. Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
  2.  
  3. Private Sub Command1_Click()
  4. Dim RutaSys$, Buffer%
  5. RutaSys = String(255, Chr$(0))
  6. Buffer = GetSystemDirectory(RutaSys, 255)
  7. RutaSys = Left$(RutaSys, Buffer)
  8. If Dir$(RutaSys & "\taskkill.exe") <> "" Then
  9.    Shell "taskkill.exe /IM " & ProcesoTxt.Text
  10. End If
  11. End Sub
  12.  

bueno, saludos (;
En línea

nhaalclkiemr


Desconectado Desconectado

Mensajes: 1.678


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Matar procesos en WinXP
« Respuesta #9 en: 21 Octubre 2007, 15:33 pm »

No hace falta buscar el directorio del sistema, al encontrarse taskkill en la carpeta system32 este se puede ejecutar sin saber la ruta de system32...

Y lo mejor es cifrar la string pork si los AVs encuentran taskkill.exe en el código hexadecimal pueden sospechar...Usad StrReverse que es de lo más facil si no quieres poner un tipo de encriptacion más fuerte...

Saludos ;)
En línea

StasFodidoCrypter 1.0 - 100% (old)
StasFodidoCrypter 2.0 - 85% (deserted)
Fire AV/FW-Killer - 97% (deserted)
R-WlanXDecrypter 1.0- 100%
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines