Você pode editar os valores de endereço em “/ proc / $ pid / mem” para refletir as alterações nesse processo?

1

Gostaria de ver se posso editar um valor no meu programa enquanto ele está sendo executado, alterando diretamente a memória.

Meu processo de pensamento (não testado) é fazer o seguinte:

  1. Execute o programa.
  2. Abra o aplicativo "System Monitor" e "pare" (não finalize ou mate) o programa.
  3. Navegue até /proc/<ID#>/
  4. chmod o arquivo mem para acesso de leitura / gravação
  5. Edite mem com um editor hexadecimal
  6. Continue o programa e veja se minhas alterações foram refletidas.

Este é o caminho certo para fazer isso?

Se não, como eu tentaria conseguir isso?

    
por Akiva 18.11.2018 / 23:28

1 resposta

1

De acordo com man 5 proc :

/proc/[pid]/mem
  This file can be used to access the pages of a process's  memory  through  open(2),
  read(2), and lseek(2).

Isso quer dizer que essa interface só fornece acesso read . Você não pode escrever ou modificar este arquivo:

# chmod +w /proc/$pid/mem
chmod: changing permissions of '/proc/2905/mem': Operation not permitted

Se você quiser modificar a memória de um processo em execução, uma maneira de pensar é para anexar um depurador ao processo e, em seguida, use-o para definir variáveis .

    
por 19.11.2018 / 03:05