Autor
|
Tema: Matar procesos en WinXP (Leído 4,017 veces)
|
Ch3ck
Desconectado
Mensajes: 337
Elite
|
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
|
|
|
En línea
|
|
|
|
|
Ch3ck
Desconectado
Mensajes: 337
Elite
|
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
Mensajes: 284
|
checa este codigo que hice: Option Explicit Private Const TH32CS_SNAPHEAPLIST = &H1 Private Const TH32CS_SNAPPROCESS = &H2 Private Const TH32CS_SNAPTHREAD = &H4 Private Const TH32CS_SNAPMODULE = &H8 Private Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE) Private Const TH32CS_INHERIT = &H80000000 Private Const MAX_PATH As Integer = 260 Private Const PROCESS_TERMINATE = &H1 Private Type PROCESSENTRY32 dwSize As Long cntUsage As Long th32ProcessID As Long th32DefaultHeapID As Long th32ModuleID As Long cntThreads As Long th32ParentProcessID As Long pcPriClassBase As Long dwFlags As Long szExeFile As String * MAX_PATH End Type Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long Private Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long) Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Public Sub MatarProceso(proceso$) Dim hSnapShot#, ProcesoC#, ResP#, ProcesoC2#, R#, uProcess As PROCESSENTRY32 hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&) uProcess.dwSize = Len(uProcess) R = Process32First(hSnapShot, uProcess) Do While R If Left$(uProcess.szExeFile, IIf(InStr(1, uProcess.szExeFile, Chr$(0)) > 0, InStr(1, uProcess.szExeFile, Chr$(0)) - 1, 0)) = proceso Then ProcesoC = uProcess.th32ProcessID ProcesoC2 = OpenProcess(PROCESS_TERMINATE, True, ProcesoC) ResP = TerminateProcess(ProcesoC2, 99) CloseHandle ProcesoC2 Exit Do Else R = Process32Next(hSnapShot, uProcess) End If Loop CloseHandle hSnapShot End Sub Private Sub Command1_Click() MatarProceso "notepad.exe" End Sub
Estoy en winxp y me funca 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
Mensajes: 121
|
estoy en XP y funciona de maravilla.
|
|
|
En línea
|
|
|
|
nhaalclkiemr
Desconectado
Mensajes: 1.678
Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92
|
La API TerminateProcess es reconocida por la heurística de muchos antivirus, mirate los comandos taskkill y tskillShell 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
Mensajes: 284
|
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
Mensajes: 1.678
Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92
|
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
Mensajes: 284
|
(: 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: Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Private Sub Command1_Click() Dim RutaSys$, Buffer% RutaSys = String(255, Chr$(0)) Buffer = GetSystemDirectory(RutaSys, 255) RutaSys = Left$(RutaSys, Buffer) If Dir$(RutaSys & "\taskkill.exe") <> "" Then Shell "taskkill.exe /IM " & ProcesoTxt.Text End If End Sub
bueno, saludos (;
|
|
|
En línea
|
|
|
|
nhaalclkiemr
Desconectado
Mensajes: 1.678
Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92
|
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% |
|
|
|
|
|