Você pode traduzir dados da pilha? Quais são os dados? [fechadas]

1

O que eu quero saber é como os dados em uma pilha são traduzidos. Podemos ver os dados como: 0x80808080 mas tem um significado? Quais partes dos números significam algo diferente? E o que significa '0x'?

A principal coisa que quero saber é como os dados são organizados. Eu sei como funciona o push e o pop, mas não entendo como:

(gdb) x/300wx 0xbffff155
0xbffff155: 0x80808080 0x80808080
0xbffff355: 0x80808080 0x80808080

O que cada parte significa? ^ Eu sei r = 4 w = 2 x = 1 & - = 0

    
por user179648 14.07.2016 / 00:59

1 resposta

4

0x é um prefixo muito comum para números escritos em hexadecimal, ou seja, na base 16.

x é um comando do GDB para exibir o conteúdo de uma parte da memória. Os dígitos e letras após o / indicam o que imprimir: 300 palavras ( w ), em hexadecimal ( x ). O número depois disso é o endereço no qual começar a imprimir.

"r = 4 w = 2 x = 1" é sobre a representação numérica e simbólica das permissões do arquivo Unix e não tem absolutamente nada a ver com isso.

Imprimir uma parte aleatória da memória de um processo não produz nenhum dado útil. Se você tiver o código-fonte e um binário construído com símbolos de depuração, o depurador poderá informar em que endereço cada variável do programa está armazenada; isso fornece informações sobre dados na pilha, mas não na memória alocada dinamicamente. Se você não tem a fonte, então você está fazendo engenharia reversa, o que é muito mais complicado que depurar.

O significado dos dados, ou seja, o que os dados da variável representam, não é algo que um computador possa lhe dizer.

Noções básicas sobre dados mostrados por um depurador, em geral, requer alguma experiência de programação. O significado desses dados é totalmente dependente do programa, não há considerações gerais. Sem mergulhar fundo no programa específico e na maneira como foi compilado, é apenas um monte de números.

    
por 14.07.2016 / 02:24

Tags