There is a
and then there is
...
Edit: Forget lzma. You where right, vSRO uses zlib. I will look into it.
Edit2: Solution found. I'm using the ZlibDll from

You need to read the first 4 bytes. It stores the uncompressed size. The rest of the file is compressed data.
Code:
class Program
{
[DllImport("ZlibDll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int Decompress(byte[] compressed_buffer, int compressed_size, byte[] decompressed_buffer, ref int decompressed_size);
[DllImport("ZlibDll.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int Compress(byte[] decompressed_buffer, int decompressed_size, byte[] compressed_buffer, ref int compressed_size);
enum ZLIB_RESULT
{
Z_OK = 0,
Z_STREAM_END = 1,
Z_NEED_DICT = 2,
Z_ERRORNO = -1,
Z_STREAM_ERROR = -2,
Z_DATA_ERROR = -3,
Z_MEM_ERROR = -4,
Z_BUF_ERROR = -5,
Z_VERSION_ERROR = -6
}
static void Main(string[] args)
{
using (var fileStream = new FileStream("testFile.txt.zlib", FileMode.Open, FileAccess.Read))
{
using (BinaryReader reader = new BinaryReader(fileStream))
{
int compressed_size = (int)reader.BaseStream.Length - 4;
int decompressed_size = reader.ReadInt32();
byte[] compressed_buffer = reader.ReadBytes(compressed_size);
byte[] decompressed_buffer = new byte[decompressed_size];
ZLIB_RESULT result = (ZLIB_RESULT)Program.Decompress(compressed_buffer, compressed_size, decompressed_buffer, ref decompressed_size);
if (result == ZLIB_RESULT.Z_OK)
{
string content = Encoding.Default.GetString(decompressed_buffer);
Console.WriteLine("Sucess.\n" + content);
}
else
{
Console.WriteLine("Error: {0}", result.ToString());
}
}
}
Console.ReadLine();
}
}