Ir para conteúdo

Nunca entendo, o que é offset de memória?


chacrinha

Posts Recomendados

Gente, alguém sabe falar da forma mais leiga possível (sem aqueles linguagem técnicas) o que é offset ?

Sempre que eu estou tentando estudar sistemas operacionais, memória e exploits fala-se no bendito offset:

"Ah, temos a memória na posição zero do segmento 0x242469 e temos que pular para o offset 0x242424 e bla bla bla"

Alguém sabe me explicar por metáfora o que raios é o offset do endereço de memória? Eu imagino a memoria de um PC , não sei se errado ou não, como uma planilha
do Excel , nesse caso, como seria o offset?

Grato!

Link para o comentário
Compartilhar em outros sites

"offset" é "deslocamento". Se você estiver parado onde está e se deslocar 1 metro pra frente, então está no offset +1 metro pra frente.

Com relaçẽo a "endereço de memória", se você assumir como base um endereço qualquer, um "deslocamento" de N bytes para frente é o "offset" (deslocamento) com relação a essa base. No modo real o "segmento" é essa base e, junto como ele, compondo o endereço físico, tem o "offset" (deslocamento).

Link para o comentário
Compartilhar em outros sites

14 horas atrás, fredericopissarra disse:

"offset" é "deslocamento". Se você estiver parado onde está e se deslocar 1 metro pra frente, então está no offset +1 metro pra frente.

Com relaçẽo a "endereço de memória", se você assumir como base um endereço qualquer, um "deslocamento" de N bytes para frente é o "offset" (deslocamento) com relação a essa base. No modo real o "segmento" é essa base e, junto como ele, compondo o endereço físico, tem o "offset" (deslocamento).

Me parece muito boa a sua metáfora, deixa eu ver se eu entendi:  se eu tenho uma estrada de 100KM que começa em São Paulo e vai até Santos, se eu estou no KM 50 dela
e percorro mais 2 KM , o  endereço de memória seria 0x50 e o offset seria 0x02 ?  OU seja, um incremento relativo? Estou errado?

Link para o comentário
Compartilhar em outros sites

9 horas atrás, chacrinha disse:

Me parece muito boa a sua metáfora, deixa eu ver se eu entendi:  se eu tenho uma estrada de 100KM que começa em São Paulo e vai até Santos, se eu estou no KM 50 dela
e percorro mais 2 KM , o  endereço de memória seria 0x50 e o offset seria 0x02 ?  OU seja, um incremento relativo? Estou errado?

Na analogia da estrada, onde é o KM 0? São Paulo? Esse é o offset 0, se você está no km 50, está no offset 50, ao andar mais 2 km, vai pro offset 52.
Note que não existe apenas ESSA estrada. O offset, no exemplo, é medido em relação a ESSA referência, mas existem outras referências pelo mundo afora.

No caso do modo real, um "endereço de memória" é especificado com um par de valores: SEGMENTO e OFFSET. O segmento te dá o endereço base e o offset te dá o deslocamento dentro desse segmento... No modo real, bloco do segmento sempre tem 64 KiB de tamanho (e o offset também).

Link para o comentário
Compartilhar em outros sites

Em 14/10/2020 em 08:09, fredericopissarra disse:

SEGMENTO e OFFSET. O segmento te dá o endereço base e o offset te dá o deslocamento dentro desse segmento... No modo real, bloco do segmento sempre tem 64 KiB de tamanho (e o offset também).

Bom, voltei a não entender. Você conhece aqueles jogos de tabuleiro onde joga-se os dados para ver quantas casas o competidor avança? Tipo esse dessa imagem: https://br.pinterest.com/pin/330592428889640183/

O segmento seria o número da casa onde o competidor está e o offset é a diferença onde ele está e o número que o dado sorteia para ele avançar?

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...
  • 2 meses depois...
Em 13/10/2020 em 22:55, chacrinha disse:

Me parece muito boa a sua metáfora, deixa eu ver se eu entendi:  se eu tenho uma estrada de 100KM que começa em São Paulo e vai até Santos, se eu estou no KM 50 dela
e percorro mais 2 KM , o  endereço de memória seria 0x50 e o offset seria 0x02 ?  OU seja, um incremento relativo? Estou errado?

se vc considerar o endereço base como sendo a partir do KM 50, sim. mas se considerar o "início" do segmento/do pedaço de estrada q vc está avaliando como sendo a partir do KM 0 desta estrada de 100KM, seu offset, ao andar mais 2KM, JÁ TENDO ANDADO 50KM, seria de 52. 

melhor dizendo, dependerá de onde se inicia o segmento (a estrada que você está avaliando): se a partir da kilometragem 0 desta estrada de 100KM, ou se a partir da kilometragem 50 desta estrada de 100KM.

se o início for a partir da kilometragem 50, seu segmento iniciará na kilometragem 50 e irá até o fim desta estrada, e seu offset neste segmento, ao se deslocar 2KM, será igual a 2.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
Em 08/03/2021 em 13:26, sklurm disse:

se vc considerar o endereço base como sendo a partir do KM 50, sim. mas se considerar o "início" do segmento/do pedaço de estrada q vc está avaliando como sendo a partir do KM 0 desta estrada de 100KM, seu offset, ao andar mais 2KM, JÁ TENDO ANDADO 50KM, seria de 52. 

melhor dizendo, dependerá de onde se inicia o segmento (a estrada que você está avaliando): se a partir da kilometragem 0 desta estrada de 100KM, ou se a partir da kilometragem 50 desta estrada de 100KM.

se o início for a partir da kilometragem 50, seu segmento iniciará na kilometragem 50 e irá até o fim desta estrada, e seu offset neste segmento, ao se deslocar 2KM, será igual a 2.

 

Se eu disser então que um carro está quebrado na estrada em algum ponto no offset 0x50:0x17   isso indicará que ele está poderá estar quebrado em quais KMs?

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...