Python idaapi.SEGPERM_WRITE Examples
The following are 11
code examples of idaapi.SEGPERM_WRITE().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
idaapi
, or try the search function
.
Example #1
Source File: ida_debugger.py From IDAngr with BSD 2-Clause "Simplified" License | 7 votes |
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)
Example #2
Source File: ida_debugger.py From IDAngr with BSD 2-Clause "Simplified" License | 5 votes |
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)
Example #3
Source File: ida_debugger.py From IDAngr with BSD 2-Clause "Simplified" License | 5 votes |
def seg_by_addr(self, addr): ida_seg = idaapi.getseg(addr) 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(ida_seg.name, ida_seg.start_ea, ida_seg.end_ea, perms)
Example #4
Source File: util.py From mcsema with Apache License 2.0 | 5 votes |
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)
Example #5
Source File: get_cfg.py From mcsema with Apache License 2.0 | 5 votes |
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()
Example #6
Source File: util.py From mcsema with Apache License 2.0 | 5 votes |
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)
Example #7
Source File: get_cfg.py From mcsema with Apache License 2.0 | 5 votes |
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()
Example #8
Source File: segment.py From Sark with MIT License | 5 votes |
def w(self): return bool(self._segment.perm & idaapi.SEGPERM_WRITE)
Example #9
Source File: segment.py From Sark with MIT License | 5 votes |
def w(self, value): if value: self._segment.perm |= idaapi.SEGPERM_WRITE else: self._segment.perm &= ~idaapi.SEGPERM_WRITE
Example #10
Source File: colorizer.py From deREferencing with GNU General Public License v3.0 | 5 votes |
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 # -----------------------------------------------------------------------
Example #11
Source File: ropviewer.py From DrGadget with MIT License | 4 votes |
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()