code: def peek_pointers_in_data(self, data, peekSize = 16, peekStep = 1):
          
          result = dict()
          ptrSize = win32.sizeof(win32.LPVOID)
          if ptrSize == 4:
              ptrFmt = '<L'
          else:
              ptrFmt = '<Q'
          if len(data) > 0:
              for i in compat.xrange(0, len(data), peekStep):
                  packed          = data[i:i+ptrSize]
                  if len(packed) == ptrSize:
                      address     = struct.unpack(ptrFmt, packed)[0]
  ##                    if not address & (~0xFFFF): continue
                      peek_data   = self.peek(address, peekSize)
                      if peek_data:
                          result[i] = peek_data
          return result
docs: Tries to guess which values in the given data are valid pointers,
          and reads some data from them.
  
          @see: L{peek}
  
          @type  data: str
          @param data: Binary data to find pointers in.
  
          @type  peekSize: int
          @param peekSize: Number of bytes to read from each pointer found.
  
          @type  peekStep: int
          @param peekStep: Expected data alignment.
              Tipically you specify 1 when data alignment is unknown,
              or 4 when you expect data to be DWORD aligned.
              Any other value may be specified.
  
          @rtype:  dict( str S{->} str )
          @return: Dictionary mapping stack offsets to the data they point to.