Windows Win32Processos & threadskernel32.dll
CreateRemoteThread
Cria uma nova thread executando dentro do espaço de endereçamento de outro processo.
Descrição
Não tem equivalente direto no Linux — permite injetar execução em outro processo, o que a torna tanto uma ferramenta legítima (injeção de DLL para instrumentação/hooking) quanto uma técnica clássica de malware/injeção de código, amplamente monitorada por EDR/antivírus.
Header:
processthreadsapi.hDLL: kernel32.dllNative API: NtCreateThreadExAssinatura
HANDLE CreateRemoteThread(
HANDLE hProcess,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| hProcess | HANDLE | Handle do processo alvo, com direitos suficientes para criar threads e alocar/escrever memória nele. |
| lpThreadAttributes | LPSECURITY_ATTRIBUTES | Atributos de segurança, ou NULL. |
| dwStackSize | SIZE_T | Tamanho inicial da pilha, ou 0 para o padrão. |
| lpStartAddress | LPTHREAD_START_ROUTINE | Endereço da função inicial, válido no espaço de endereçamento do processo alvo. |
| lpParameter | LPVOID | Argumento único passado à função da thread. |
| dwCreationFlags | DWORD | 0 ou CREATE_SUSPENDED. |
| lpThreadId | LPDWORD | Se não for NULL, recebe o ID da nova thread. |
Valor de retorno
Um handle para a nova thread remota em sucesso; NULL em erro (consulte GetLastError).
Códigos de erro (GetLastError)
- ERROR_ACCESS_DENIED(5)
- Acesso negado.
- ERROR_INVALID_HANDLE(6)
- O identificador (handle) informado é inválido.