'Search for all valid addresses in memory ranges
Args:
- searchfor: memory region to search for addresses (String)
- belongto: memory region that target addresses belong to (String)
Returns:
- list of found result: (address(Int), value(Int))'

@memoized
def search_address(self, searchfor='stack', belongto='binary'):

    result = []
    maps = self.get_vmmap()
    if (maps is None):
        return result
    searchfor_ranges = self.get_vmmap(searchfor)
    belongto_ranges = self.get_vmmap(belongto)
    step = self.intsize()
    for (start, end, _, _) in searchfor_ranges[::(-1)]:
        mem = self.dumpmem(start, end)
        if (not mem):
            continue
        for i in range(0, len(mem), step):
            search = ('0x' + codecs.encode(mem[i:(i + step)][::(-1)], 'hex').decode('utf-8'))
            addr = to_int(search)
            if self.is_address(addr, belongto_ranges):
                result += [((start + i), addr)]
    return result
