(address, limit=LIMIT, offset=0, hard_stop=None, hard_end=0, include_start=True, safe_linking=False)
return result
Recursively dereferences an address. For bare metal, it will stop when the address is not in any of vmmap pages to avoid redundant dereference.

    Arguments:
        address(int): the first address to begin dereferencing
        limit(int): number of valid pointers
        offset(int): offset into the address to get the next pointer
        hard_stop(int): address to stop at
        hard_end: value to append when hard_stop is reached
        include_start(bool): whether to include starting address or not
        safe_linking(bool): whether this chain use safe-linking

    Returns:
        A list representing pointers of each ```address``` and reference
Recursively dereferences an address. For bare metal, it will stop when the address is not in any of vmmap pages to avoid redundant dereference.
Recursively dereferences an address . For bare metal it will stop when the address is not in any of vmmap pages to avoid redundant dereference .
def get(address, limit=LIMIT, offset=0, hard_stop=None, hard_end=0, include_start=True, safe_linking=False):
    """
    Recursively dereferences an address. For bare metal, it will stop when the address is not in any of vmmap pages to avoid redundant dereference.

    Arguments:
        address(int): the first address to begin dereferencing
        limit(int): number of valid pointers
        offset(int): offset into the address to get the next pointer
        hard_stop(int): address to stop at
        hard_end: value to append when hard_stop is reached
        include_start(bool): whether to include starting address or not
        safe_linking(bool): whether this chain use safe-linking

    Returns:
        A list representing pointers of each ```address``` and reference
    """
    limit = int(limit)

    result = [address] if include_start else []
    for i in range(limit):
        # Don't follow cycles, except to stop at the second occurrence.
        if result.count(address) >= 2:
            break

        if hard_stop is not None and address == hard_stop:
            result.append(hard_end)
            break

        try:
            address = address + offset

            # Avoid redundant dereferences in bare metal mode by checking
            # if address is in any of vmmap pages
            if not pwndbg.abi.linux and not pwndbg.vmmap.find(address):
                break

            next_address = int(pwndbg.memory.poi(pwndbg.typeinfo.ppvoid, address))
            address = next_address ^ ((address >> 12) if safe_linking else 0)
            address &= pwndbg.arch.ptrmask
            result.append(address)
        except gdb.MemoryError:
            break

    return result
def get ( address , limit = LIMIT , offset = 0 , hard_stop = None , hard_end = 0 , include_start = True , safe_linking = False ) : limit = int ( limit ) result = [ address ] if include_start else [ ] for i in range ( limit ) : # Don't follow cycles, except to stop at the second occurrence. if result . count ( address ) >= 2 : break if hard_stop is not None and address == hard_stop : result . append ( hard_end ) break try : address = address + offset # Avoid redundant dereferences in bare metal mode by checking # if address is in any of vmmap pages if not pwndbg . abi . linux and not pwndbg . vmmap . find ( address ) : break next_address = int ( pwndbg . memory . poi ( pwndbg . typeinfo . ppvoid , address ) ) address = next_address ^ ( ( address >> 12 ) if safe_linking else 0 ) address &= pwndbg . arch . ptrmask result . append ( address ) except gdb . MemoryError : break return result