public static Object deserializeBlob(byte[] blob, KnownVersion version, ByteArrayDataInput in)
      throws IOException, ClassNotFoundException {
    Object result;
    final long start = startDeserialization();
    if (blob.length > 0 && blob[0] == DSCODE.PDX.toByte()) {
      // If the first byte of blob indicates a pdx then wrap
      // blob in a PdxInputStream instead.
      // This will prevent us from making a copy of the byte[]
      // every time we deserialize a PdxInstance.
      try (PdxInputStream is = new PdxInputStream(blob)) {
        result = DataSerializer.readObject(is);
      }
    } else {
      // if we have a nested pdx then we want to make a copy
      // when a PdxInstance is created so that the byte[] will
      // just have the pdx bytes and not the outer objects bytes.
      if (in == null) {
        in = new ByteArrayDataInput();
      }
      in.initialize(blob, version);
      result = DataSerializer.readObject(in);
    }
    endDeserialization(start, blob.length);
    return result;
  }
A blob is a serialized Object. This method returns the deserialized object.
geode-core/src/main/java/org/apache/geode/internal/util/BlobHelper.java