本文整理汇总了Python中idaapi.get_segm_qty方法的典型用法代码示例。如果您正苦于以下问题:Python idaapi.get_segm_qty方法的具体用法?Python idaapi.get_segm_qty怎么用?Python idaapi.get_segm_qty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类idaapi
的用法示例。
在下文中一共展示了idaapi.get_segm_qty方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Segments
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import get_segm_qty [as 别名]
def Segments():
"""
Get list of segments (sections) in the binary image
@return: List of segment start addresses.
"""
for n in xrange(idaapi.get_segm_qty()):
seg = idaapi.getnseg(n)
if seg:
yield seg.startEA
示例2: get_functions_ida
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import get_segm_qty [as 别名]
def get_functions_ida():
#Repeat for list of segments
for n in xrange(idaapi.get_segm_qty()):
#Get number of segments
seg = idaapi.getnseg(n)
if seg:
#Get list of functions in that segment
funcs=idautils.Functions(seg.startEA, seg.endEA)
for funcname in funcs:
name = GetFunctionName(funcname)
print name
#Wait for analysis to complete
示例3: rename_functions_ida
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import get_segm_qty [as 别名]
def rename_functions_ida():
#Repeat for list of segments
for n in xrange(idaapi.get_segm_qty()):
#Get number of segments
seg = idaapi.getnseg(n)
if seg:
#Get list of functions in that segment
funcs=idautils.Functions(seg.startEA, seg.endEA)
for funcaddress in funcs:
name=GetFunctionName(funcaddress)
if name in functions_in_library:
MakeNameEx(funcaddress,"glibc_"+name,SN_NOWARN)
#Wait for analysis to complete
示例4: rename_functions_ida
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import get_segm_qty [as 别名]
def rename_functions_ida(func_library_map):
print func_library_map.keys()
#Repeat for list of segments
for n in xrange(idaapi.get_segm_qty()):
#Get number of segments
seg = idaapi.getnseg(n)
if seg:
#Get list of functions in that segment
funcs=idautils.Functions(seg.startEA, seg.endEA)
for funcaddress in funcs:
name=GetFunctionName(funcaddress)
if func_library_map.has_key(name):
MakeNameEx(funcaddress,func_library_map[name][1:]+"_"+name,SN_NOWARN)
#Wait for analysis to complete
示例5: segments
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import get_segm_qty [as 别名]
def segments(seg_type=None):
"""Iterate segments based on type
Args:
seg_type: type of segment e.g. SEG_CODE
Returns:
iterator of `Segment` objects. if seg_type is None , returns all segments
otherwise returns only the relevant ones
"""
for index in range(idaapi.get_segm_qty()):
seg = Segment(index=index)
if (seg_type is None) or (seg.type == seg_type):
yield Segment(index=index)
示例6: search_binary
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import get_segm_qty [as 别名]
def search_binary(binary_string):
for i in range(idaapi.get_segm_qty()):
segm = idaapi.getnseg(i)
current_ea = segm.startEA
while True:
current_ea = idaapi.find_binary(current_ea + 1, segm.endEA, binary_string, 16, idaapi.SEARCH_DOWN)
if current_ea == idaapi.BADADDR:
break
return current_ea
return 0
示例7: __iterate__
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import get_segm_qty [as 别名]
def __iterate__(**type):
'''Iterate through each segment defined in the database that match the keywords specified by `type`.'''
def newsegment(index):
seg = idaapi.getnseg(index)
seg.index, _ = index, ui.navigation.set(interface.range.start(seg))
return seg
iterable = itertools.imap(newsegment, six.moves.range(idaapi.get_segm_qty()))
for key, value in six.iteritems(type or builtins.dict(predicate=utils.fconstant(True))):
iterable = builtins.list(__matcher__.match(key, value, iterable))
for item in iterable: yield item
示例8: get_padded_bytes
# 需要导入模块: import idaapi [as 别名]
# 或者: from idaapi import get_segm_qty [as 别名]
def get_padded_bytes(self, size):
result = "\x00" * size
ranges_left = [MemoryRange(self.address, self.address + size)]
segment_count = idaapi.get_segm_qty()
valid_memory_ranges = []
for i in range(segment_count):
segment = idaapi.getnseg(i)
# Skip segments with unstable data
if segment.type == idaapi.SEG_XTRN:
continue
valid_memory_ranges.append(
MemoryRange(segment.startEA, segment.endEA)
)
while len(ranges_left) > 0:
# Get a requested memory range and remove it from the list
current_range = ranges_left.pop()
intersection = None
for memory_range in valid_memory_ranges:
start = max(current_range.start, memory_range.start)
end = min(current_range.end, memory_range.end)
if end > start:
intersection = MemoryRange(start, end)
break
# No segment can satisfy any part of requested range
if intersection is None:
continue
chunk = idc.GetManyBytes(
intersection.start, intersection.end - intersection.start
)
if chunk is None:
print(
"[librgb] Some bytes are unreadable in %s..%s"
% (
idc.atoa(intersection.start),
idc.atoa(intersection.end),
)
)
continue
result = (
result[0 : intersection.start - self.address]
+ chunk
+ result[intersection.end - self.address :]
)
assert len(result) == size
# If necessary, enqueue ranges unsatisfied by chosen mem segment
range1 = MemoryRange(current_range.start, intersection.start)
range2 = MemoryRange(intersection.end, current_range.end)
if range1.length > 0:
ranges_left.append(range1)
if range2.length > 0:
ranges_left.append(range2)
assert len(result) == size
return result