Jag följer ett program i Ghidra och jag undrar vad som föregår med nedan händelsekedja:
Kod:
int iVar2;
uint uVar3;
undefined4 *puVar6;
undefined local_18;
undefined auStack_17 [3];
undefined4 *puStack_10;
iVar2 = (*(code *)0x1b6966)();
if (iVar2 == 0) {
return 0xffffffff;
}
puStack_10 = (undefined4 *)
FUN_004bd173(-(uint)((int)(ZEXT48(auStack_17) * 4 >> 0x20) != 0) |
(uint)(ZEXT48(auStack_17) * 4));
iStack_14 = iVar2 - (int)puStack_10;
puVar6 = puStack_10;
Okej, PuStack_10 får ett värde av FUN_004bd173
Vi tittar på den funktionen:
Kod:
void __cdecl FUN_004bd173(uint param_1)
{
operator_new(param_1);
return;
}
Den returnerar Null. Så hur kan variablen användas senare?
Samt vad representerar enna hex 0xffffffff då den används lite var som helst.
Ghidra vill ha den till allt från ett superlångt decimaltal till L'\xffffffffff