diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/CsvmDataReader.cs b/de4dot.code/deobfuscators/Agile_NET/vm/CsvmDataReader.cs index c4201947..375f0076 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/CsvmDataReader.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/CsvmDataReader.cs @@ -29,6 +29,7 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm { IBinaryReader reader; public CsvmDataReader(IBinaryReader reader) { + reader.Position = 0; this.reader = reader; } diff --git a/de4dot.code/deobfuscators/CodeVeil/AssemblyResolver.cs b/de4dot.code/deobfuscators/CodeVeil/AssemblyResolver.cs index d4930136..a0f09700 100644 --- a/de4dot.code/deobfuscators/CodeVeil/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/CodeVeil/AssemblyResolver.cs @@ -128,6 +128,7 @@ namespace de4dot.code.deobfuscators.CodeVeil { var data = bundleData.Data.ReadAllBytes(); var doc = new XmlDocument(); + bundleXmlFile.Data.Position = 0; doc.Load(XmlReader.Create(bundleXmlFile.Data.CreateStream())); var manifest = doc.DocumentElement; if (manifest.Name.ToLowerInvariant() != "manifest") { diff --git a/de4dot.code/deobfuscators/CodeWall/AssemblyDecrypter.cs b/de4dot.code/deobfuscators/CodeWall/AssemblyDecrypter.cs index fd82771d..f781ad84 100644 --- a/de4dot.code/deobfuscators/CodeWall/AssemblyDecrypter.cs +++ b/de4dot.code/deobfuscators/CodeWall/AssemblyDecrypter.cs @@ -217,6 +217,7 @@ namespace de4dot.code.deobfuscators.CodeWall { void decryptAllAssemblies() { if (assemblyResource == null) return; + assemblyResource.Data.Position = 0; var resourceSet = ResourceReader.read(resourceModule, assemblyResource.Data); foreach (var resourceElement in resourceSet.ResourceElements) { if (resourceElement.ResourceData.Code != ResourceTypeCode.ByteArray) diff --git a/de4dot.code/deobfuscators/CodeWall/StringDecrypter.cs b/de4dot.code/deobfuscators/CodeWall/StringDecrypter.cs index 02016b69..755c057a 100644 --- a/de4dot.code/deobfuscators/CodeWall/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/CodeWall/StringDecrypter.cs @@ -255,6 +255,7 @@ namespace de4dot.code.deobfuscators.CodeWall { info.Magic2 = findMagic2(info.Method); info.Magic3 = findMagic3(info.Method); info.Reader = info.Resource.Data; + info.Reader.Position = 0; } } diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ConstantsDecrypter.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ConstantsDecrypter.cs index 0a159641..00cf2698 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/ConstantsDecrypter.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/ConstantsDecrypter.cs @@ -108,6 +108,7 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator { return; encryptedResource = CoUtils.getResource(module, DotNetUtils.getCodeStrings(decrypterType.FindStaticConstructor())); + encryptedResource.Data.Position = 0; constantsData = resourceDecrypter.decrypt(encryptedResource.Data.CreateStream()); } diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs index 6a75f9c7..b8ae763f 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs @@ -75,6 +75,7 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator { if (resource == null) return null; + resource.Data.Position = 0; DeobUtils.decryptAndAddResources(module, resource.Name.String, () => resourceDecrypter.decrypt(resource.Data.CreateStream())); mergedIt = true; return resource; diff --git a/de4dot.code/deobfuscators/ILProtector/MethodsDecrypter.cs b/de4dot.code/deobfuscators/ILProtector/MethodsDecrypter.cs index 2681dc6c..055b200c 100644 --- a/de4dot.code/deobfuscators/ILProtector/MethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/ILProtector/MethodsDecrypter.cs @@ -83,6 +83,7 @@ namespace de4dot.code.deobfuscators.ILProtector { if (resource == null) continue; var reader = resource.Data; + reader.Position = 0; if (!checkResourceV100(reader) && !checkResourceV105(reader)) continue; @@ -133,6 +134,7 @@ namespace de4dot.code.deobfuscators.ILProtector { byte[] getMethodsData(EmbeddedResource resource) { var reader = resource.Data; + reader.Position = 0; reader.Position = startOffset; if ((reader.ReadInt32() & 1) != 0) return decompress(reader); diff --git a/de4dot.code/renamer/ResourceKeysRenamer.cs b/de4dot.code/renamer/ResourceKeysRenamer.cs index 32bfee22..c80cac98 100644 --- a/de4dot.code/renamer/ResourceKeysRenamer.cs +++ b/de4dot.code/renamer/ResourceKeysRenamer.cs @@ -124,6 +124,7 @@ namespace de4dot.code.renamer { void rename(TypeDef type, EmbeddedResource resource) { newNames.Clear(); + resource.Data.Position = 0; var resourceSet = ResourceReader.read(module, resource.Data); var renamed = new List(); foreach (var elem in resourceSet.ResourceElements) {