python中dword类型_Python idc.Dword方法代码示例

# 需要导入模块: import idc [as 别名]

# 或者: from idc import Dword [as 别名]

def fix_vxworks_idb(load_address, vx_version, symbol_table_start, symbol_table_end):

current_image_base = idaapi.get_imagebase()

symbol_interval = 16

if vx_version == 6:

symbol_interval = 20

symbol_table_start += load_address

symbol_table_end += load_address

ea = symbol_table_start

shift_address = load_address - current_image_base

while shift_address >= 0x70000000:

idaapi.rebase_program(0x70000000, 0x0008)

shift_address -= 0x70000000

idaapi.rebase_program(shift_address, 0x0008)

while ea < symbol_table_end:

# for VxWorks 6 unknown symbol format

if idc.Byte(ea + symbol_table_end - 2) == 3:

ea += symbol_interval

continue

offset = 4

if idaapi.IDA_SDK_VERSION >= 700:

idc.create_strlit(idc.Dword(ea + offset), idc.BADADDR)

else:

idc.MakeStr(idc.Dword(ea + offset), idc.BADADDR)

sName = idc.GetString(idc.Dword(ea + offset), -1, idc.ASCSTR_C)

print("Found %s in symbol table" % sName)

if sName:

sName_dst = idc.Dword(ea + offset + 4)

if vx_version == 6:

sName_type = idc.Dword(ea + offset + 12)

else:

sName_type = idc.Dword(ea + offset + 8)

idc.MakeName(sName_dst, sName)

if sName_type in need_create_function:

# flags = idc.GetFlags(ea)

print("Start fix Function %s at %s" % (sName, hex(sName_dst)))

idc.MakeCode(sName_dst) # might not need

idc.MakeFunction(sName_dst, idc.BADADDR)

ea += symbol_interval

print("Fix function by symbol table finish.")

print("Start IDA auto analysis, depending on the size of the firmware this might take a few minutes.")

idaapi.autoWait()


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部