本文整理汇总了Python中idc.BADADDR属性的典型用法代码示例。如果您正苦于以下问题:Python idc.BADADDR属性的具体用法?Python idc.BADADDR怎么用?Python idc.BADADDR使用的例子?那么, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类idc
的用法示例。
在下文中一共展示了idc.BADADDR属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: findImmediate
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def findImmediate(self, range_start, range_end, value):
"""Return all of the places (in the range) in which the immediate value was found.
Args:
range_start (int): ea of the range's start
range_end (int): ea of the range's end
value (int): value of the searched immediate
Return Value:
collection of ea's in which the value was found
"""
search_pos = range_start
while search_pos < range_end:
match_ea, garbage = ida_search.find_imm(search_pos, idc.SEARCH_DOWN, value)
search_pos = match_ea + 1
# Filter out mismatches
if match_ea == idc.BADADDR:
break
# return the correct result to the caller
yield match_ea
# Overridden base function
示例2: export_bookmarks
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def export_bookmarks(self):
"""
Exports marked location descriptions as BOOKMARK elements.
"""
found = False
timer = time.clock()
for slot in range(0, 1025):
address = idc.get_bookmark(slot)
description = idc.get_bookmark_desc(slot)
if address == BADADDR:
continue
if description == None:
continue
if found == False:
found = True
self.update_status(BOOKMARKS)
self.start_element(BOOKMARKS, True)
self.start_element(BOOKMARK)
self.write_address_attribute(ADDRESS, address)
self.write_attribute(DESCRIPTION, description)
self.close_tag()
if found:
self.end_element(BOOKMARKS)
self.display_cpu_time(timer)
示例3: find_malloc_par
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def find_malloc_par():
mp_ = idc.get_name_ea_simple("mp_")
if mp_ != idc.BADADDR:
return mp_
segm = idaapi.get_segm_by_name("[heap]")
if segm is None:
return None
offset = get_struct_offsets(malloc_par()).get('sbrk_base')
sbrk_base = segm.start_ea
ea = idc.get_segm_start(get_name_ea_simple("_IO_2_1_stdin_"))
end_ea = idc.get_segm_end(ea)
while ea < end_ea:
ptr = config.get_ptr(ea)
if idaapi.is_loaded(ptr) and ptr == sbrk_base:
return (ea-offset)
ea += config.ptr_size
return None
# --------------------------------------------------------------------------
示例4: read_leb128
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def read_leb128(ea, signed):
""" Read LEB128 encoded data
"""
val = 0
shift = 0
while True:
byte = idc.Byte(ea)
val |= (byte & 0x7F) << shift
shift += 7
ea += 1
if (byte & 0x80) == 0:
break
if shift > 64:
DEBUG("Bad leb128 encoding at {0:x}".format(ea - shift/7))
return idc.BADADDR
if signed and (byte & 0x40):
val -= (1<<shift)
return val, ea
示例5: format_lsda_actions
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def format_lsda_actions(action_tbl, act_ea, type_addr, type_enc, act_id):
""" Recover the exception actions and type info
"""
action_list = []
if action_tbl == idc.BADADDR:
return
DEBUG("start action ea : {:x}".format(act_ea))
while True:
ar_filter,ea2 = read_enc_value(act_ea, DW_EH_PE_sleb128)
ar_disp, ea3 = read_enc_value(ea2, DW_EH_PE_sleb128)
if ar_filter > 0:
type_slot = type_addr - ar_filter * enc_size(type_enc)
type_ea, eatmp = read_enc_value(type_slot, type_enc)
DEBUG("catch type typeinfo = {:x} {} {}".format(type_ea, get_symbol_name(type_ea), ar_filter))
action_list.append((ar_disp, ar_filter, type_ea))
#DEBUG(" format_lsda_actions ea {:x}: ar_disp[{}]: {} ({:x})".format(act_ea, act_id, ar_disp, ar_filter))
if ar_disp == 0:
break
act_ea = ea2 + ar_disp
return action_list
示例6: get_typeinfo_refs
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def get_typeinfo_refs(name, ea):
if ea == idc.BADADDR:
return
ea2 = ea
if idaapi.is_spec_ea(ea2):
xrefs = find_xrefs(ea2)
ea2 += get_address_size_in_bytes()*2
xrefs.extend(find_xrefs(ea2))
else:
ea2 += get_address_size_in_bytes()*2
xrefs = find_xrefs(ea2)
for x in xrefs:
if not is_invalid_ea(x):
value = read_pointer(x)
offset = value - ea if value > ea else 0
RTTI_REFERENCE_TABLE[x] = _create_reference_object(name, ea, offset)
ea3 = get_si_type_info(x)
示例7: read_leb128
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def read_leb128(ea, signed):
""" Read LEB128 encoded data
"""
val = 0
shift = 0
while True:
byte = idc.get_wide_byte(ea)
val |= (byte & 0x7F) << shift
shift += 7
ea += 1
if (byte & 0x80) == 0:
break
if shift > 64:
DEBUG("Bad leb128 encoding at {0:x}".format(ea - shift/7))
return idc.BADADDR
if signed and (byte & 0x40):
val -= (1<<shift)
return val, ea
示例8: get_function_start_address
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def get_function_start_address(ea):
"""
Get function start address
@param ea: ea from within the function boundaries.
@return: The function start ea. If function start was not found return current ea.
"""
try:
if ea is None:
return None
start_adrs = idc.GetFunctionAttr(ea, idc.FUNCATTR_START)
if start_adrs != idc.BADADDR:
return start_adrs
return ea
except Exception as ex:
raise RuntimeError("Count not locate start address for function %s: %s" % (hex(ea), ex))
示例9: get_function_end_address
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def get_function_end_address(ea):
"""
Get function end address
@param ea: function start_ea.
@return: The function end ea. If no function end ea found returns None.
"""
try:
if ea is None:
return None
func_attr_end = idc.GetFunctionAttr(ea, idc.FUNCATTR_END)
if func_attr_end == idc.BADADDR:
return None
return idc.PrevHead(func_attr_end, ea)
except Exception as ex:
raise RuntimeError("Count not locate end address for function %s: %s" % (hex(ea), ex))
示例10: itemDoubleClickSlot
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def itemDoubleClickSlot(self, index):
"""
TreeView DoubleClicked Slot.
@param index: QModelIndex object of the clicked tree index item.
@return:
"""
function = index.data(role=DIE.UI.Function_Role)
if function is not None:
ea = function.function_start
if function.is_lib_func:
ea = function.proto_ea
if ea is not None and ea is not idc.BADADDR:
idc.Jump(ea)
return True
func_context = index.data(role=DIE.UI.FunctionContext_Role)
if func_context is not None:
ea = func_context.calling_ea
if ea is not None and ea is not idc.BADADDR:
idc.Jump(ea)
return True
示例11: __init__
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def __init__(self, ea=UseCurrentAddress, name=None):
if name is not None and ea != self.UseCurrentAddress:
raise ValueError(("Either supply a name or an address (ea). "
"Not both. (ea={!r}, name={!r})").format(ea, name))
elif name is not None:
ea = idc.get_name_ea_simple(name)
if ea == idc.BADADDR:
raise exceptions.SarkNoFunction(
"The supplied name does not belong to an existing function. "
"(name = {!r})".format(name))
elif ea == self.UseCurrentAddress:
ea = idc.here()
elif ea is None:
raise ValueError("`None` is not a valid address. To use the current screen ea, "
"use `Function(ea=Function.UseCurrentAddress)` or supply no `ea`.")
elif isinstance(ea, Line):
ea = ea.ea
self._func = get_func(ea)
self._comments = Comments(self)
示例12: get_name_ea
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def get_name_ea(name, fromaddr=idc.BADADDR):
"""Get the address of a name.
This function returns the linear address associated with the given name.
Arguments:
name: The name to look up.
Options:
fromaddr: The referring address. Default is BADADDR. Some addresses have a
location-specific name (for example, labels within a function). If fromaddr is not
BADADDR, then this function will try to retrieve the address of the name from
fromaddr's perspective. If name is not a local name, its address as a global name will
be returned.
Returns:
The address of the name or BADADDR.
"""
return idc.LocByNameEx(fromaddr, name)
示例13: get_ea_name
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def get_ea_name(ea, fromaddr=idc.BADADDR, true=False, user=False):
"""Get the name of an address.
This function returns the name associated with the byte at the specified address.
Arguments:
ea: The linear address whose name to find.
Options:
fromaddr: The referring address. Default is BADADDR. Some addresses have a
location-specific name (for example, labels within a function). If fromaddr is not
BADADDR, then this function will try to retrieve the name of ea from fromaddr's
perspective. The global name will be returned if no location-specific name is found.
true: Retrieve the true name rather than the display name. Default is False.
user: Return "" if the name is not a user name.
Returns:
The name of the address or "".
"""
if user and not idc.hasUserName(idc.GetFlags(ea)):
return ""
if true:
return idc.GetTrueNameEx(fromaddr, ea)
else:
return idc.NameEx(fromaddr, ea)
示例14: _initialize_kext_regions
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def _initialize_kext_regions():
"""Get region information for each kext based on iOS 12's __PRELINK_INFO.__kmod_start.
NOTE: This only accounts for __TEXT_EXEC, not the other segments."""
kmod_start = idc.SegByBase(idc.SegByName('__PRELINK_INFO.__kmod_start'))
if kmod_start == idc.BADADDR:
return
for kmod in idau.ReadWords(kmod_start, idc.SegEnd(kmod_start)):
_log(1, 'Found kmod {:x}', kmod)
segments = list(_macho_segments_and_sections(kmod))
if len(segments) != 1:
_log(0, 'Skipping unrecognized kmod {:x}', kmod)
continue
segname, segstart, segend, sects = segments[0]
if segname != '__TEXT_EXEC' or len(sects) != 1:
_log(0, 'Skipping unrecognized kmod {:x}', kmod)
continue
kmod_name = 'kext.{:x}'.format(kmod)
_log(1, 'Adding module: {:x} - {:x} {}', segstart, segend, kmod_name)
_kext_regions.append((segstart, segend, kmod_name))
示例15: markupCategories
# 需要导入模块: import idc [as 别名]
# 或者: from idc import BADADDR [as 别名]
def markupCategories(self):
checked = []
last_ea = idc.BADADDR
for cat, cb in self._checkbox_map.items():
if cb.isChecked():
checked.append(cat)
for i in range(self._call_table.rowCount()):
if self._call_table.item(i, 0).text() in checked:
markup_ea = int(self._call_table.item(i, 1).text(), 16)
if markup_ea and markup_ea != idc.BADADDR and markup_ea != last_ea and markup_ea not in self._marked_up:
last_ea = markup_ea
self.markupEa(markup_ea)
api_name = self._call_table.item(i, 3).text()
args = self._call_table.item(i, 6).text()
self.addposterior(markup_ea, api_name, args)
self._marked_up.add(markup_ea)
if self.parent.cuckoo_version.startswith("1.3"):
try:
markup_parent_ea = int(self._call_table.item(i, 2).text(), 16)
self.markupEa(markup_parent_ea)
self._marked_up.add(markup_parent_ea)
except ValueError:
pass