Página 1 de 1
[Source]Taskill (para matar proccesos del admin)
Publicado: 02 Dic 2010, 21:30
por m4rtyr
bueno lo necesitava , que hace = mata todos los processos creado por vos Administrator // no sirve on guest
Código: Seleccionar todo
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
void main(int argc, TCHAR *argv[])
{
char temp[MAX_PATH]={'\0'};
char name[MAX_PATH]={'\0'};
strcpy(temp,argv[0]);
for(int i=strlen(temp);temp[i]!='\\';i--);
strcpy(name,&temp[i+1]);
temp[i+1]='\0';
SetCurrentDirectory(temp);
DeleteFileA("test.txt");
system("tasklist /v>>test.txt");
HANDLE hFile;
DWORD wmWritten;
DWORD sizef;
hFile = CreateFile("test.txt",GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
sizef = GetFileSize(hFile,NULL);
LPVOID lpvResult;
lpvResult = VirtualAlloc(NULL,sizef,0x1000,0x40);
if (GetLastError()==0){
ReadFile(hFile,(char *)lpvResult,sizef,&wmWritten,NULL);}
char *a=(char *)lpvResult;
int x;
for(i=0;i<sizef;i++)
if (a[i]==0x0D && a[i+1]==0x0A){
x=i;
while(a[x]!='\\')
x++;
if(a[x+1]=='A'){
i+=2;
if(strncmp(&a[i],"Explorer.EXE",12)==0 ||strncmp(&a[i],"cmd.exe",7)==0)
goto skip;
strcpy(temp,"taskkill /im ");
strcat(temp,"\"");
for(;a[i]!='.';i++)
strncat(temp,&a[i],1);
strcat(temp,".exe\" /f");
printf(temp);
system(temp);
memset(temp,0,strlen(temp));
skip:;
}
}
CloseHandle(hFile);
}

saludos ;)
Re: Taskill (para matar proccesos del admin)
Publicado: 02 Dic 2010, 22:36
por TRiGuNZ
Me ha dado Error del Sistema.
Revisa-lo porque no me ha matado ningún proceso de Admin.
TRiGuNZ
gL.
Re: Taskill (para matar proccesos del admin)
Publicado: 03 Dic 2010, 19:18
por m4rtyr
mi OS es Win XP sp2
creo que tienes Win7 o Vista , y el commando tasklist /v es differente
el programa crea un archivo con nombre test.txt , subelo aqui o lo mandas en mp :)
saludos
Re: Taskill (para matar proccesos del admin)
Publicado: 03 Dic 2010, 19:25
por TRiGuNZ
Mi S.O. es Windows XP SP3
Re: Taskill (para matar proccesos del admin)
Publicado: 03 Dic 2010, 19:29
por m4rtyr
el programa crea un archivo con nombre test.txt , subelo aqui o lo mandas en mp
Re: Taskill (para matar proccesos del admin)
Publicado: 03 Dic 2010, 19:38
por TRiGuNZ
Te lo envié por MP
Re: Taskill (para matar proccesos del admin)
Publicado: 03 Dic 2010, 19:55
por m4rtyr
nuevo codigo
Código: Seleccionar todo
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <ctype.h>
void main(int argc, TCHAR *argv[]){
char username[MAX_PATH]={'\0'};
DWORD size=MAX_PATH;
GetUserName(username,&size);
char temp[MAX_PATH]={'\0'};
char name[MAX_PATH]={'\0'};
strcpy(temp,argv[0]);
for(int i=strlen(temp);temp[i]!='\\';i--);
strcpy(name,&temp[i+1]);
temp[i+1]='\0';
SetCurrentDirectory(temp);
DeleteFileA("test.txt");
system("tasklist /v>>test.txt");
HANDLE hFile;
DWORD wmWritten;
DWORD sizef;
hFile = CreateFile("test.txt",GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
sizef = GetFileSize(hFile,NULL);
LPVOID lpvResult;
lpvResult = VirtualAlloc(NULL,sizef,0x1000,0x40);
if (GetLastError()==0){
ReadFile(hFile,(char *)lpvResult,sizef,&wmWritten,NULL);}
char *a=(char *)lpvResult;
int x;
for(i=0;i<sizef;i++)
if (a[i]==0x0D && a[i+1]==0x0A){
x=i;
while(a[x]!='\\')
x++;
if(strncmp(&a[x+1],username,strlen(username))==0){
i+=2;
if(a[i]=='E' || a[i]=='e')
for(int j=i;a[j]!='.';j++)a[j]=toupper(a[j]);
if(strncmp(&a[i],"EXPLORER.EXE",12)==0 ||strncmp(&a[i],"cmd.exe",7)==0)
goto skip;
strcpy(temp,"taskkill /im ");
strcat(temp,"\"");
for(;a[i]!='.';i++)
strncat(temp,&a[i],1);
strcat(temp,".exe\" /f");
printf(temp);
system(temp);
memset(temp,0,strlen(temp));
skip:;
}
}
CloseHandle(hFile);
}
prueba y dices si sirve o no ;)
saludos
Re: Taskill (para matar proccesos del admin)
Publicado: 03 Dic 2010, 22:19
por TRiGuNZ
Haber...
una cosa es matar los procesos de administrador, la otra es apagarme el equipo y no guardarme los cambios realizados, acabas de provocarme una putada que no te puedes imaginar, pero bueno... todo es recuperable por suerte, aunque con ciertas dificultades.
Deberias poner la opcion ABORTAR en caso de arrepentimiento del usuario.
El programa funciona, pero a un precio muy alto.
Re: Taskill (para matar proccesos del admin)
Publicado: 03 Dic 2010, 22:49
por m4rtyr
hahaha , una pregunta el explorer.exe se termina ?? en el mio no lo hace
puedes abortar con Crtl + C
saludos
Re: Taskill (para matar proccesos del admin)
Publicado: 03 Dic 2010, 22:57
por TRiGuNZ
No lo se, no uso explorer
Arregla eso, una cosa es matar los procesos del administrador, la otra matar los del system.
Re: Taskill (para matar proccesos del admin)
Publicado: 04 Dic 2010, 05:42
por linkgl
TRiGuNZ escribió:No lo se, no uso explorer
Arregla eso, una cosa es matar los procesos del administrador, la otra matar los del system.
xD creo que con explorer te refieres a Internet Explorer, m4rty se refiere al proceso explorer.exe osea tu escritorio xD
Re: Taskill (para matar proccesos del admin)
Publicado: 04 Dic 2010, 12:34
por TRiGuNZ
linkgl escribió:TRiGuNZ escribió:No lo se, no uso explorer
Arregla eso, una cosa es matar los procesos del administrador, la otra matar los del system.
xD creo que con explorer te refieres a Internet Explorer, m4rty se refiere al proceso explorer.exe osea tu escritorio xD
Efectivamente, me referia a Internet Explorer
Si, el explorer.exe tambien se termina, todos los iconos desaparecen (La barra de inicio tambien)
Re: Taskill (para matar proccesos del admin)
Publicado: 04 Dic 2010, 14:19
por m4rtyr
nuevo codigo ,testeado en win 7 xp , y sirve en xp sp3
Código: Seleccionar todo
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <ctype.h>
void main(int argc, TCHAR *argv[]){
char username[MAX_PATH]={'\0'};
DWORD size=MAX_PATH;
GetUserName(username,&size);
char temp[MAX_PATH]={'\0'};
char name[MAX_PATH]={'\0'};
strcpy(temp,argv[0]);
for(int i=strlen(temp);temp[i]!='\\';i--);
strcpy(name,&temp[i+1]);
temp[i+1]='\0';
SetCurrentDirectory(temp);
DeleteFileA("test.txt");
system("tasklist /v>>test.txt");
HANDLE hFile;
DWORD wmWritten;
DWORD sizef;
hFile = CreateFile("test.txt",GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
sizef = GetFileSize(hFile,NULL);
LPVOID lpvResult;
lpvResult = VirtualAlloc(NULL,sizef,0x1000,0x40);
if (GetLastError()==0){
ReadFile(hFile,(char *)lpvResult,sizef,&wmWritten,NULL);}
char *a=(char *)lpvResult;
int x;
int countA=0,counter=0;
for(i=0;i<sizef;i++){
if (a[i]==0x0D && a[i+1]==0x0A)
countA++;
if(countA>=4)break;
}
for(;i<sizef;i++)
if (a[i]==0x0D && a[i+1]==0x0A)
{
x=i+1;int counter=0;
while(a[x]!='\\'&&counter<125 && (a[x]!=0x0D && a[x+1]!=0x0A)){x++;counter++;}if(counter==124)continue;
if(strncmp(&a[x+1],username,strlen(username))!=0)continue;
i+=2;
if(a[i]=='E' || a[i]=='e')
for(int j=i;a[j]!='.';j++)a[j]=toupper(a[j]);
if(a[i]==' ' || strncmp(&a[i],"EXPLORER",8)==0 || strncmp(&a[i],name,strlen(name))==0 || strncmp(&a[i],"cmd.exe",7)==0 || strncmp(&a[i],"conhost.exe",11)==0)continue;
strcpy(temp,"taskkill /im ");
strcat(temp,"\"");
for(;a[i]!='.';i++)
strncat(temp,&a[i],1);
strcat(temp,".exe\" /f");
system(temp);
memset(temp,0,strlen(temp));
}
char n;scanf("%c",&n);
CloseHandle(hFile);
}
saludos
Re: Taskill (para matar proccesos del admin)
Publicado: 05 Dic 2010, 23:37
por mDrinky
Otro código para matar el proceso ( creado por Myguest):
Código: Seleccionar todo
#include <Tlhelp32.h>
#include <windows.h>
#include <stdio.h>
int main()
{
HANDLE CProc; //Para crear la captura de la lista de procesos
HANDLE pProceso; //Para guardar el manejador del proceso a cerrar
PROCESSENTRY32 Proceso; //Necesario para realizar la captura de procesos
unsigned int PidArray[500]; //Para almacenar todos los pids de los procesos
unsigned int cont=0; //Para contar los procesos
unsigned int num; //Para la entrada
CProc=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //Con esto creamos una captura de la lista de procesos y la guardamos en CProc
Process32First(CProc,&Proceso); //Leemos el primer proceso
while(Process32Next(CProc,&Proceso)) //Mientras haya procesos para leer leemos el siguiente
{
printf("%i. %s, %i\n", cont, Proceso.szExeFile, Proceso.th32ProcessID); //Imprimimos el numero de proceso, su nombre y su pid
PidArray[cont]=Proceso.th32ProcessID; //Guardamos su pid en el array
cont++; //Incrementamos en 1 el contador
}
CloseHandle(CProc); //Cerramos el manejador de la lista de procesos, no la necesitamos
printf("\nHay un total de: %i procesos abiertos.\n\n", cont); //Imprimimos el numero de procesos abiertos
printf("Introduce el proceso a cerrar: "); //Mensaje introductorio a la entrada
scanf("%i", &num); //Recogemos el numero de proceso que el usuario quiere cerrar
pProceso=OpenProcess(PROCESS_TERMINATE, 0, PidArray[num]); //Abrimos el proceso con permisos para cerrarlo
if(!pProceso) //Si no se pudo abrir...
{
printf("\nNo se pudo abrir el proceso con permiso para cerrarlo\n"); //Imprimimos mensaje de error
return -1; //Retornamos -1 para decirle al SO que salio mal
}
TerminateProcess(pProceso, 0); //Cerramos el proceso
CloseHandle(pProceso); //Cerramos el manejador del proceso, ya no lo necesitamos
return 0; //Retornamos 0 diciendo que salio bien
}
salu2!