Memory editing.
No SO Windows podemos ler e alterar a memória de outro processo usando as funções ReadProcessMemory
e WriteProcessMemory
que são declaradas na biblioteca winbase.h
.
readv-writev
e ptrace
são duas soluções econtradas para obter o mesmo comportamento nos sistemas Linux.
Primeiro devemos compilar o binário alvo.
gcc target.c -o target
./target
Deixe-o em execução e inicie outro terminal.
gcc readv-writev.c -o readv-writev
sudo ./readv-writev 14344
Nota: ptrace
envia o sinal SIGSTOP
e espera o tracee parar.
gcc ptrace.c -o ptrace
sudo ./ptrace 14344
Onde 14344 é o PID.
Você pode usar o gdb
caso seja necessário atualizar o endereço de memória.
Este pode ser visto em comentário (prefixado pelo caractere #
) à direita do terminal.
gdb target
set disassembly-flavor intel # opcional
disassemble main