CreateRemoteThread Duda

Iniciado por Roast D, 24 Febrero 2017, 00:21 AM

0 Miembros y 1 Visitante están viendo este tema.

Roast D

Esta api tiene com parametro de entrada algo llamado LoadLibrary que creo que es una direccion de memoria de una funcino del kernel32 que se llama LoadLibraryA. En la api dice que ese es el punto donde se ejecuta el hilo. Alguien podria explicarme como funciona eso y para que se usa.

ivancea96

Sus parámetros son:
HANDLE WINAPI CreateRemoteThread(
  _In_  HANDLE                 hProcess,
  _In_  LPSECURITY_ATTRIBUTES  lpThreadAttributes,
  _In_  SIZE_T                 dwStackSize,
  _In_  LPTHREAD_START_ROUTINE lpStartAddress,
  _In_  LPVOID                 lpParameter,
  _In_  DWORD                  dwCreationFlags,
  _Out_ LPDWORD                lpThreadId
);


¿De cuál hablas? Todos están aquí explicados: https://msdn.microsoft.com/es-es/library/windows/desktop/ms682437(v=vs.85).aspx

Roast D

Cita de: ivancea96 en 24 Febrero 2017, 10:10 AM
Sus parámetros son:
HANDLE WINAPI CreateRemoteThread(
  _In_  HANDLE                 hProcess,
  _In_  LPSECURITY_ATTRIBUTES  lpThreadAttributes,
  _In_  SIZE_T                 dwStackSize,
  _In_  LPTHREAD_START_ROUTINE lpStartAddress,
  _In_  LPVOID                 lpParameter,
  _In_  DWORD                  dwCreationFlags,
  _Out_ LPDWORD                lpThreadId
);


¿De cuál hablas? Todos están aquí explicados: https://msdn.microsoft.com/es-es/library/windows/desktop/ms682437(v=vs.85).aspx


_In_  LPTHREAD_START_ROUTINE lpStartAddress

Estoy inyectando dll por este metod. Ese parametro es una direccion de memoria donde se inicia el hilo. Pero la direccion de memoria que pasan a ese parametro para hacer la inyeccion es, la de una funcion del kernel32.dll especificamente load library. Esto lo definen con getprocessadres. Porque se da inicio al hilo en esa direccion de memoria ?

ivancea96

No lo puedo asegurar, tendría que ver el código, pero puedo intuir que:

Comenzando en esa dirección de memoria, lo que logra es llamar a esa función. El primer parámetro de esa función, es una cadena con la ruta de la DLL, así que de lpParameter le pasará la ruta (del modo que sea). De este modo, logra que el proceso cargue la DLL.

Si tienes ahí el código, comprueba si es así lo que digo. O sinó, pon aquí el código que afecte a lo dicho.