2016-06-23 4 views
0

In IDA, wenn ich den Typ eines Strukturelements (mit D Hotkey) und Dump zu IDC-Datenbank in dieser IDC-Datei ändern, erzeugt es korrekt einen AddStrucMember-Befehl für dieses Mitglied.IDA 6.9 IDC AddStrucMember

Das Problem ist, dass, wenn ich dieses Mitglied wieder ändern (immer noch mit D) und dann das zuvor produzierte IDC-Skript lädt, es das Mitglied in seinen ursprünglichen Zustand zurückgibt.

Antwort

1

-Test

Testing mit einem Dummy-Struktur:

00000000 FooTest   struc ; (sizeof=0x8, mappedto_126) 
00000000 f0    dd ? 
00000004 f2    dd ? 
00000008 FooTest   ends 

es Export IDC (File > Produce File > Dump typeinfo to IDC file...)

Wechseln Sie in das folgende:

00000000 FooTest   struc ; (sizeof=0x8, mappedto_126) 
00000000 f0    dw ? 
00000002 f1    dw ? 
00000004 f2    dd ? 
00000008 FooTest   ends 

die idc Nachladen Datei funktioniert nichts ändern ...

prüfen

mit Python Überprüfung:

Python>id = GetStrucIdByName("FooTest"); 
Python>id 
18374686479671636282 
Python>mid = AddStrucMember(id,"f0", 0, 0x20000400, -1, 4) 
Python>mid 
-2 

bis Nach dem documentation ist -2 ein Fehler:

STRUC_ERROR_MEMBER_OFFSET (-2) // hat bereits Mitglied bei diesem Offset

Mögliche Lösung

So ist die beste Option, die vorhandene Struktur zu löschen, können Sie die del Taste auf der Struktur Fenster oder Python/idc mit DelStruc verwenden:

Python>id = GetStrucIdByName("FooTest") 
Python>id 
18374686479671636398 
Python>r = DelStruc(id) 
Python>r 
True 

Und dann Laden Sie die (Backup-) IDC-Datei neu.

Die Struktur ist zurück, wie gespeichert (man beachte die mappedto_xxx geändert hat):

00000000 FooTest   struc ; (sizeof=0x8, mappedto_127) 
00000000 f0    dd ? 
00000004 f2    dd ? 
00000008 FooTest   ends 
Verwandte Themen