Voltar à lista
Windows Win32Memóriakernel32.dll

WriteProcessMemory

Escreve memória no espaço de endereçamento de outro processo.

Descrição

Equivalente funcional ao `process_vm_writev` do Linux — legitimamente usada por depuradores, e também a técnica central da maioria das injeções de código (shellcode/DLL) em Windows.

Header: memoryapi.hDLL: kernel32.dllNative API: NtWriteVirtualMemory

Assinatura

BOOL WriteProcessMemory(
    HANDLE hProcess,
    LPVOID lpBaseAddress,
    LPCVOID lpBuffer,
    SIZE_T nSize,
    SIZE_T * lpNumberOfBytesWritten
);

Parâmetros

ParâmetroTipoDescrição
hProcessHANDLEHandle do processo alvo, com direito PROCESS_VM_WRITE + PROCESS_VM_OPERATION.
lpBaseAddressLPVOIDEndereço inicial de escrita, no espaço do processo alvo.
lpBufferLPCVOIDBuffer local com os dados a escrever.
nSizeSIZE_TNúmero de bytes a escrever.
lpNumberOfBytesWrittenSIZE_T *Se não for NULL, recebe o número de bytes efetivamente escritos.

Valor de retorno

Diferente de zero em sucesso; 0 em erro (consulte GetLastError).

Códigos de erro (GetLastError)

ERROR_ACCESS_DENIED(5)
Acesso negado.
ERROR_PARTIAL_COPY(299)
Apenas parte de uma solicitação de leitura/gravação de memória de processo foi concluída.
ERROR_NOACCESS(998)
Tentativa inválida de acesso a memória.

Relacionadas