Dette spørgsmål har allerede et svar her :
Svar
Når vi kører gennem en matrix, kan vi normalt finde følgende linier med samlingskode:
mov [base_address_of_array + array_index * size_of_an_item_in_array], edx
I dit tilfælde vil mit gæt være, at arrayet er på stakken (det er derfor, du finder esp
som en del af array-basisadressen. Derefter har du også en forskydning til esp
som er 0Ch
(som er 12 i decimal). Altså er arrayet placeret på esp + 0Ch
. Derefter er eax
indekset og 4
er størrelsen på et element i arrayet (sandsynligvis et heltal på 4 bytes).
Hvis vi ser på w hul CFG, jeg vil oversætte det tilbage til C i noget som dette:
int array[4]; for (int i = 0; i < 4; ++i) array[i] = i;
Bemærk : Jeg formodede, at den blå lysbue i CFG vender tilbage til loc_401381
.
Kommentarer
- Samlingskoden ligner markørregning med arrays. Er det ikke '?