Como fazer um despejo de memória no Bochs?

2

Como você faz um despejo de memória em Bochs ?

(físico ou virtual - mas ambos seria ainda melhor!)

    
por Mehrdad 04.07.2011 / 04:06

4 respostas

2

Eu sei que essa pergunta já faz um tempo, mas eu tive o mesmo problema e pude resolver.

Depuração da GUI

Bochs acompanha um depurador visual que pode ser ativado com os seguintes sinalizadores em

./configure \
--enable-x86-debugger \
--enable-debugger \
--enable-debugger-gui

quando você vai criá-lo, e adicione essa opção no arquivo de configuração do Bochs:

display_library: x, options = "gui_debug"

Com o debugger gui aberto, você pode a qualquer momento pressionar o botão "break" e no menu View, você tem as opções "Physical MemDump" e "Linear MemDump", basta digitar o endereço inicial e o bochs irá despejar 4kB para você.

Sem depuração da GUI

Se preferir, você também pode usar o modo texto, o breakpoint pode ser configurado com o comando "lbreak addr" (para linear) ou "pbreak addr" (físico), para listar os breakpoints configurados basta digitar "info break "e deletá-los" d number ". Single step (s) e para continuar a execução (continue).

Com a execução em pausa, você pode descarregar com o "x" (linear) e "xp" (físico) seguido por alguns parâmetros opcionais, como o formato de saída, número de bytes e o endereço, por exemplo.

Exemplo:

x /30bx 0xC0000000

fará com que 30 bytes sejam despejados em formato hexadecimal a partir do endereço linear 0xC0000000.

Escrevendo no arquivo

Em alguns casos, o dump pode ser grande o suficiente para ser lido na tela. Nestes casos, você pode fazer isso em um arquivo usando o comando "writemem".

Sua sintaxe é:

writemem "filename" linearAddress lenght_in_bytes

então, se você precisar despejar os primeiros 1024 bytes do endereço linear 0xdeadbeef para o arquivo "dump", algo como:

writemem "dump" 0xdeadbeef 1024

deve funcionar.

Consulte o link para obter mais informações.

    
por 18.06.2016 / 04:23
0

Talvez você esteja procurando Salvar e restaurar a simulação :

The state of cpu(s), memory and all devices can be saved now. When running Bochs with there will be a button in the header bar called "Suspend".

(ênfase adicionada)

    
por 12.07.2011 / 08:44
0

Tente os comandos memsave e pmemsave no console do Bochs.

memsave addr size file

save to disk virtual memory dump starting at addr of size size.

pmemsave addr size file

save to disk physical memory dump starting at addr of size size.

    
por 12.07.2011 / 10:20
0

Aparentemente, há writemem

    writemem                     dump a number of bytes of virtual memory starting from
                                 the specified linear address into a file

Mas parece que não funciona.

    
por 08.02.2014 / 21:12