def test_pck_idb_raw(): name, tp, flds = idc.ParseType("struct { int a, b; char x[5];};", 0) o = a.obj(a=15, b=17,x="hi") idaapi.pack_object_to_idb(o, idaapi.cvar.idati, tp, flds, WRITE_AREA, 0) ok, obj = idaapi.unpack_object_from_idb(idaapi.cvar.idati, tp, flds, WRITE_AREA, 0) if obj.a != 15 and obj.b != 17 and obj != "hi": return -2 return 1
def test_pck_bv_raw(): name, tp, flds = idc.ParseType("struct { int a; char x[5]; int b;};", 0) va,vb,vx = 15,17,"hi" o = a.obj(a=va, b=vb,x=vx) ok, s = idaapi.pack_object_to_bv(o, idaapi.cvar.idati, tp, flds, WRITE_AREA, 0) if not ok: return -1 ok, obj = idaapi.unpack_object_from_idb(idaapi.cvar.idati, tp, flds, WRITE_AREA, 0) if obj.a != va and obj.b != vb and obj.x != vx: return -2 return 1
def test_unpack_raw(): name, tp, flds = idc.ParseType("IMAGE_DOS_HEADER;", 0) ok, obj = idaapi.unpack_object_from_idb(idaapi.cvar.idati, tp, flds, 0x400000, 0) if obj.e_magic != 23117 and obj.e_cblp != 144: return -1 name, tp, flds = idc.ParseType("struct abc_t { int a, b;};", 0) ok, obj = idaapi.unpack_object_from_bv(idaapi.cvar.idati, tp, flds, "\x01\x00\x00\x00\x02\x00\x00\x00", 0) if obj.a != 1 and obj.b != 2: return -2 return 1