índice de matriz em montagem? [duplicar]

Esta pergunta já tem uma resposta aqui :

Resposta

Normalmente, ao percorrer uma matriz, podemos encontrar as seguintes linhas de código de montagem:

mov [base_address_of_array + array_index * size_of_an_item_in_array], edx 

No seu caso, meu palpite seria que a matriz está na pilha (é por isso que você encontra esp como parte do endereço base da matriz. Então, você também tem um deslocamento para esp que é 0Ch (que é 12 em decimal). Portanto, a matriz está localizada em esp + 0Ch. Então, eax é o índice e 4 é o tamanho de um item na matriz (provavelmente um número inteiro de 4 bytes).

Se olharmos para w buraco CFG, gostaria de traduzi-lo de volta para C em algo assim:

int array[4]; for (int i = 0; i < 4; ++i) array[i] = i; 

Observação : Suponho que o arco azul no CFG está voltando para loc_401381.

Comentários

  • O código assembly se parece com aritmética de ponteiro com matrizes. Não é ' é?

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *