De obicei, atunci când rulăm printr-o matrice, putem găsi următoarele linii de cod de asamblare:
mov [base_address_of_array + array_index * size_of_an_item_in_array], edx
În cazul dvs., presupun că matricea se află pe stivă (de aceea găsiți esp
ca parte a adresei de bază a tabloului. Apoi, aveți și un offset la esp
care este 0Ch
(care este 12 în zecimal). Deci, matricea se află la esp + 0Ch
. Apoi, eax
este indicele și 4
este dimensiunea unui element din matrice (probabil un număr întreg de 4 octeți).
Dacă ne uităm la w gaură CFG, l-aș traduce înapoi în C în așa ceva:
int array[4]; for (int i = 0; i < 4; ++i) array[i] = i;
Notă : Am presupus că arcul albastru din CFG revine la loc_401381
.
Comentarii