elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Saber q api's usa el task manager
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Saber q api's usa el task manager  (Leído 7,885 veces)
~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Saber q api's usa el task manager
« en: 20 Noviembre 2007, 16:42 pm »

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 Desconectado

Mensajes: 722


one_bit_manipulator()


Ver Perfil WWW
Re: Saber q api's usa el task manager
« Respuesta #1 en: 20 Noviembre 2007, 22:22 pm »

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

"Si buscas resultados diferentes, no hagas siempre lo mismo" (Albert Einstein)

http://abssha.reversingcode.com
http://www.reversingcode.com
~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: Saber q api's usa el task manager
« Respuesta #2 en: 21 Noviembre 2007, 00:34 am »

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  :xD)

Gracias por la info
Saludos
En línea

Karman


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Saber q api's usa el task manager
« Respuesta #3 en: 21 Noviembre 2007, 02:24 am »

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 Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Saber q api's usa el task manager
« Respuesta #4 en: 21 Noviembre 2007, 12:30 pm »

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  ;D
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
~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: Saber q api's usa el task manager
« Respuesta #5 en: 21 Noviembre 2007, 13:31 pm »

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 Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Saber q api's usa el task manager
« Respuesta #6 en: 21 Noviembre 2007, 13:36 pm »

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


Desconectado Desconectado

Mensajes: 673



Ver Perfil WWW
Re: Saber q api's usa el task manager
« Respuesta #7 en: 21 Noviembre 2007, 16:55 pm »

tenía razón Eternal Idol, esa es la función y acá tenés la referencia de como se usa:

Código:
/*++ 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:

Código:
// 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 Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Saber q api's usa el task manager
« Respuesta #8 en: 21 Noviembre 2007, 18:41 pm »

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
~~
Ex-Staff
*
Desconectado Desconectado

Mensajes: 2.981


Ver Perfil WWW
Re: Saber q api's usa el task manager
« Respuesta #9 en: 25 Noviembre 2007, 12:44 pm »

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:

Citar
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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ocultar processos en task manager (w7) « 1 2 »
Programación General
CniZoO 17 8,576 Último mensaje 26 Diciembre 2012, 22:52 pm
por CniZoO
Qué Task Manager os gusta más?? « 1 2 »
Software
gregory90 11 4,450 Último mensaje 10 Septiembre 2013, 14:24 pm
por Mad Antrax
UAC Task Manager
Análisis y Diseño de Malware
kub0x 4 3,274 Último mensaje 19 Junio 2014, 04:14 am
por kub0x
Task Manager Deluxe, una alternativa portable y más completa al Administrador...
Noticias
wolfbcn 0 1,365 Último mensaje 4 Enero 2017, 21:52 pm
por wolfbcn
Microsoft añade funciones al Task Manager, una de las herramientas más ...
Noticias
wolfbcn 0 871 Último mensaje 17 Noviembre 2019, 22:52 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines