Jeg har en lille funktion, der får en struct
som parametre. struct
ser ud til noget som dette:
struct my_struct {short a; usigneret int b; usigneret int c;};
Ved at passe på tilpasningen bygger jeg følgende struct
i IDA:
field_0 + 0x0field_1 + 0x4field_2 + 0x8
Compileren bygger den, så den tager rbp + 0x10
som det første felt i struct
, rbp + 0x14
som det andet og så videre. Problemet opstår nu, fordi hvis jeg forsøger at anvende den foruddefinerede IDA struct
på instruktionerne, får jeg altid noget som [rbp + struct.field_0 + 0x10]
. Dette bliver mere kompliceret, hvis der faktisk er noget i min struktur på + 0x10
, for så viser det bare [rbp + struct_fieldX]
(hvilket er forkert).
Spørgsmålet er: Er der en måde at fortælle IDA (jeg bruger 6.3) at anvende struct
med en forskydning på 0x10
?
Det beskidte trick til denne enkle sag er at oprette en struct
, der har 2 size_t
dummy-felter til RIP
og SFP
, men det ser ikke ud til at være den rigtige vej her.