Explorando o conteúdo da RAM

Explorando o conteúdo da RAM

Estou usando umredisBanco de dados 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 de chave-valor simples que armazena dados binários. Acho que seria um bom lugar para explorar coisas como codificação e seria interessante para mim fazer coisas como percorrer a RAM em busca de conjuntos binários de dados, fazer coisas como procurar padrões simples; talvez explore a ideia de escrever uma linguagem de consulta para bebês que pesquise na RAM.

Tive essa ideia depois de ler o capítulo emSICPsobre linguagens de consulta.

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

Responder1

cat /proc/[pid]/mapsde acordo com as páginas de manual do proc.

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

Isso aborda a localização do espaço de endereço em uso. Um dos bolsistas da defcon implementou no ano passado o createremotethread no Linux. Então você poderia fazer isso... e depois ler a memória arbitrária dessa maneira.

Crédito parapsusipor apontar que pmap -x [pid]é mais fácil de ler.

Responder2

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 pseudoarquivos para cada processo; alguns deles podem conter informações interessantes

Responder3

Use um depurador, é para isso que servem.

Se você quiser fazer o seu próprio, tudo passaptrace.

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 em /proc/$pid/mem. Você não pode simplesmente abrir esse último arquivo normalmente, vejaComo leio /proc/$pid/mem no Linux?

informação relacionada