def getAllMemoryFromIda(self):
result = {}
seg_start = [ea for ea in idautils.Segments()][0]
current_start = seg_start
seg_end = idc.SegEnd(current_start)
current_buffer = ""
for index, current_start in enumerate(idautils.Segments()):
# get current buffer content
current_buffer = ""
for ea in lrange(current_start, idc.SegEnd(current_start)):
current_buffer += chr(idc.Byte(ea))
# first buffer is only saved
if index == 0:
result[seg_start] = current_buffer
continue
# otherwise decide if the buffers are consecutive and either save or update contents
if current_start != seg_end:
seg_start = current_start
result[seg_start] = current_buffer
else:
result[seg_start] += current_buffer
seg_end = idc.SegEnd(current_start)
return result
评论列表
文章目录