Autor
|
Tema: Saber q api's usa el task manager (Leído 8,496 veces)
|
~~
|
Hola No se muy bien si esto va aki, pero supongo q si Alguien podria indicarme q apis utiliza el administrador de tareas de windows (o decirme como puedo saberlo) para llenar la lista de procesos?? Saludos
|
|
|
En línea
|
|
|
|
Shaddy
Desconectado
Mensajes: 722
one_bit_manipulator()
|
Hola No se muy bien si esto va aki, pero supongo q si Alguien podria indicarme q apis utiliza el administrador de tareas de windows (o decirme como puedo saberlo) para llenar la lista de procesos?? Saludos No esta mal la pregunta . Bueno el encargado de ejecutar el administrador de tareas es el "taskmgr.exe", y si quieres saber que APIs utilizas, jeje, mi consejo es o bien lo miras en OllyDBG, o bien si te resulta muy complicado utilizas el API Spy. Ya nos contarás tus avances . Salu2..
|
|
|
En línea
|
|
|
|
~~
|
Ok, pues me bajaré el Api Spy a ver si lo consigo sacar, por q con el Olly no lo e logrado (tambien es por q soy muuuuuuuuuuuuuuy newi en la ing inversa, para q negarlo ) Gracias por la info Saludos
|
|
|
En línea
|
|
|
|
Karman
|
para no perder tiempo debuggeando el TASKMAN acabo de ir a la fuente (si, el código fuente del programa que lo bajé junto con todo el código fuente de Win2K), y lo que hace es trabajar con métodos COM bastantes complicados... que al parecer llegan hasta el kernel... pero era muy largo como para seguir todo el recorrido... te recomiendo te bajes el source del win2k si podes y te fijes ahí directamente...
S2
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Lo que yo hago normalmente es empezar por lo mas simple. Ver las DLLs y funciones importadas: Dependency Walker.Si con eso somos capaces de identificar las probables despues solo nos queda abrir el WinDbg ... En este caso mi apuesta es por una simple funcion: NtQuerySystemInformation, paso a cambiar su codigo por: ntdll!ZwQuerySystemInformation: 7c90e1aa b8220000c0 mov eax,0C0000022h 7c90e1af c21000 ret 10h Y veo que no se actualiza mas la barra de procesos
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
~~
|
Gracias a todos Probaré a hookear el api q comentas Eternal Idol a ver si consigo resultados, si no tendre q hacer lo q dice Karman.... Saludos
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
Gracias a todos Probaré a hookear el api q comentas Eternal Idol a ver si consigo resultados, si no tendre q hacer lo q dice Karman.... Saludos Probalo, el Task Manager (como la mayoria de programas - aunque no directamente -) usa esa funcion para enumerar los procesos.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Karman
|
tenía razón Eternal Idol, esa es la función y acá tenés la referencia de como se usa: /*++ CProcPage::GetProcessInfo Class Description: Reads the process info table into a virtual alloc'd buffer, resizing the buffer if needed Arguments: Return Value: Revision History: Nov-16-95 Davepl Created --*/
static const int PROCBUF_GROWSIZE = 4096;
HRESULT CProcPage::GetProcessInfo(){ HRESULT hr = S_OK; NTSTATUS status; while(hr == S_OK){ if (m_pvBuffer){ status = NtQuerySystemInformation(SystemProcessInformation, m_pvBuffer, m_cbBuffer, NULL); // If we succeeded, great, get outta here. If not, any error other // than "buffer too small" is fatal, in which case we bail if (NT_SUCCESS(status)) break; if (status != STATUS_INFO_LENGTH_MISMATCH){ hr = E_FAIL; break; } } // Buffer wasn't large enough to hold the process info table, so resize it // to be larger, then retry. if (m_pvBuffer){ VirtualFree(m_pvBuffer, 0, MEM_RELEASE); m_pvBuffer = NULL; } m_cbBuffer += PROCBUF_GROWSIZE; m_pvBuffer = VirtualAlloc (NULL,m_cbBuffer,MEM_COMMIT,PAGE_READWRITE); if (m_pvBuffer == NULL){ hr = E_OUTOFMEMORY; break; } } return hr; }
Y para obtener los nombres de los usuarios: // Reviewed by alhen 9 - 3 - 98 HRESULT CProcInfo::SetProcessUsername(const FILETIME *pCreateTime){ DWORD dwError = NO_ERROR; // SetProcessUsername should get called only for terminal servers. if( !IsTerminalServer() ){ return E_FAIL; } // in case we could not get the proc address from winsta.dll // set the user name to error or something. __try { // in case of wow tasks assign username same as its parent process's if( IsWowTask( ) ){ if( m_pWowParentProcInfo->m_pszUserName != NULL ){ m_pszUserName = ( LPTSTR )new TCHAR[ lstrlen(m_pWowParentProcInfo->m_pszUserName ) + 1 ]; if( m_pszUserName != NULL ){ lstrcpy( m_pszUserName , m_pWowParentProcInfo->m_pszUserName ); return S_OK; }else{ return E_OUTOFMEMORY; } } else{ return E_FAIL; } }
if( m_UniqueProcessId == 0 ) // this is a system idle process. { const TCHAR *szIdleProcessOwner = TEXT( "SYSTEM" ); m_pszUserName = ( LPTSTR )new TCHAR[ 7 ]; if( m_pszUserName != NULL ){ lstrcpy(m_pszUserName, szIdleProcessOwner); } } else { PSID pUserSid = NULL; DWORD dwSize = 0; if( !(*gpfnWinStationGetProcessSid)( NULL , GetRealPID( ) , *pCreateTime, ( PBYTE )pUserSid , &dwSize ) ){ pUserSid = ( PSID ) new BYTE[ dwSize ]; if( pUserSid != NULL ){ if( (*gpfnWinStationGetProcessSid)( NULL , GetRealPID( ) , *pCreateTime, ( PBYTE )pUserSid , &dwSize ) ){ if( IsValidSid( pUserSid ) ){ TCHAR szTmpName[MAX_PATH]; DWORD dwTmpNameSize = MAX_PATH; (*gpfnCachedGetUserFromSid)( pUserSid , szTmpName , &dwTmpNameSize ); m_pszUserName = ( LPTSTR )new TCHAR[ sizeof( szTmpName ) + 1 ]; if( m_pszUserName != NULL ){ lstrcpy(m_pszUserName, szTmpName); } } } delete [] pUserSid; }else{ dwError = GetLastError(); } } // this would mean that a sid of size zero was returned } } __except (EXCEPTION_EXECUTE_HANDLER) { // dprintf(TEXT("exception occured: %d",), GetExceptionCode()); dwError = GetExceptionCode(); } return HRESULT_FROM_WIN32(dwError); }
S2
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.969
Israel nunca torturó niños, ni lo volverá a hacer.
|
tenía razón Eternal Idol, esa es la función y acá tenés la referencia de como se usa: Me quedo con mi metodo, es mas generico (y mas legal ademas) ya que no solemos contar con el codigo de los programas que queremos analizar.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
~~
|
Hola, peron por la tardanza... Eternal Idol, a riesgo de meter la pata, NtQuerySystemInformation es una api para ser usada desde el kernel? por q yo en mi msdn no la veo, ademas por google vi esto: NtQuerySystemInformation is used to check some system informations avaiable only in KernelMode (above 0x80000000). All avaiable (or all known) information classes are described in SYSTEM_INFORMATION_CLASS.
De ser para kernel tendré q seguir buscando ya q estoy hookeando en ring 3... Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ocultar processos en task manager (w7)
« 1 2 »
Programación General
|
CniZoO
|
17
|
9,710
|
26 Diciembre 2012, 22:52 pm
por CniZoO
|
|
|
Qué Task Manager os gusta más??
« 1 2 »
Software
|
gregory90
|
11
|
5,224
|
10 Septiembre 2013, 14:24 pm
por Mad Antrax
|
|
|
UAC Task Manager
Análisis y Diseño de Malware
|
kub0x
|
4
|
3,529
|
19 Junio 2014, 04:14 am
por kub0x
|
|
|
Task Manager Deluxe, una alternativa portable y más completa al Administrador...
Noticias
|
wolfbcn
|
0
|
1,562
|
4 Enero 2017, 21:52 pm
por wolfbcn
|
|
|
Microsoft añade funciones al Task Manager, una de las herramientas más ...
Noticias
|
wolfbcn
|
0
|
1,074
|
17 Noviembre 2019, 22:52 pm
por wolfbcn
|
|