From 57fd3f8a2589a0c408b3870f273e7b9ac3f091b6 Mon Sep 17 00:00:00 2001 From: CloneTrooper1019 Date: Sun, 12 Jul 2020 20:19:30 -0500 Subject: [PATCH] Brought spec up to date, improvements to stability --- BinaryFormat/BinaryRobloxFile.cs | 69 ++++++++++---------- BinaryFormat/Chunks/INST.cs | 10 +-- BinaryFormat/Chunks/META.cs | 13 ++-- BinaryFormat/Chunks/PRNT.cs | 56 ++++++++--------- BinaryFormat/Chunks/PROP.cs | 41 ++++++++---- BinaryFormat/Chunks/SIGN.cs | 56 +++++++++++++++++ BinaryFormat/Chunks/SSTR.cs | 44 +++++++------ BinaryFormat/IO/BinaryFileWriter.cs | 61 +++++++++++------- DataTypes/ProtectedString.cs | 41 +++++++++--- DataTypes/SharedString.cs | 47 +++++++++----- Interfaces/IBinaryFileChunk.cs | 4 +- RobloxFile.cs | 49 ++++++++++++++- RobloxFileFormat.csproj | 28 ++++----- RobloxFileFormat.dll | Bin 330752 -> 372736 bytes RobloxFileFormat.sln | 6 ++ Tree/Attributes.cs | 2 +- Tree/Instance.cs | 10 +-- Tree/Property.cs | 34 ++++++---- {LibTest => UnitTest/Files}/Binary.rbxl | Bin {LibTest => UnitTest/Files}/Xml.rbxlx | 0 {LibTest => UnitTest}/Program.cs | 73 +++++++++++++++++----- UnitTest/RobloxFileFormat.UnitTest.csproj | 31 +++++++++ Utility/Formatting.cs | 10 ++- XmlFormat/IO/XmlFileReader.cs | 22 ++++--- XmlFormat/IO/XmlFileWriter.cs | 40 +++++++++--- XmlFormat/Tokens/ProtectedString.cs | 25 +++++--- XmlFormat/Tokens/SharedString.cs | 16 +++-- XmlFormat/XmlRobloxFile.cs | 2 +- packages.config | 6 +- 29 files changed, 551 insertions(+), 245 deletions(-) create mode 100644 BinaryFormat/Chunks/SIGN.cs rename {LibTest => UnitTest/Files}/Binary.rbxl (100%) rename {LibTest => UnitTest/Files}/Xml.rbxlx (100%) rename {LibTest => UnitTest}/Program.cs (54%) create mode 100644 UnitTest/RobloxFileFormat.UnitTest.csproj diff --git a/BinaryFormat/BinaryRobloxFile.cs b/BinaryFormat/BinaryRobloxFile.cs index ec278fa..8029cc2 100644 --- a/BinaryFormat/BinaryRobloxFile.cs +++ b/BinaryFormat/BinaryRobloxFile.cs @@ -15,20 +15,22 @@ namespace RobloxFiles // Header Specific public const string MagicHeader = " Chunks = new List(); + internal List ChunksImpl = new List(); + public IReadOnlyList Chunks => ChunksImpl; public override string ToString() => GetType().Name; - public Instance[] Instances; - public INST[] Classes; + public Instance[] Instances { get; internal set; } + public INST[] Classes { get; internal set; } internal META META = null; internal SSTR SSTR = null; + internal SIGN SIGN = null; public bool HasMetadata => (META != null); public Dictionary Metadata => META?.Data; @@ -36,6 +38,9 @@ namespace RobloxFiles public bool HasSharedStrings => (SSTR != null); public IReadOnlyDictionary SharedStrings => SSTR?.Strings; + public bool HasSignatures => (SIGN != null); + public IReadOnlyList Signatures => SIGN?.Signatures; + public BinaryRobloxFile() { Name = "BinaryRobloxFile"; @@ -71,12 +76,10 @@ namespace RobloxFiles { try { - BinaryRobloxFileChunk chunk = new BinaryRobloxFileChunk(reader); - string chunkType = chunk.ChunkType; - + var chunk = new BinaryRobloxFileChunk(reader); IBinaryFileChunk handler = null; - switch (chunkType) + switch (chunk.ChunkType) { case "INST": handler = new INST(); @@ -93,22 +96,27 @@ namespace RobloxFiles case "SSTR": handler = new SSTR(); break; + case "SIGN": + handler = new SIGN(); + break; case "END\0": - Chunks.Add(chunk); + ChunksImpl.Add(chunk); reading = false; break; - default: - Console.WriteLine("BinaryRobloxFile - Unhandled chunk-type: {0}!", chunkType); + case string unhandled: + Console.WriteLine("BinaryRobloxFile - Unhandled chunk-type: {0}!", unhandled); break; + default: break; } if (handler != null) { - using (BinaryRobloxFileReader dataReader = chunk.GetDataReader(this)) - handler.LoadFromReader(dataReader); - chunk.Handler = handler; - Chunks.Add(chunk); + + using (var dataReader = chunk.GetDataReader(this)) + handler.Load(dataReader); + + ChunksImpl.Add(chunk); } } catch (EndOfStreamException) @@ -129,7 +137,7 @@ namespace RobloxFiles { // Clear the existing data. Referent = "-1"; - Chunks.Clear(); + ChunksImpl.Clear(); NumInstances = 0; NumClasses = 0; @@ -148,7 +156,7 @@ namespace RobloxFiles // Write the PROP chunks. foreach (INST inst in Classes) { - Dictionary props = PROP.CollectProperties(writer, inst); + var props = PROP.CollectProperties(writer, inst); foreach (string propName in props.Keys) { @@ -158,26 +166,23 @@ namespace RobloxFiles } // Write the PRNT chunk. - PRNT parents = new PRNT(); + var parents = new PRNT(); writer.SaveChunk(parents); // Write the SSTR chunk. if (HasSharedStrings) - { - var sharedStrings = SSTR.SaveAsChunk(writer); - Chunks.Insert(0, sharedStrings); - } + writer.SaveChunk(SSTR, 0); // Write the META chunk. if (HasMetadata) - { - var metaChunk = META.SaveAsChunk(writer); - Chunks.Insert(0, metaChunk); - } + writer.SaveChunk(META, 0); - // Write the END_ chunk. - var endChunk = writer.WriteEndChunk(); - Chunks.Add(endChunk); + // Write the SIGN chunk. + if (HasSignatures) + writer.SaveChunk(SIGN); + + // Write the END chunk. + writer.WriteChunk("END", ""); } ////////////////////////////////////////////////////////////////////////// diff --git a/BinaryFormat/Chunks/INST.cs b/BinaryFormat/Chunks/INST.cs index 0c948c9..7bde3a6 100644 --- a/BinaryFormat/Chunks/INST.cs +++ b/BinaryFormat/Chunks/INST.cs @@ -16,7 +16,7 @@ namespace RobloxFiles.BinaryFormat.Chunks public override string ToString() => ClassName; - public void LoadFromReader(BinaryRobloxFileReader reader) + public void Load(BinaryRobloxFileReader reader) { BinaryRobloxFile file = reader.File; @@ -59,10 +59,8 @@ namespace RobloxFiles.BinaryFormat.Chunks file.Classes[ClassIndex] = this; } - public BinaryRobloxFileChunk SaveAsChunk(BinaryRobloxFileWriter writer) + public void Save(BinaryRobloxFileWriter writer) { - writer.StartWritingChunk(this); - writer.Write(ClassIndex); writer.WriteString(ClassName); @@ -72,7 +70,7 @@ namespace RobloxFiles.BinaryFormat.Chunks if (IsService) { - BinaryRobloxFile file = writer.File; + var file = writer.File; foreach (int instId in InstanceIds) { @@ -80,8 +78,6 @@ namespace RobloxFiles.BinaryFormat.Chunks writer.Write(service.Parent == file); } } - - return writer.FinishWritingChunk(); } } } diff --git a/BinaryFormat/Chunks/META.cs b/BinaryFormat/Chunks/META.cs index 438752f..9506a6c 100644 --- a/BinaryFormat/Chunks/META.cs +++ b/BinaryFormat/Chunks/META.cs @@ -6,7 +6,7 @@ namespace RobloxFiles.BinaryFormat.Chunks { public Dictionary Data = new Dictionary(); - public void LoadFromReader(BinaryRobloxFileReader reader) + public void Load(BinaryRobloxFileReader reader) { BinaryRobloxFile file = reader.File; int numEntries = reader.ReadInt32(); @@ -21,18 +21,15 @@ namespace RobloxFiles.BinaryFormat.Chunks file.META = this; } - public BinaryRobloxFileChunk SaveAsChunk(BinaryRobloxFileWriter writer) + public void Save(BinaryRobloxFileWriter writer) { - writer.StartWritingChunk(this); writer.Write(Data.Count); - foreach (var kvPair in Data) + foreach (var pair in Data) { - writer.WriteString(kvPair.Key); - writer.WriteString(kvPair.Value); + writer.WriteString(pair.Key); + writer.WriteString(pair.Value); } - - return writer.FinishWritingChunk(); } } } diff --git a/BinaryFormat/Chunks/PRNT.cs b/BinaryFormat/Chunks/PRNT.cs index 23ba0f6..0803c48 100644 --- a/BinaryFormat/Chunks/PRNT.cs +++ b/BinaryFormat/Chunks/PRNT.cs @@ -1,29 +1,29 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace RobloxFiles.BinaryFormat.Chunks { public class PRNT : IBinaryFileChunk { - public byte Format { get; private set; } - public int NumRelations { get; private set; } + private const byte FORMAT = 0; - public List ChildrenIds { get; private set; } - public List ParentIds { get; private set; } - - public void LoadFromReader(BinaryRobloxFileReader reader) + public void Load(BinaryRobloxFileReader reader) { BinaryRobloxFile file = reader.File; - Format = reader.ReadByte(); - NumRelations = reader.ReadInt32(); + byte format = reader.ReadByte(); + int idCount = reader.ReadInt32(); - ChildrenIds = reader.ReadInstanceIds(NumRelations); - ParentIds = reader.ReadInstanceIds(NumRelations); + if (format != FORMAT) + throw new Exception($"Unexpected PRNT format: {format} (expected {FORMAT}!)"); + + var childIds = reader.ReadInstanceIds(idCount); + var parentIds = reader.ReadInstanceIds(idCount); - for (int i = 0; i < NumRelations; i++) + for (int i = 0; i < idCount; i++) { - int childId = ChildrenIds[i]; - int parentId = ParentIds[i]; + int childId = childIds[i]; + int parentId = parentIds[i]; Instance child = file.Instances[childId]; child.Parent = (parentId >= 0 ? file.Instances[parentId] : file); @@ -31,15 +31,13 @@ namespace RobloxFiles.BinaryFormat.Chunks } } - public BinaryRobloxFileChunk SaveAsChunk(BinaryRobloxFileWriter writer) + public void Save(BinaryRobloxFileWriter writer) { - writer.StartWritingChunk(this); + var postInstances = writer.PostInstances; + var idCount = postInstances.Count; - Format = 0; - NumRelations = 0; - - ChildrenIds = new List(); - ParentIds = new List(); + var childIds = new List(); + var parentIds = new List(); foreach (Instance inst in writer.PostInstances) { @@ -51,19 +49,15 @@ namespace RobloxFiles.BinaryFormat.Chunks if (parent != null) parentId = int.Parse(parent.Referent); - ChildrenIds.Add(childId); - ParentIds.Add(parentId); - - NumRelations++; + childIds.Add(childId); + parentIds.Add(parentId); } - writer.Write(Format); - writer.Write(NumRelations); + writer.Write(FORMAT); + writer.Write(idCount); - writer.WriteInstanceIds(ChildrenIds); - writer.WriteInstanceIds(ParentIds); - - return writer.FinishWritingChunk(); + writer.WriteInstanceIds(childIds); + writer.WriteInstanceIds(parentIds); } } } diff --git a/BinaryFormat/Chunks/PROP.cs b/BinaryFormat/Chunks/PROP.cs index f3463cc..8108ce2 100644 --- a/BinaryFormat/Chunks/PROP.cs +++ b/BinaryFormat/Chunks/PROP.cs @@ -29,7 +29,7 @@ namespace RobloxFiles.BinaryFormat.Chunks return $"{Type} {ClassName}.{Name}"; } - public void LoadFromReader(BinaryRobloxFileReader reader) + public void Load(BinaryRobloxFileReader reader) { BinaryRobloxFile file = reader.File; @@ -71,7 +71,6 @@ namespace RobloxFiles.BinaryFormat.Chunks } }); - // Read the property data based on the property type. switch (Type) { case PropertyType.String: @@ -500,13 +499,22 @@ namespace RobloxFiles.BinaryFormat.Chunks readProperties(i => { uint key = SharedKeys[i]; - return file.SharedStrings[key]; }); + break; + case PropertyType.ProtectedString: + readProperties(i => + { + int length = reader.ReadInt32(); + byte[] buffer = reader.ReadBytes(length); + + return new ProtectedString(buffer); + }); + break; default: - Console.WriteLine("Unhandled property type: {0}!", Type); + Console.Error.WriteLine("Unhandled property type: {0}!", Type); break; // } @@ -546,7 +554,7 @@ namespace RobloxFiles.BinaryFormat.Chunks return propMap; } - public BinaryRobloxFileChunk SaveAsChunk(BinaryRobloxFileWriter writer) + public void Save(BinaryRobloxFileWriter writer) { BinaryRobloxFile file = writer.File; @@ -567,9 +575,7 @@ namespace RobloxFiles.BinaryFormat.Chunks props.Add(prop); } - writer.StartWritingChunk(this); writer.Write(ClassIndex); - writer.WriteString(Name); writer.Write(TypeId); @@ -996,12 +1002,12 @@ namespace RobloxFiles.BinaryFormat.Chunks props.ForEach(prop => { - SharedString shared = prop.CastValue(); - string key = shared.MD5_Key; + var shared = prop.CastValue(); + string key = shared.Key; if (!sstr.Lookup.ContainsKey(key)) { - uint id = (uint)(sstr.NumHashes++); + uint id = (uint)(sstr.Lookup.Count); sstr.Strings.Add(id, shared); sstr.Lookup.Add(key, id); } @@ -1012,10 +1018,19 @@ namespace RobloxFiles.BinaryFormat.Chunks writer.WriteInterleaved(sharedKeys); break; - // + case PropertyType.ProtectedString: + props.ForEach(prop => + { + var protect = prop.CastValue(); + byte[] buffer = protect.RawBuffer; + + writer.Write(buffer.Length); + writer.Write(buffer); + }); + + break; + default: break; } - - return writer.FinishWritingChunk(); } } } diff --git a/BinaryFormat/Chunks/SIGN.cs b/BinaryFormat/Chunks/SIGN.cs new file mode 100644 index 0000000..7c0a51f --- /dev/null +++ b/BinaryFormat/Chunks/SIGN.cs @@ -0,0 +1,56 @@ +namespace RobloxFiles.BinaryFormat.Chunks +{ + public struct Signature + { + public int Version; + public long Id; + + public int Length; + public byte[] Data; + } + + public class SIGN : IBinaryFileChunk + { + public Signature[] Signatures; + + public void Load(BinaryRobloxFileReader reader) + { + int numSignatures = reader.ReadInt32(); + Signatures = new Signature[numSignatures]; + + for (int i = 0; i < numSignatures; i++) + { + var signature = new Signature + { + Version = reader.ReadInt32(), + Id = reader.ReadInt64(), + + Length = reader.ReadInt32(), + }; + + signature.Data = reader.ReadBytes(signature.Length); + Signatures[i] = signature; + } + + var file = reader.File; + file.SIGN = this; + } + + public void Save(BinaryRobloxFileWriter writer) + { + writer.Write(Signatures.Length); + + for (int i = 0; i < Signatures.Length; i++) + { + var signature = Signatures[i]; + signature.Length = signature.Data.Length; + + writer.Write(signature.Version); + writer.Write(signature.Id); + + writer.Write(signature.Length); + writer.Write(signature.Data); + } + } + } +} diff --git a/BinaryFormat/Chunks/SSTR.cs b/BinaryFormat/Chunks/SSTR.cs index 32c5bee..80ac007 100644 --- a/BinaryFormat/Chunks/SSTR.cs +++ b/BinaryFormat/Chunks/SSTR.cs @@ -6,56 +6,54 @@ namespace RobloxFiles.BinaryFormat.Chunks { public class SSTR : IBinaryFileChunk { - public int Version; - public int NumHashes; + private const int FORMAT = 0; - public Dictionary Lookup = new Dictionary(); - public Dictionary Strings = new Dictionary(); + internal Dictionary Lookup = new Dictionary(); + internal Dictionary Strings = new Dictionary(); - public void LoadFromReader(BinaryRobloxFileReader reader) + public void Load(BinaryRobloxFileReader reader) { BinaryRobloxFile file = reader.File; - Version = reader.ReadInt32(); - NumHashes = reader.ReadInt32(); + int format = reader.ReadInt32(); + int numHashes = reader.ReadInt32(); - for (uint id = 0; id < NumHashes; id++) + if (format != FORMAT) + throw new Exception($"Unexpected SSTR format: {format} (expected {FORMAT}!)"); + + for (uint id = 0; id < numHashes; id++) { - byte[] md5 = reader.ReadBytes(16); - - int length = reader.ReadInt32(); - byte[] data = reader.ReadBytes(length); + byte[] hash = reader.ReadBytes(16); + string key = Convert.ToBase64String(hash); + byte[] data = reader.ReadBuffer(); SharedString value = SharedString.FromBuffer(data); - Lookup.Add(value.MD5_Key, id); + + Lookup.Add(key, id); Strings.Add(id, value); } file.SSTR = this; } - public BinaryRobloxFileChunk SaveAsChunk(BinaryRobloxFileWriter writer) + public void Save(BinaryRobloxFileWriter writer) { - writer.StartWritingChunk(this); - - writer.Write(Version); - writer.Write(NumHashes); + writer.Write(FORMAT); + writer.Write(Lookup.Count); foreach (var pair in Lookup) { string key = pair.Key; - byte[] md5 = Convert.FromBase64String(key); - writer.Write(md5); + byte[] hash = Convert.FromBase64String(key); + writer.Write(hash); SharedString value = Strings[pair.Value]; - byte[] buffer = SharedString.FindRecord(value.MD5_Key); + byte[] buffer = SharedString.Find(value.Key); writer.Write(buffer.Length); writer.Write(buffer); } - - return writer.FinishWritingChunk(); } } } diff --git a/BinaryFormat/IO/BinaryFileWriter.cs b/BinaryFormat/IO/BinaryFileWriter.cs index a70c253..f397900 100644 --- a/BinaryFormat/IO/BinaryFileWriter.cs +++ b/BinaryFormat/IO/BinaryFileWriter.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Globalization; using System.IO; using System.Linq; using System.Runtime.InteropServices; @@ -18,14 +17,16 @@ namespace RobloxFiles.BinaryFormat public string ChunkType { get; private set; } public long ChunkStart { get; private set; } - public Dictionary ClassMap; public readonly BinaryRobloxFile File; + // Dictionary mapping ClassNames to their INST chunks. + private readonly Dictionary ClassMap; + // Instances in parent->child order - public List Instances; + private readonly List Instances; // Instances in child->parent order - public List PostInstances; + internal List PostInstances { get; private set; } public BinaryRobloxFileWriter(BinaryRobloxFile file, Stream workBuffer = null) : base(workBuffer ?? new MemoryStream()) { @@ -104,13 +105,13 @@ namespace RobloxFiles.BinaryFormat } // Encodes an int for an interleaved buffer. - private int EncodeInt(int value) + private static int EncodeInt(int value) { return (value << 1) ^ (value >> 31); } // Encodes a float for an interleaved buffer. - private float EncodeFloat(float value) + private static float EncodeFloat(float value) { byte[] buffer = BitConverter.GetBytes(value); uint bits = BitConverter.ToUInt32(buffer, 0); @@ -171,9 +172,9 @@ namespace RobloxFiles.BinaryFormat Instances.Add(instance); string className = instance.ClassName; - INST inst = null; + INST inst; - if (!ClassMap.ContainsKey(className)) + if (!ClassMap.TryGetValue(className, out inst)) { inst = new INST() { @@ -184,11 +185,7 @@ namespace RobloxFiles.BinaryFormat ClassMap.Add(className, inst); } - else - { - inst = ClassMap[className]; - } - + inst.NumInstances++; inst.InstanceIds.Add(instId); @@ -222,7 +219,7 @@ namespace RobloxFiles.BinaryFormat } // Marks that we are writing a chunk. - public bool StartWritingChunk(string chunkType) + private bool StartWritingChunk(string chunkType) { if (chunkType.Length != 4) throw new Exception("BinaryFileWriter.StartWritingChunk - ChunkType length should be 4!"); @@ -241,7 +238,7 @@ namespace RobloxFiles.BinaryFormat } // Marks that we are writing a chunk. - public bool StartWritingChunk(IBinaryFileChunk chunk) + private bool StartWritingChunk(IBinaryFileChunk chunk) { if (!WritingChunk) { @@ -257,7 +254,7 @@ namespace RobloxFiles.BinaryFormat } // Compresses the data that was written into a BinaryRobloxFileChunk and writes it. - public BinaryRobloxFileChunk FinishWritingChunk(bool compress = true) + private BinaryRobloxFileChunk FinishWritingChunk(bool compress = true) { if (!WritingChunk) throw new Exception($"BinaryRobloxFileWriter: Cannot finish writing a chunk without starting one!"); @@ -283,18 +280,36 @@ namespace RobloxFiles.BinaryFormat return chunk; } - public void SaveChunk(IBinaryFileChunk handler) + internal BinaryRobloxFileChunk SaveChunk(IBinaryFileChunk handler, int insertPos = -1) { - var chunk = handler.SaveAsChunk(this); - File.Chunks.Add(chunk); + StartWritingChunk(handler); + handler.Save(this); + + var chunk = FinishWritingChunk(); + + if (insertPos >= 0) + File.ChunksImpl.Insert(insertPos, chunk); + else + File.ChunksImpl.Add(chunk); + + return chunk; } - public BinaryRobloxFileChunk WriteEndChunk() + internal BinaryRobloxFileChunk WriteChunk(string chunkType, string content, bool compress = false) { - StartWritingChunk("END\0"); - WriteString("", true); + if (chunkType.Length > 4) + chunkType = chunkType.Substring(0, 4); - return FinishWritingChunk(false); + while (chunkType.Length < 4) + chunkType += '\0'; + + StartWritingChunk(chunkType); + WriteString(content); + + var chunk = FinishWritingChunk(compress); + File.ChunksImpl.Add(chunk); + + return chunk; } } } diff --git a/DataTypes/ProtectedString.cs b/DataTypes/ProtectedString.cs index 3b6bc57..97e763b 100644 --- a/DataTypes/ProtectedString.cs +++ b/DataTypes/ProtectedString.cs @@ -1,27 +1,54 @@ -namespace RobloxFiles.DataTypes +using System.Text; + +namespace RobloxFiles.DataTypes { /// - /// ProtectedString is a type used by some of the XML properties. - /// Here, it only exists as a wrapper class for strings. + /// ProtectedString is a type used by the Source property of scripts. + /// If constructed as an array of bytes, it's assumed to be compiled byte-code. /// public class ProtectedString { - public readonly string ProtectedValue; - public override string ToString() => ProtectedValue; + public readonly bool IsCompiled; + public readonly byte[] RawBuffer; + + public override string ToString() + { + if (IsCompiled) + return $"byte[{RawBuffer.Length}]"; + + return Encoding.UTF8.GetString(RawBuffer); + } public ProtectedString(string value) { - ProtectedValue = value; + IsCompiled = false; + RawBuffer = Encoding.UTF8.GetBytes(value); + } + + public ProtectedString(byte[] compiled) + { + IsCompiled = true; + RawBuffer = compiled; } public static implicit operator string(ProtectedString protectedString) { - return protectedString.ProtectedValue; + return Encoding.UTF8.GetString(protectedString.RawBuffer); } public static implicit operator ProtectedString(string value) { return new ProtectedString(value); } + + public static implicit operator byte[](ProtectedString protectedString) + { + return protectedString.RawBuffer; + } + + public static implicit operator ProtectedString(byte[] value) + { + return new ProtectedString(value); + } } } diff --git a/DataTypes/SharedString.cs b/DataTypes/SharedString.cs index 98a17ae..e924d27 100644 --- a/DataTypes/SharedString.cs +++ b/DataTypes/SharedString.cs @@ -1,43 +1,58 @@ using System; -using System.Collections.Generic; using System.Text; -using System.Security.Cryptography; +using System.Collections.Generic; +using Konscious.Security.Cryptography; namespace RobloxFiles.DataTypes { + // SharedString is a datatype that takes a sequence of bytes and stores it in a + // lookup table that is shared by the entire file. It originally used MD5 for the + // hashing, but Roblox now uses Blake2B to avoid the obvious problems with using MD5. + + // In practice the value of a SharedString does not have to match the hash of the + // data it represents, it just needs to be distinct and MUST be 16 bytes long. + // The XML format still uses 'md5' as its attribute key to the lookup table. + public class SharedString { - private static Dictionary Records = new Dictionary(); - public readonly string MD5_Key; + private static Dictionary Lookup = new Dictionary(); + public string Key { get; internal set; } + public string ComputedKey { get; internal set; } - public byte[] SharedValue => FindRecord(MD5_Key); - public override string ToString() => $"MD5 Key: {MD5_Key}"; + public byte[] SharedValue => Find(ComputedKey ?? Key); + public override string ToString() => $"Key: {ComputedKey ?? Key}"; - internal SharedString(string md5) + internal SharedString(string key) { - MD5_Key = md5; + Key = key; + } + + internal static void Register(string key, byte[] buffer) + { + Lookup.Add(key, buffer); } private SharedString(byte[] buffer) { - using (MD5 md5 = MD5.Create()) + using (HMACBlake2B blake2B = new HMACBlake2B(16 * 8)) { - byte[] hash = md5.ComputeHash(buffer); - MD5_Key = Convert.ToBase64String(hash); + byte[] hash = blake2B.ComputeHash(buffer); + ComputedKey = Convert.ToBase64String(hash); + Key = ComputedKey; } - if (Records.ContainsKey(MD5_Key)) + if (Lookup.ContainsKey(ComputedKey)) return; - Records.Add(MD5_Key, buffer); + Register(ComputedKey, buffer); } - public static byte[] FindRecord(string key) + public static byte[] Find(string key) { byte[] result = null; - if (Records.ContainsKey(key)) - result = Records[key]; + if (Lookup.ContainsKey(key)) + result = Lookup[key]; return result; } diff --git a/Interfaces/IBinaryFileChunk.cs b/Interfaces/IBinaryFileChunk.cs index 6011ecc..0a02908 100644 --- a/Interfaces/IBinaryFileChunk.cs +++ b/Interfaces/IBinaryFileChunk.cs @@ -2,7 +2,7 @@ { public interface IBinaryFileChunk { - void LoadFromReader(BinaryRobloxFileReader reader); - BinaryRobloxFileChunk SaveAsChunk(BinaryRobloxFileWriter writer); + void Load(BinaryRobloxFileReader reader); + void Save(BinaryRobloxFileWriter writer); } } diff --git a/RobloxFile.cs b/RobloxFile.cs index 051b84e..852cd09 100644 --- a/RobloxFile.cs +++ b/RobloxFile.cs @@ -6,17 +6,23 @@ using System.Threading.Tasks; namespace RobloxFiles { /// - /// Represents a loaded *.rbxl/*.rbxm Roblox file. - /// The contents of the RobloxFile are stored as its children. + /// Represents a loaded Roblox place/model file. + /// RobloxFile is an Instance and its children are the contents of the file. /// public abstract class RobloxFile : Instance { protected abstract void ReadFile(byte[] buffer); + + /// + /// Saves this RobloxFile to the provided stream. + /// + /// The stream to save to. public abstract void Save(Stream stream); /// /// Opens a RobloxFile using the provided buffer. /// + /// The opened RobloxFile. public static RobloxFile Open(byte[] buffer) { if (buffer.Length > 14) @@ -38,11 +44,12 @@ namespace RobloxFiles throw new Exception("Unrecognized header!"); } - + /// /// Opens a Roblox file by reading from a provided Stream. /// /// The stream to read the Roblox file from. + /// The opened RobloxFile. public static RobloxFile Open(Stream stream) { byte[] buffer; @@ -60,6 +67,7 @@ namespace RobloxFiles /// Opens a Roblox file from a provided file path. /// /// A path to a Roblox file to be opened. + /// The opened RobloxFile. public static RobloxFile Open(string filePath) { byte[] buffer = File.ReadAllBytes(filePath); @@ -70,6 +78,7 @@ namespace RobloxFiles /// Creates and runs a Task to open a Roblox file from a byte sequence that represents the file. /// /// A byte sequence that represents the file. + /// A task which will complete once the file is opened with the resulting RobloxFile. public static Task OpenAsync(byte[] buffer) { return Task.Run(() => Open(buffer)); @@ -79,6 +88,7 @@ namespace RobloxFiles /// Creates and runs a Task to open a Roblox file using a provided Stream. /// /// The stream to read the Roblox file from. + /// A task which will complete once the file is opened with the resulting RobloxFile. public static Task OpenAsync(Stream stream) { return Task.Run(() => Open(stream)); @@ -88,9 +98,42 @@ namespace RobloxFiles /// Opens a Roblox file from a provided file path. /// /// A path to a Roblox file to be opened. + /// A task which will complete once the file is opened with the resulting RobloxFile. public static Task OpenAsync(string filePath) { return Task.Run(() => Open(filePath)); } + + /// + /// Saves this RobloxFile to the provided file path. + /// + /// A path to where the file should be saved. + public void Save(string filePath) + { + using (FileStream stream = File.OpenWrite(filePath)) + { + Save(stream); + } + } + + /// + /// Asynchronously saves this RobloxFile to the provided stream. + /// + /// The stream to save to. + /// A task which will complete upon the save's completion. + public Task SaveAsync(Stream stream) + { + return Task.Run(() => Save(stream)); + } + + /// + /// Asynchronously saves this RobloxFile to the provided file path. + /// + /// A path to where the file should be saved. + /// A task which will complete upon the save's completion. + public Task SaveAsync(string filePath) + { + return Task.Run(() => Save(filePath)); + } } } diff --git a/RobloxFileFormat.csproj b/RobloxFileFormat.csproj index 2003c35..8d44611 100644 --- a/RobloxFileFormat.csproj +++ b/RobloxFileFormat.csproj @@ -1,6 +1,6 @@  - + Debug @@ -52,9 +52,11 @@ - - packages\Costura.Fody.3.3.3\lib\net40\Costura.dll - True + + packages\Costura.Fody.4.1.0\lib\net40\Costura.dll + + + packages\Konscious.Security.Cryptography.Blake2.1.0.9\lib\net46\Konscious.Security.Cryptography.Blake2.dll packages\lz4net.1.0.15.93\lib\net4-client\LZ4.dll @@ -62,6 +64,10 @@ + + + packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + @@ -76,6 +82,7 @@ + @@ -88,7 +95,6 @@ - @@ -167,24 +173,18 @@ - - Always - - - Always - copy /y $(TargetPath) $(ProjectDir)$(TargetFileName) - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - + + + \ No newline at end of file diff --git a/RobloxFileFormat.dll b/RobloxFileFormat.dll index 16a4ea622e0562db8973320a089ee0ee2ad96874..8931291e5b8cccce1424c4ab9fd76f8a4b5b1d53 100644 GIT binary patch delta 189369 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 L{}<_jT*Lnd_;6j= delta 147192 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

P+DVi%>@O)2(-;xw@^oF=z0oF+{ePLogAZW-RR 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 diff --git a/RobloxFileFormat.sln b/RobloxFileFormat.sln index 3907fb4..aceb440 100644 --- a/RobloxFileFormat.sln +++ b/RobloxFileFormat.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.29920.165 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RobloxFileFormat", "RobloxFileFormat.csproj", "{CF50C0E2-23A7-4DC1-B4B2-E60CDE716253}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RobloxFileFormat.UnitTest", "UnitTest\RobloxFileFormat.UnitTest.csproj", "{6BCA31B2-58D8-4689-9929-88E16040BF29}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,10 @@ Global {CF50C0E2-23A7-4DC1-B4B2-E60CDE716253}.Debug|Any CPU.Build.0 = Debug|Any CPU {CF50C0E2-23A7-4DC1-B4B2-E60CDE716253}.Release|Any CPU.ActiveCfg = Release|Any CPU {CF50C0E2-23A7-4DC1-B4B2-E60CDE716253}.Release|Any CPU.Build.0 = Release|Any CPU + {6BCA31B2-58D8-4689-9929-88E16040BF29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {6BCA31B2-58D8-4689-9929-88E16040BF29}.Debug|Any CPU.Build.0 = Debug|Any CPU + {6BCA31B2-58D8-4689-9929-88E16040BF29}.Release|Any CPU.ActiveCfg = Release|Any CPU + {6BCA31B2-58D8-4689-9929-88E16040BF29}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Tree/Attributes.cs b/Tree/Attributes.cs index 12811e9..ef86b4a 100644 --- a/Tree/Attributes.cs +++ b/Tree/Attributes.cs @@ -54,7 +54,7 @@ namespace RobloxFiles } internal BinaryReader reader; - internal BinaryWriter writer; + // internal BinaryWriter writer; internal int readInt() => reader.ReadInt32(); internal byte readByte() => reader.ReadByte(); diff --git a/Tree/Instance.cs b/Tree/Instance.cs index 3a9fa4a..0f6d07c 100644 --- a/Tree/Instance.cs +++ b/Tree/Instance.cs @@ -520,12 +520,12 @@ namespace RobloxFiles continue; PropertyType propType = PropertyType.Unknown; - - if (fieldType.IsEnum) - propType = PropertyType.Enum; - else if (Property.Types.ContainsKey(fieldType)) + + if (Property.Types.ContainsKey(fieldType)) propType = Property.Types[fieldType]; - + else if (fieldType.IsEnum) + propType = PropertyType.Enum; + if (propType != PropertyType.Unknown) { if (fieldName.EndsWith("_")) diff --git a/Tree/Property.cs b/Tree/Property.cs index da40774..fedfb54 100644 --- a/Tree/Property.cs +++ b/Tree/Property.cs @@ -42,6 +42,7 @@ namespace RobloxFiles Color3uint8, Int64, SharedString, + ProtectedString } public class Property @@ -60,6 +61,7 @@ namespace RobloxFiles internal static BindingFlags BindingFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase; internal static MemberTypes FieldOrProperty = MemberTypes.Field | MemberTypes.Property; + // !! FIXME: Map typeof(ProtectedString) to PropertyType.ProtectedString when binary files are allowed to read it. public static readonly IReadOnlyDictionary Types = new Dictionary() { { typeof(Axes), PropertyType.Axes }, @@ -92,24 +94,30 @@ namespace RobloxFiles { typeof(ColorSequence), PropertyType.ColorSequence }, { typeof(NumberSequence), PropertyType.NumberSequence }, - { typeof(ProtectedString), PropertyType.String }, + { typeof(ProtectedString), PropertyType.String }, { typeof(PhysicalProperties), PropertyType.PhysicalProperties }, }; private void ImproviseRawBuffer() { - if (RawValue is byte[]) - { - RawBuffer = RawValue as byte[]; - return; - } - else if (RawValue is SharedString) + if (RawValue is SharedString) { var sharedString = CastValue(); RawBuffer = sharedString.SharedValue; return; } - + else if (RawValue is ProtectedString) + { + var protectedString = CastValue(); + RawBuffer = protectedString.RawBuffer; + return; + } + else if (RawValue is byte[]) + { + RawBuffer = RawValue as byte[]; + return; + } + switch (Type) { case PropertyType.Int: @@ -127,7 +135,7 @@ namespace RobloxFiles case PropertyType.Double: RawBuffer = BitConverter.GetBytes((double)Value); break; - // + default: break; } } @@ -142,8 +150,12 @@ namespace RobloxFiles if (typeName == Name) { - FieldInfo directField = instType.GetField(typeName, BindingFlags.DeclaredOnly); - + FieldInfo directField = instType + .GetFields() + .Where(field => field.Name.StartsWith(Name)) + .Where(field => field.DeclaringType == instType) + .FirstOrDefault(); + if (directField != null) { var implicitName = Name + '_'; diff --git a/LibTest/Binary.rbxl b/UnitTest/Files/Binary.rbxl similarity index 100% rename from LibTest/Binary.rbxl rename to UnitTest/Files/Binary.rbxl diff --git a/LibTest/Xml.rbxlx b/UnitTest/Files/Xml.rbxlx similarity index 100% rename from LibTest/Xml.rbxlx rename to UnitTest/Files/Xml.rbxlx diff --git a/LibTest/Program.cs b/UnitTest/Program.cs similarity index 54% rename from LibTest/Program.cs rename to UnitTest/Program.cs index 92d7b3b..5bc14ab 100644 --- a/LibTest/Program.cs +++ b/UnitTest/Program.cs @@ -2,19 +2,59 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; +using System.Linq; using System.Text.RegularExpressions; using RobloxFiles.DataTypes; -namespace RobloxFiles +namespace RobloxFiles.UnitTest { - // If the solution is built as an exe, this class is - // used to drive some basic testing of the library. - - internal static class Program + static class Program { const string pattern = "\\d+$"; + static void PrintTreeImpl(Instance inst, int stack = 0) + { + string padding = ""; + string extension = ""; + + for (int i = 0; i < stack; i++) + padding += '\t'; + + switch (inst.ClassName) + { + case "Script": + extension = ".server.lua"; + break; + case "LocalScript": + extension = ".client.lua"; + break; + case "ModuleScript": + extension = ".lua"; + break; + default: break; + } + + Console.WriteLine($"{padding}{inst.Name}{extension}"); + + var children = inst + .GetChildren() + .ToList(); + + children.ForEach(child => PrintTreeImpl(child, stack + 1)); + } + + static void PrintTree(string path) + { + Console.WriteLine("Opening file..."); + RobloxFile target = RobloxFile.Open(path); + + foreach (Instance child in target.GetChildren()) + PrintTreeImpl(child); + + Debugger.Break(); + } + static void CountAssets(string path) { Console.WriteLine("Opening file..."); @@ -23,6 +63,14 @@ namespace RobloxFiles var workspace = target.FindFirstChildOfClass(); var assets = new HashSet(); + if (workspace == null) + { + Console.WriteLine("No workspace found!"); + Debugger.Break(); + + return; + } + foreach (Instance inst in workspace.GetDescendants()) { var instPath = inst.GetFullName(); @@ -63,22 +111,19 @@ namespace RobloxFiles if (args.Length > 0) { string path = args[0]; - CountAssets(path); + PrintTree(path); } else { - RobloxFile bin = RobloxFile.Open(@"LibTest\Binary.rbxl"); - RobloxFile xml = RobloxFile.Open(@"LibTest\Xml.rbxlx"); + RobloxFile bin = RobloxFile.Open(@"Files\Binary.rbxl"); + RobloxFile xml = RobloxFile.Open(@"Files\Xml.rbxlx"); Console.WriteLine("Files opened! Pausing execution for debugger analysis..."); Debugger.Break(); - using (FileStream binStream = File.OpenWrite(@"LibTest\Binary_SaveTest.rbxl")) - bin.Save(binStream); - - using (FileStream xmlStream = File.OpenWrite(@"LibTest\Xml_SaveTest.rbxlx")) - xml.Save(xmlStream); - + bin.Save(@"Files\Binary_SaveTest.rbxl"); + xml.Save(@"Files\Xml_SaveTest.rbxlx"); + Console.WriteLine("Files saved! Pausing execution for debugger analysis..."); Debugger.Break(); } diff --git a/UnitTest/RobloxFileFormat.UnitTest.csproj b/UnitTest/RobloxFileFormat.UnitTest.csproj new file mode 100644 index 0000000..49947c4 --- /dev/null +++ b/UnitTest/RobloxFileFormat.UnitTest.csproj @@ -0,0 +1,31 @@ + + + + WinExe + netcoreapp3.1 + + + + + + + + + + + Always + + + Always + + + + + + + + + + + + diff --git a/Utility/Formatting.cs b/Utility/Formatting.cs index aea7fb9..c6a9fd6 100644 --- a/Utility/Formatting.cs +++ b/Utility/Formatting.cs @@ -115,14 +115,18 @@ internal static class Formatting return Math.Abs(a - b) < epsilon; } + public static byte[] ReadBuffer(this BinaryReader reader) + { + int len = reader.ReadInt32(); + return reader.ReadBytes(len); + } + public static string ReadString(this BinaryReader reader, bool useIntLength) { if (!useIntLength) return reader.ReadString(); - int len = reader.ReadInt32(); - byte[] buffer = reader.ReadBytes(len); - + byte[] buffer = reader.ReadBuffer(); return Encoding.UTF8.GetString(buffer); } } \ No newline at end of file diff --git a/XmlFormat/IO/XmlFileReader.cs b/XmlFormat/IO/XmlFileReader.cs index aa1e908..edd070c 100644 --- a/XmlFormat/IO/XmlFileReader.cs +++ b/XmlFormat/IO/XmlFileReader.cs @@ -11,7 +11,7 @@ namespace RobloxFiles.XmlFormat { var errorHandler = new Func((message) => { - string contents = $"XmlDataReader.{label}: {message}"; + string contents = $"XmlRobloxFileReader.{label}: {message}"; return new Exception(contents); }); @@ -29,19 +29,25 @@ namespace RobloxFiles.XmlFormat { if (sharedString.Name == "SharedString") { - XmlNode md5Node = sharedString.Attributes.GetNamedItem("md5"); + XmlNode hashNode = sharedString.Attributes.GetNamedItem("md5"); - if (md5Node == null) + if (hashNode == null) throw error("Got a SharedString without an 'md5' attribute!"); - string key = md5Node.InnerText; + string key = hashNode.InnerText; string value = sharedString.InnerText.Replace("\n", ""); - byte[] buffer = Convert.FromBase64String(value); - SharedString record = SharedString.FromBase64(value); + byte[] hash = Convert.FromBase64String(key); + var record = SharedString.FromBase64(value); - if (record.MD5_Key != key) - throw error("The provided md5 hash did not match with the md5 hash computed for the value!"); + if (hash.Length != 16) + throw error($"SharedString base64 key '{key}' must decode to byte[16]!"); + + if (key != record.Key) + { + SharedString.Register(key, record.SharedValue); + record.Key = key; + } file.SharedStrings.Add(key); } diff --git a/XmlFormat/IO/XmlFileWriter.cs b/XmlFormat/IO/XmlFileWriter.cs index 504a5d6..14249b3 100644 --- a/XmlFormat/IO/XmlFileWriter.cs +++ b/XmlFormat/IO/XmlFileWriter.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Text; using System.Xml; @@ -47,6 +48,9 @@ namespace RobloxFiles.XmlFormat public static XmlNode WriteProperty(Property prop, XmlDocument doc, XmlRobloxFile file) { + if (prop.Name == "Archivable") + return null; + string propType = prop.XmlToken; if (propType == null) @@ -78,6 +82,7 @@ namespace RobloxFiles.XmlFormat case PropertyType.String: propType = (prop.HasRawBuffer ? "BinaryString" : "string"); break; + default: break; } } @@ -89,6 +94,19 @@ namespace RobloxFiles.XmlFormat return null; } + if (prop.Type == PropertyType.SharedString) + { + SharedString value = prop.CastValue(); + + if (value.ComputedKey == null) + { + var newShared = SharedString.FromBuffer(value.SharedValue); + value.Key = newShared.ComputedKey; + } + + file.SharedStrings.Add(value.Key); + } + XmlElement propElement = doc.CreateElement(propType); propElement.SetAttribute("name", prop.Name); @@ -102,12 +120,6 @@ namespace RobloxFiles.XmlFormat propNode = newNode; } - if (prop.Type == PropertyType.SharedString) - { - SharedString value = prop.CastValue(); - file.SharedStrings.Add(value.MD5_Key); - } - return propNode; } @@ -124,11 +136,19 @@ namespace RobloxFiles.XmlFormat instNode.AppendChild(propsNode); var props = instance.RefreshProperties(); + + var orderedKeys = props + .OrderBy(pair => pair.Key) + .Select(pair => pair.Key); - foreach (string propName in props.Keys) + foreach (string propName in orderedKeys) { Property prop = props[propName]; XmlNode propNode = WriteProperty(prop, doc, file); + + if (propNode == null) + continue; + propsNode.AppendChild(propNode); } @@ -151,12 +171,12 @@ namespace RobloxFiles.XmlFormat var binaryWriter = XmlPropertyTokens.GetHandler(); var binaryBuffer = new Property("SharedString", PropertyType.String); - foreach (string md5 in file.SharedStrings) + foreach (string key in file.SharedStrings) { XmlElement sharedString = doc.CreateElement("SharedString"); - sharedString.SetAttribute("md5", md5); + sharedString.SetAttribute("md5", key); - binaryBuffer.RawBuffer = SharedString.FindRecord(md5); + binaryBuffer.RawBuffer = SharedString.Find(key); binaryWriter.WriteProperty(binaryBuffer, doc, sharedString); sharedStrings.AppendChild(sharedString); diff --git a/XmlFormat/Tokens/ProtectedString.cs b/XmlFormat/Tokens/ProtectedString.cs index 833df8b..662c423 100644 --- a/XmlFormat/Tokens/ProtectedString.cs +++ b/XmlFormat/Tokens/ProtectedString.cs @@ -1,4 +1,5 @@ -using System.Xml; +using System.Text; +using System.Xml; using RobloxFiles.DataTypes; namespace RobloxFiles.XmlFormat.PropertyTokens @@ -10,7 +11,7 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public bool ReadProperty(Property prop, XmlNode token) { ProtectedString contents = token.InnerText; - prop.Type = PropertyType.String; + prop.Type = PropertyType.ProtectedString; prop.Value = contents; return true; @@ -18,16 +19,26 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public void WriteProperty(Property prop, XmlDocument doc, XmlNode node) { - string value = prop.CastValue(); + ProtectedString value = prop.CastValue(); - if (value.Contains("\r") || value.Contains("\n")) + if (value.IsCompiled) { - XmlCDataSection cdata = doc.CreateCDataSection(value); - node.AppendChild(cdata); + var binary = XmlPropertyTokens.GetHandler(); + binary.WriteProperty(prop, doc, node); } else { - node.InnerText = value; + string contents = Encoding.UTF8.GetString(value.RawBuffer); + + if (contents.Contains("\r") || contents.Contains("\n")) + { + XmlCDataSection cdata = doc.CreateCDataSection(contents); + node.AppendChild(cdata); + } + else + { + node.InnerText = contents; + } } } } diff --git a/XmlFormat/Tokens/SharedString.cs b/XmlFormat/Tokens/SharedString.cs index 942cc0a..ff210d4 100644 --- a/XmlFormat/Tokens/SharedString.cs +++ b/XmlFormat/Tokens/SharedString.cs @@ -9,17 +9,25 @@ namespace RobloxFiles.XmlFormat.PropertyTokens public bool ReadProperty(Property prop, XmlNode token) { - string md5 = token.InnerText; + string key = token.InnerText; prop.Type = PropertyType.SharedString; - prop.Value = new SharedString(md5); + prop.Value = new SharedString(key); return true; } public void WriteProperty(Property prop, XmlDocument doc, XmlNode node) { - SharedString value = prop.CastValue(); - node.InnerText = value.MD5_Key; + var value = prop.CastValue(); + string key = value.Key; + + if (value.ComputedKey == null) + { + var newShared = SharedString.FromBuffer(value.SharedValue); + key = newShared.ComputedKey; + } + + node.InnerText = key; } } } diff --git a/XmlFormat/XmlRobloxFile.cs b/XmlFormat/XmlRobloxFile.cs index 917250f..759bcd4 100644 --- a/XmlFormat/XmlRobloxFile.cs +++ b/XmlFormat/XmlRobloxFile.cs @@ -103,7 +103,7 @@ namespace RobloxFiles foreach (Property sharedProp in sharedProps) { SharedString shared = sharedProp.CastValue(); - SharedStrings.Add(shared.MD5_Key); + SharedStrings.Add(shared.Key); } } else diff --git a/packages.config b/packages.config index 47b4718..146db44 100644 --- a/packages.config +++ b/packages.config @@ -1,6 +1,8 @@  - - + + + + \ No newline at end of file