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 é ' é?