Hmm, nejako mi to nedáva význam... dajme tomu, ?e pMapping je ukazovateľ na nejaké pole, napr. na reťazec a ten má adresu, napr. 403000.
edi = 403000
edit = edi + [DWORD hodnota na adrese 403000+3Ch]
Aká je hodnota na 403003h a či je to korektné, to je dobrá otázka.
Skúsil som si to na príklade.
00401158 . BE 48204000 mov esi, 00402048 ; ASCII "eraser"
0040115D . 0376 03 add esi, dword ptr [esi+3]
00401160 . 833E 30 cmp dword ptr [esi], 30
0040204B 73 65 72 00 ser.
[0040204B] == 00726573 ASCII "ser"
00402048 + 00726573 == 00B285BB, resp. DWORD hodnota na [00B285BB] - hodnotu neviem, to mi DBG ťa?ko uká?e.
Je mi to jasné, no nedáva mi to logiku, jedine v prípade, ?e by sa overovala na danom miesta nejaká checksum suma, či iná kon?tantná hodnota. V tom prípade by niekto musel vedieť počiatočnú adresu pointera. Je to divné...
Pointre v Pascale, resp. Delphi som zabudol... av?ak povedal by som, ?e to mô?e byť takto nejako...
@str + [@str + 3] // neviem ako napísať hodnota na adrese, preto tie zátvorky.
//edit: ?eby takéto niečo... nemám Delphi, musí? to hodiť do DBG... Ptr(LongWord(@str) + 3)^ a dačo si matne pamätám, ?e sú príkazy PByte, mo?no i PDWord...

PDWord(Ptr(LongWord(@str) + 3))^ :confused:
V Cčku by to bolo takto...
(DWORD) str + *(DWORD *) (str+3).