Explorando o conteúdo da RAM

12

Estou usando um banco de dados redis e gostaria de explorar o conteúdo da RAM que o aplicativo está usando.

Sinto que a explicação de por que quero fazer isso fará mais sentido do que a pergunta que eu faria.

Redis é um armazenamento simples de valores-chave que armazena dados binários. Eu acho que seria um bom lugar para explorar coisas como codificação e seria interessante para mim fazer coisas como percorrer a RAM, procurando conjuntos de dados binários, fazendo coisas como procurar padrões simples; talvez explore a idéia de escrever uma linguagem de consulta de bebê que pesquisou na RAM.

Eu tive essa ideia depois de ler o capítulo no SICP sobre linguagens de consulta.

Alguma idéia de por onde começar? Inicialmente, quero perguntar "Dê-me o espaço de endereço em que este aplicativo está sendo executado, por favor" ao sistema.

MageProspero
fonte

Respostas:

7

Você pode usar o gdb para acessar a memória de um processo.

Além disso, você deve dar uma olhada no sistema de arquivos "/ proc" - ele contém pseudo arquivos para cada processo; alguns deles podem conter informações interessantes

jakob
fonte
7

cat /proc/[pid]/maps de acordo com as proc manpages.

Parece o que você quer. Se você precisar do pid, pegue-o no ps ou em qualquer outra ferramenta.

Esses endereços encontram o espaço de endereço em uso. Um dos bolsistas da defcon no ano passado implementou o createremotethread no linux. Então você pode fazer isso ... e ler a memória arbitrária dessa maneira.

Agradecemos a psusi por apontar que pmap -x [pid]é mais fácil de ler.

RobotHumans
fonte
3
Observe que pmapformata essas informações para que sejam mais legíveis por humanos.
Psusi 23/03/12
6

Use um depurador, é para isso que eles servem.

Se você deseja criar o seu próprio, tudo passa ptrace.

Você pode ver o mapa de memória de um processo (o índice da memória) /proc/$pid/mapse ler todo o conteúdo da memória /proc/$pid/mem. Você não pode simplesmente abrir esse último arquivo normalmente, consulte Como leio / proc / $ pid / mem no Linux?

Gilles 'SO- parar de ser mau'
fonte
1
Você foi incrivelmente útil com algumas das minhas perguntas. Você sugere algum livro para ler, geralmente relacionado ao sistema operacional Linux ou a artigos da web particularmente interessantes?
MageProspero #