本文整理汇总了Python中idaapi.SEGPERM_WRITE属性的典型用法代码示例。如果您正苦于以下问题:Python idaapi.SEGPERM_WRITE属性的具体用法?Python idaapi.SEGPERM_WRITE怎么用?Python idaapi.SEGPERM_WRITE使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类idaapi
的用法示例。
在下文中一共展示了idaapi.SEGPERM_WRITE属性的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: seg_by_addr
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import SEGPERM_WRITE [as 别名]
def seg_by_addr(self, addr):
ida_seg = idaapi.getseg(addr)
name = "<no name>"
if ida_seg is not None:
name = ida_seg.name
if self.vmmap is None:
self._get_vmmap()
for start, end, perms, n in self.vmmap:
if addr >= start and addr < end:
if n == "": n = name
return self.angrdbg_mod.Segment(n, start, end, perms)
# fallback on ida segs
perms = 0
perms |= SEG_PROT_R if ida_seg.perm & idaapi.SEGPERM_READ else 0
perms |= SEG_PROT_W if ida_seg.perm & idaapi.SEGPERM_WRITE else 0
perms |= SEG_PROT_X if ida_seg.perm & idaapi.SEGPERM_EXEC else 0
return self.angrdbg_mod.Segment(ida_seg.name, ida_seg.start_ea, ida_seg.end_ea, perms)
示例2: seg_by_name
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import SEGPERM_WRITE [as 别名]
def seg_by_name(self, name):
ida_seg = idaapi.get_segm_by_name(name)
if ida_seg is None:
return None
perms = 0
perms |= SEG_PROT_R if ida_seg.perm & idaapi.SEGPERM_READ else 0
perms |= SEG_PROT_W if ida_seg.perm & idaapi.SEGPERM_WRITE else 0
perms |= SEG_PROT_X if ida_seg.perm & idaapi.SEGPERM_EXEC else 0
return self.angrdbg_mod.Segment(name, ida_seg.start_ea, ida_seg.end_ea, perms)
示例3: is_read_only_segment
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import SEGPERM_WRITE [as 别名]
def is_read_only_segment(ea):
mask_perms = idaapi.SEGPERM_WRITE | idaapi.SEGPERM_READ
perms = idc.GetSegmentAttr(ea, idc.SEGATTR_PERM)
return idaapi.SEGPERM_READ == (perms & mask_perms)
示例4: recover_region
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import SEGPERM_WRITE [as 别名]
def recover_region(M, region_name, region_ea, region_end_ea, exported_vars):
"""Recover the data and cross-references from a segment. The data of a
segment is stored verbatim within the protobuf, and accompanied by a
series of variable and cross-reference entries."""
seg_name = idc.SegName(region_ea)
DEBUG("Recovering region {} [{:x}, {:x}) in segment {}".format(
region_name, region_ea, region_end_ea, seg_name))
seg = idaapi.getseg(region_ea)
# An item spans two regions. This may mean that there's a reference into
# the middle of an item. This happens with strings.
item_size = idc.ItemSize(region_end_ea - 1)
if 1 < item_size:
DEBUG(" ERROR: Segment should probably include {} more bytes".format(
item_size - 1))
S = M.segments.add()
S.ea = region_ea
S.data = read_bytes_slowly(region_ea, region_end_ea)
S.read_only = (seg.perm & idaapi.SEGPERM_WRITE) == 0
S.is_external = is_external_segment_by_flags(region_ea)
S.is_thread_local = is_tls_segment(region_ea)
S.name = seg_name.format('utf-8')
S.is_exported = region_ea in exported_vars
if region_name != seg_name:
S.variable_name = region_name.format('utf-8')
DEBUG_PUSH()
recover_region_cross_references(M, S, region_ea, region_end_ea)
recover_region_variables(M, S, region_ea, region_end_ea, exported_vars)
DEBUG_POP()
示例5: is_read_only_segment
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import SEGPERM_WRITE [as 别名]
def is_read_only_segment(ea):
mask_perms = idaapi.SEGPERM_WRITE | idaapi.SEGPERM_READ
perms = idc.get_segm_attr(ea, idc.SEGATTR_PERM)
return idaapi.SEGPERM_READ == (perms & mask_perms)
示例6: recover_region
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import SEGPERM_WRITE [as 别名]
def recover_region(M, region_name, region_ea, region_end_ea, exported_vars):
"""Recover the data and cross-references from a segment. The data of a
segment is stored verbatim within the protobuf, and accompanied by a
series of variable and cross-reference entries."""
seg_name = idc.get_segm_name(region_ea)
DEBUG("Recovering region {} [{:x}, {:x}) in segment {}".format(
region_name, region_ea, region_end_ea, seg_name))
seg = idaapi.getseg(region_ea)
# An item spans two regions. This may mean that there's a reference into
# the middle of an item. This happens with strings.
item_size = idc.get_item_size(region_end_ea - 1)
if 1 < item_size:
DEBUG(" ERROR: Segment should probably include {} more bytes".format(
item_size - 1))
S = M.segments.add()
S.ea = region_ea
S.data = read_bytes_slowly(region_ea, region_end_ea)
S.read_only = (seg.perm & idaapi.SEGPERM_WRITE) == 0
S.is_external = is_external_segment_by_flags(region_ea)
S.is_thread_local = is_tls_segment(region_ea)
S.name = seg_name.format('utf-8')
S.is_exported = region_ea in exported_vars
if region_name != seg_name:
S.variable_name = region_name.format('utf-8')
DEBUG_PUSH()
recover_region_cross_references(M, S, region_ea, region_end_ea)
recover_region_variables(M, S, region_ea, region_end_ea, exported_vars)
DEBUG_POP()
示例7: w
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import SEGPERM_WRITE [as 别名]
def w(self):
return bool(self._segment.perm & idaapi.SEGPERM_WRITE)
示例8: get_value_type
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import SEGPERM_WRITE [as 别名]
def get_value_type(ea):
addr_type = T_VALUE
if not idaapi.is_loaded(ea):
return addr_type
segm_name = idc.get_segm_name(ea)
segm = idaapi.getseg(ea)
flags = idc.get_full_flags(ea)
is_code = idc.is_code(flags)
if "stack" in segm_name.lower() or \
(dbg.stack_segm and dbg.stack_segm.start_ea == segm.start_ea):
addr_type = T_STACK
elif "heap" in segm_name.lower():
addr_type = T_HEAP
elif segm is not None:
if not is_code and segm.perm & idaapi.SEGPERM_READ and \
segm.perm & idaapi.SEGPERM_WRITE and \
segm.perm & idaapi.SEGPERM_EXEC:
addr_type = T_RWX
elif is_code or \
(segm.perm & idaapi.SEGPERM_READ and segm.perm & idaapi.SEGPERM_EXEC):
addr_type = T_CODE
elif segm.perm & idaapi.SEGPERM_READ and \
segm.perm & idaapi.SEGPERM_WRITE:
addr_type = T_DATA
elif segm.perm & idaapi.SEGPERM_READ:
addr_type = T_RODATA
return addr_type
# -----------------------------------------------------------------------
示例9: update_content_viewers
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import SEGPERM_WRITE [as 别名]
def update_content_viewers(self, n=None):
if n is None:
n = self.GetLineNo()
item = self.get_item(n)
self.dav.clear()
self.hv.clear()
self.iv.clear()
if item is not None:
if item.type == Item.TYPE_CODE:
# get disassembly and hex stream
dis = self.payload.da.get_disasm(item.ea)
for line in dis:
self.dav.add_line(line[0])
self.hv.add_line(line[1])
# get various info
seg = idaapi.getseg(item.ea)
if seg:
name = idaapi.get_true_segm_name(seg)
perm = seg.perm
ltype = "ld" if seg.is_loader_segm() else "dbg"
ea_start = seg.startEA
ea_end = seg.endEA
perms = ""
perms += "R" if perm & idaapi.SEGPERM_READ != 0 else "."
perms += "W" if perm & idaapi.SEGPERM_WRITE != 0 else "."
perms += "X" if perm & idaapi.SEGPERM_EXEC != 0 else "."
self.iv.add_line("<%s> [%X - %X], %s, [%s]" % (name, ea_start, ea_end, ltype, perms))
else:
stype = GetStringType(item.ea)
if stype is not None:
scontent = GetString(item.ea, -1, stype)
if scontent != None and len(scontent):
self.dav.add_line(idaapi.COLSTR("\"%s\"" % scontent, idaapi.SCOLOR_DSTR))
# length = idaapi.get_max_ascii_length(item.ea, stype, idaapi.ALOPT_IGNHEADS)
# self.hv.add_line()
else:
scontent = GetString(item.ea, -1, ASCSTR_C)
if scontent != None and len(scontent):
self.dav.add_line("\"%s\"" % scontent)
self.dav.update()
self.hv.update()
self.iv.update()