API
| API_Name |
功能 |
备注 |
| idc.GetStrucQty() |
获取结构体总数 |
|
| idc.GetFirstStrucIdx() |
获取第一个结构体的Index |
|
| idc.GetNextStrucIdx(indexCurStruct) |
通过结构体的 Index 获取下个结构体的 Index |
|
| idc.GetStrucId(indexCurStruct) |
通过 index 获取结构体的 ID |
|
| idc.GetStrucName(tidStruct) |
通过结构体的 ID 获得 结构体名 |
|
| idc.GetStrucSize(tidStruct) |
通过结构体的 ID 获得 结构体总大小 |
|
| idc.GetStrucComment(tidStruct, bool) |
通过结构体的 ID 获得 结构体的注释 |
bool 表示获取的注释属性是否可重复 |
Example
def walkStructure(): """ 遍历当前所有的结构体, 输出结构体主要信息 :return: None """ indexCurStruct = idc.GetFirstStrucIdx() # 获取第一个 struct 的 Index while True: tidStruct = idc.GetStrucId(indexCurStruct) # 获取 指定 index 的 structID strName = idc.GetStrucName(tidStruct) # 获得指定 structID 的名字 dwStructSize = idc.GetStrucSize(tidStruct) # 获得 struct 的大小 strStructCmt = idc.GetStrucComment(tidStruct, False) # 获取 struct 不可重复的 comment strStructCmt_Rep = idc.GetStrucComment(tidStruct, True) # 获取 struct 可重复的 comment dwStructCount = idc.GetStrucQty() # 获取当前 struct 总个数 g_LogOut.info("All: %08X, Index: %08X, IDX: %08X, Size: %08X, Name: %s, Comment: %s, Comment_Rep: %s" % (dwStructCount, indexCurStruct, tidStruct, dwStructSize, strName, strStructCmt, strStructCmt_Rep)) indexCurStruct = idc.GetNextStrucIdx(indexCurStruct) if indexCurStruct == idc.BADADDR: break