| skipped 305 lines |
306 | 306 | | struc_id = idc.GetStrucIdByName("type") |
307 | 307 | | offset_kind = idc.GetMemberOffset(struc_id, "kind") |
308 | 308 | | kind = idc.Byte(addr + offset_kind) & 0x1f |
309 | | - | print "kind2 %d" % kind |
310 | 309 | | return self.settings.typer.standardEnums[0][1][kind] |
311 | 310 | | |
312 | 311 | | |
| skipped 77 lines |
390 | 389 | | for i in xrange(size): |
391 | 390 | | self.processStructField(addr, i*sz) |
392 | 391 | | name = self.getName(offset) |
393 | | - | if True: |
394 | | - | print "Name is %s" % name |
395 | 392 | | name = Utils.relaxName(name) |
396 | 393 | | name = "ut_" + name |
397 | 394 | | self.createUserTypeStruct(addr, name, size, size_new_struct) |
| skipped 15 lines |
413 | 410 | | |
414 | 411 | | def createUserTypeStruct(self, addr, name, size, self_size): |
415 | 412 | | fields = [] |
416 | | - | #print name |
417 | 413 | | sid = idc.GetStrucIdByName("structField") |
418 | 414 | | sz = idc.GetStrucSize(sid) |
419 | 415 | | sid_type = idc.GetStrucIdByName("type") |
| skipped 2 lines |
422 | 418 | | idc.MakeComm(addr, name) |
423 | 419 | | for i in xrange(size): |
424 | 420 | | fieldname = self.nameFromOffset(self.getPtr(sid, addr+i*sz,"Name")) |
425 | | - | #print fieldname |
426 | 421 | | type_addr = self.getPtr(sid, addr+i*sz, "typ") |
427 | 422 | | typename = self.getType(type_addr) |
428 | 423 | | size = self.getPtr(sid_type, type_addr, "size") |
429 | | - | #print typename |
430 | 424 | | if fieldname == "" or fieldname is None: |
431 | 425 | | fieldname = "unused_"+Utils.id_generator() |
432 | 426 | | offset = self.getStructFieldOffset(sid, addr+i*sz) |
433 | 427 | | if offset != curr_offset: |
434 | | - | #print name |
435 | | - | #print fieldname |
436 | 428 | | print "Offset missmatch.Got %d expected %d. Adding padding..." % (curr_offset, offset) |
437 | 429 | | if offset < curr_offset: |
438 | 430 | | raise("Too many bytes already") |
| skipped 28 lines |
467 | 459 | | fields.append(("padding", "char")) |
468 | 460 | | curr_offset += 1 |
469 | 461 | | new_type = [(name, fields)] |
470 | | - | #print new_type |
471 | 462 | | self.settings.structCreator.createTypes(new_type) |
472 | | - | #print fields |
473 | 463 | | new_type_sid = idc.GetStrucIdByName(name) |
474 | 464 | | sz = idc.GetStrucSize(new_type_sid) |
475 | 465 | | if sz != self_size: |
| skipped 59 lines |
535 | 525 | | self.robase = base_type |
536 | 526 | | |
537 | 527 | | def next(self): |
538 | | - | #print "next type from typelink" |
539 | 528 | | if self.pos >= self.end: |
540 | 529 | | raise StopIteration |
541 | 530 | | value = idc.Dword(self.pos) |
| skipped 12 lines |
554 | 543 | | return out |
555 | 544 | | |
556 | 545 | | def getName(self, offset): |
557 | | - | #print "GetName: %x" % offset |
558 | 546 | | sid = idc.GetStrucIdByName("type") |
559 | 547 | | name_off = self.getDword(sid, offset, "string") |
560 | 548 | | string_addr = self.getOffset(name_off) + 3 |
| skipped 60 lines |
621 | 609 | | |
622 | 610 | | def parseFuncType(self, offset): |
623 | 611 | | return |
624 | | - | # print "func off %x" % offset |
625 | 612 | | sid = idc.GetStrucIdByName("funcType") |
626 | 613 | | in_size = idc.Word(offset + idc.GetMemberOffset(sid, "incount")) |
627 | 614 | | out_size = idc.Word(offset + idc.GetMemberOffset(sid, "outcount")) |
| skipped 13 lines |