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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Temas
Páginas: 1 2 [3]
21  Programación / Programación General / Obtener acceso para recuperar nombre de un proceso e información de servicios en: 11 Septiembre 2013, 16:31 pm
Saludos estoy teniendo problemas para recuperar el nombre de un proceso mediante su id debido a que no tiene acceso al hacer la consulta y quiero saber si hay alguna forma de obtener el nombre del archivo dll y su fecha de creación asociado a un servicio determinado es decir yo tengo el nombre del servicio y a partir de ahí obtener la otra información lo estoy haciendo con C# para recuperar el nombre de un proceso y su directorio tengo lo siguiente:
Código
  1. try
  2.                    {
  3.                        var localById = Process.GetProcessById(Convert.ToInt32(runxInfo.pid));
  4.  
  5.                        var info = new FileInfo(localById.MainModule.FileName);
  6.  
  7.                        runX.ProcessName = info.Name;
  8.                        runX.FilePath = info.DirectoryName;
  9.                    }
  10.                    catch (Exception ex)
  11.                    {
  12.                        runX.ProcessName = "Error : " + ex.Message;
  13.                    }

el problema que para ciertos procesos me da error de acceso.
22  Programación / Programación C/C++ / Recuperar los servicios que utiliza un proceso en: 10 Septiembre 2013, 18:16 pm
Saludos,
Estoy haciendo una mini aplicación en C++ que me recupere todos los servicios que cada proceso en ejecución está usando.
tengo el siguiente código para recuperar el id de los procesos en ejecución

Código
  1. HANDLE hProcessSnap;
  2. HANDLE hProcess;
  3. PROCESSENTRY32 pe32;
  4. DWORD dwPriorityClass;
  5.  
  6. hProcessSnap=CreateToolhelp32Snapshot( TH32CS_SNAPALL, 0 );
  7.  
  8. vector<RunxInfo>* initialRunxes = new vector<RunxInfo>();
  9. RunxInfo val;
  10.  
  11. if(hProcessSnap == INVALID_HANDLE_VALUE)
  12. {
  13. return NULL;
  14. }
  15.  
  16. pe32.dwSize = sizeof(PROCESSENTRY32);
  17.  
  18. if(!Process32First(hProcessSnap, &pe32))
  19. {
  20. CloseHandle(hProcessSnap);
  21. return NULL;
  22. }
  23.  
  24. do
  25. {
  26. dwPriorityClass = 0;
  27. hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID);
  28.  
  29. if(hProcess == NULL)
  30. {
  31. return NULL;
  32. }
  33. else
  34. {
  35. dwPriorityClass = GetPriorityClass(hProcess);
  36. if(!dwPriorityClass)
  37. {
  38. return NULL;
  39. }
  40. CloseHandle(hProcess);
  41. }
  42.  
  43. val.pid = pe32.th32ProcessID;
  44.  
  45.                //implementar la recuperación de todos los servicios utilizados por el proceso con el Id seleccionado.
  46.  
  47. }while( Process32Next( hProcessSnap, &pe32 ) );
  48.  


les agradecería me puedan ayudar

23  Programación / Programación C/C++ / Problemas para usar la función GetExtendedTcpTable en: 5 Septiembre 2013, 19:13 pm
Saludos estoy haciendo un proceso que me recupere los procesos que están usando una conexión TCP/IP leyendo la documentación MSDN esta función devuelve los datos que necesito pero tengo dudas con el primer parámetro de salida que es donde se recupera la tabla de la estructura con los datos, según la documentación MSDN la sintaxis de la función es la siguiente:

Código
  1. DWORD GetExtendedTcpTable(
  2.  _Out_    PVOID pTcpTable,
  3.  _Inout_  PDWORD pdwSize,
  4.  _In_     BOOL bOrder,
  5.  _In_     ULONG ulAf,
  6.  _In_     TCP_TABLE_CLASS TableClass,
  7.  _In_     ULONG Reserved
  8. );

el problema que tengo es con el parámetro pTcpTable según entiendo debe ser una estructura de datos que ya existe en "tcpmib.h" pero no se como usar estas estructuras y como recuperaría los datos que envía la función en esta variable.

la función la he definido de la siguiente manera:

Código
  1. DWORD size;
  2. DWORD dwResult;
  3.  
  4.  
  5. dwResult = GetExtendedTcpTable( , size, false, AF_INET, TCP_TABLE_OWNER_PID_ALL, 0);

les agradecería me ayudaran en comprender mejor para usar esta función



Una aclaración la variable size no le he asignado ningún valor porque igual como no se que estructura es pTcpTable no puedo darle un valor.

Código
  1. size = sizeof (PVOID)
  2. //no se que estructura corresponde pTcpTable el tipo lo pone como PVOID
24  Programación / Programación C/C++ / Asignar valores a un vector en: 3 Septiembre 2013, 18:46 pm
Saludos quiero  probar si un vector me devuelve bien los datos antes de programar los datos que va recibir el constructor tengo un contructor en una biblioteca que he creado llamada NetXh.h y la forma del constructor es:
struct NetxInfo
{
public:
   ULONG pid;
   WCHAR filename[MAX_PATH];
   WCHAR pathname[MAX_PATH];

   WCHAR protocol[10];
   WCHAR state [MAX_PATH];
   WCHAR srcip[MAX_PATH];
   WCHAR destip[MAX_PATH];
};

ahora bien donde incluyo el archivo Netxh.h creo un vector:

vector<NetxInfo>* initialNetxes = new vector<NetxInfo>();

quiero agregarle valores (basura) sólo para probar si la función que me va devolver este vector funciona bien.

como puedo agregarle valores de forma estática



no se si lo puedo hacer de la forma:
initialNetxes[0].pid = <dato>;
initialNetxes[0].filename = <dato>;
.
.
.
initialNetex[0].destip = <dato>;
para todo el vector que contiene la estructura NetxInfo
25  Programación / Programación C/C++ / Obtener todos los procesos activos y los servicios que están usando en: 2 Septiembre 2013, 22:55 pm
Hola, espero me puedan ayudar necesito hacer una mini aplicación en C++ que me muestre todos los procesos que están activos en windows y los servicios que usa cada proceso algo así como lo que hace el process explorer según he investigado la forma de poder lograrlo es por el WMI pero no he podido encontrar mucha información encontré un código en C++ donde hacen la conexión COM y verifican el nombre de la computadora no se si alguien me puede decir si este código me sirve y que líneas puedo agregar para que me consulte los procesos y los servicios asociados a cada proceso.


#define _WIN32_DCOM
#include <iostream>
using namespace std;
#include <comdef.h>
#include <Wbemidl.h>

# pragma comment(lib, "wbemuuid.lib")

int main(int argc, char **argv)
{
    HRESULT hres;

    // Step 1: --------------------------------------------------
    // Initialize COM. ------------------------------------------

    hres =  CoInitializeEx(0, COINIT_MULTITHREADED);
    if (FAILED(hres))
    {
        cout << "Failed to initialize COM library. Error code = 0x"
            << hex << hres << endl;
        return 1;                  // Program has failed.
    }

    // Step 2: --------------------------------------------------
    // Set general COM security levels --------------------------
    // Note: If you are using Windows 2000, you need to specify -
    // the default authentication credentials for a user by using
    // a SOLE_AUTHENTICATION_LIST structure in the pAuthList ----
    // parameter of CoInitializeSecurity ------------------------

    hres =  CoInitializeSecurity(
        NULL,
        -1,                          // COM authentication
        NULL,                        // Authentication services
        NULL,                        // Reserved
        RPC_C_AUTHN_LEVEL_DEFAULT,   // Default authentication
        RPC_C_IMP_LEVEL_IMPERSONATE, // Default Impersonation 
        NULL,                        // Authentication info
        EOAC_NONE,                   // Additional capabilities
        NULL                         // Reserved
        );

                     
    if (FAILED(hres))
    {
        cout << "Failed to initialize security. Error code = 0x"
            << hex << hres << endl;
        CoUninitialize();
        return 1;                    // Program has failed.
    }
   
    // Step 3: ---------------------------------------------------
    // Obtain the initial locator to WMI -------------------------

    IWbemLocator *pLoc = NULL;

    hres = CoCreateInstance(
        CLSID_WbemLocator,             
        0,
        CLSCTX_INPROC_SERVER,
        IID_IWbemLocator, (LPVOID *) &pLoc);
 
    if (FAILED(hres))
    {
        cout << "Failed to create IWbemLocator object."
            << " Err code = 0x"
            << hex << hres << endl;
        CoUninitialize();
        return 1;                 // Program has failed.
    }

    // Step 4: -----------------------------------------------------
    // Connect to WMI through the IWbemLocator::ConnectServer method

    IWbemServices *pSvc = NULL;
 
    // Connect to the root\cimv2 namespace with
    // the current user and obtain pointer pSvc
    // to make IWbemServices calls.
    hres = pLoc->ConnectServer(
         _bstr_t(L"ROOT\\CIMV2"), // Object path of WMI namespace
         NULL,                    // User name. NULL = current user
         NULL,                    // User password. NULL = current
         0,                       // Locale. NULL indicates current
         NULL,                    // Security flags.
         0,                       // Authority (for example, Kerberos)
         0,                       // Context object
         &pSvc                    // pointer to IWbemServices proxy
         );
   
    if (FAILED(hres))
    {
        cout << "Could not connect. Error code = 0x"
             << hex << hres << endl;
        pLoc->Release();     
        CoUninitialize();
        return 1;                // Program has failed.
    }

    cout << "Connected to ROOT\\CIMV2 WMI namespace" << endl;


    // Step 5: --------------------------------------------------
    // Set security levels on the proxy -------------------------

    hres = CoSetProxyBlanket(
       pSvc,                        // Indicates the proxy to set
       RPC_C_AUTHN_WINNT,           // RPC_C_AUTHN_xxx
       RPC_C_AUTHZ_NONE,            // RPC_C_AUTHZ_xxx
       NULL,                        // Server principal name
       RPC_C_AUTHN_LEVEL_CALL,      // RPC_C_AUTHN_LEVEL_xxx
       RPC_C_IMP_LEVEL_IMPERSONATE, // RPC_C_IMP_LEVEL_xxx
       NULL,                        // client identity
       EOAC_NONE                    // proxy capabilities
    );

    if (FAILED(hres))
    {
        cout << "Could not set proxy blanket. Error code = 0x"
            << hex << hres << endl;
        pSvc->Release();
        pLoc->Release();     
        CoUninitialize();
        return 1;               // Program has failed.
    }

    // Step 6: --------------------------------------------------
    // Use the IWbemServices pointer to make requests of WMI ----

    // For example, get the name of the operating system
    IEnumWbemClassObject* pEnumerator = NULL;
    hres = pSvc->ExecQuery(
        bstr_t("WQL"),
        bstr_t("SELECT * FROM Win32_OperatingSystem"),
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
        NULL,
        &pEnumerator);
   
    if (FAILED(hres))
    {
        cout << "Query for operating system name failed."
            << " Error code = 0x"
            << hex << hres << endl;
        pSvc->Release();
        pLoc->Release();
        CoUninitialize();
        return 1;               // Program has failed.
    }

    // Step 7: -------------------------------------------------
    // Get the data from the query in step 6 -------------------
 
    IWbemClassObject *pclsObj;
    ULONG uReturn = 0;
   
    while (pEnumerator)
    {
        HRESULT hr = pEnumerator->Next(WBEM_INFINITE, 1,
            &pclsObj, &uReturn);

        if(0 == uReturn)
        {
            break;
        }

        VARIANT vtProp;

        // Get the value of the Name property
        hr = pclsObj->Get(L"Name", 0, &vtProp, 0, 0);
        wcout << " OS Name : " << vtProp.bstrVal << endl;
        VariantClear(&vtProp);

        pclsObj->Release();
    }

    // Cleanup
    // ========
   
    pSvc->Release();
    pLoc->Release();
    pEnumerator->Release();
    pclsObj->Release();
    CoUninitialize();

    return 0;   // Program successfully completed.
 
}
Páginas: 1 2 [3]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines