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: NtWriteVirtualMemoryAssinatura
BOOL WriteProcessMemory(
HANDLE hProcess,
LPVOID lpBaseAddress,
LPCVOID lpBuffer,
SIZE_T nSize,
SIZE_T * lpNumberOfBytesWritten
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| hProcess | HANDLE | Handle do processo alvo, com direito PROCESS_VM_WRITE + PROCESS_VM_OPERATION. |
| lpBaseAddress | LPVOID | Endereço inicial de escrita, no espaço do processo alvo. |
| lpBuffer | LPCVOID | Buffer local com os dados a escrever. |
| nSize | SIZE_T | Número de bytes a escrever. |
| lpNumberOfBytesWritten | SIZE_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
Equivalente em Linux x86_64