Minsc 是18年的IDA插件大赛的季军 , 用于结构化的分类管理IDA_Python的接口
IDA-2018插件大赛


获取结构体相关数据

structure.list() 用于实时打印当前所有结构体列表
structure.iterate(like="*") 用于获得当前所有的结构体对象
`structure.by([str id])` 获得指定的struct对象
structure.members 结构体中所有member对象列表生成器
member_t.name 获得member的名称
member_t.typeinfo 获得member的属性(struct, DWORD, LPVOID等)
  1. structure.iterate() => structure[]
  2. structure.members => members_t[]
  3. members_t.iterate() => member_t
  4. 两种结构均可使用 iterate(like="*") 获得一个对象列表生成器

例子:

  1. # Wall structure:
  2. list(idaHelper.structure.iterate(like="*") # AllStructure
  3. # "Wall Members:
  4. for var in tmpMembers.iterate(like='*'):
  5. g_LogOut.debug(var.name) # registration
  6. g_LogOut.debug(var.fullname) # CPPEH_RECORD.registration
  7. g_LogOut.debug(var.typeinfo) # struct _EH3_EXCEPTION_REGISTRATION
  8. ---------------------------------------------------------------------------
  9. 2018-11-29 13:35:50,632 | DEBUG | StructCount: 50
  10. 2018-11-29 13:35:50,632 | DEBUG | <type 'structure' name='CPPEH_RECORD' size=+0x18>
  11. 2018-11-29 13:35:50,634 | DEBUG | Wall Members:
  12. 2018-11-29 13:35:50,634 | DEBUG | old_esp
  13. 2018-11-29 13:35:50,634 | DEBUG | CPPEH_RECORD.old_esp
  14. 2018-11-29 13:35:50,635 | DEBUG | DWORD
  15. 2018-11-29 13:35:50,635 | DEBUG |
  16. 2018-11-29 13:35:50,637 | DEBUG | exc_ptr
  17. 2018-11-29 13:35:50,638 | DEBUG | CPPEH_RECORD.exc_ptr
  18. 2018-11-29 13:35:50,638 | DEBUG | EXCEPTION_POINTERS *
  19. 2018-11-29 13:35:50,638 | DEBUG |
  20. 2018-11-29 13:35:50,638 | DEBUG | registration
  21. 2018-11-29 13:35:50,640 | DEBUG | CPPEH_RECORD.registration
  22. 2018-11-29 13:35:50,640 | DEBUG | struct _EH3_EXCEPTION_REGISTRATION
  23. 2018-11-29 13:35:50,641 | DEBUG |