IDA Python 获取具有依赖项的结构类型

逆向工程 艾达 Python
2021-06-28 23:39:37

通过 IDA Gui,可以将具有依赖项的本地类型导出到头文件。例如,如果我从 DWORD 类型导出一个具有一个成员的结构,那么头文件还包含“typedef unsigned int DWORD”。

我想用 python api 做一个类似的任务。

def get_member_type(struct, idx):
   member = ida_struct.get_member(struct, idx)
   tif = tinfo_t()
   ida_struct.get_member_tinfo(member, tif)
   return tif

此函数返回结构成员的类型,例如“DWORD”,但我如何获得这是一个无符号整数的信息?

2个回答

print_decls(ordinals_sring, flags) 返回与 GUI 中的“导出到头文件”选项具有相同内容的字符串。

序数字符串可以包含多个以逗号分隔的序数,并且可以使用所有 PDF_标志(例如 PDF_INCL_DEPS)。

这对我来说非常有效,它甚至intint32_t.

def get_member_typename(sid, offset):
    s = ida_struct.get_struc(sid)
    m = ida_struct.get_member(s, offset)
    tif = ida_typeinf.tinfo_t()
    if ida_struct.get_member_tinfo(m, tif):
        return tif.__str__() 
    return ""