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