Reset resource data positions

This commit is contained in:
de4dot 2012-11-20 01:15:27 +01:00
parent d8e73e70e6
commit 4658e911a2
8 changed files with 9 additions and 0 deletions

View File

@ -29,6 +29,7 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm {
IBinaryReader reader; IBinaryReader reader;
public CsvmDataReader(IBinaryReader reader) { public CsvmDataReader(IBinaryReader reader) {
reader.Position = 0;
this.reader = reader; this.reader = reader;
} }

View File

@ -128,6 +128,7 @@ namespace de4dot.code.deobfuscators.CodeVeil {
var data = bundleData.Data.ReadAllBytes(); var data = bundleData.Data.ReadAllBytes();
var doc = new XmlDocument(); var doc = new XmlDocument();
bundleXmlFile.Data.Position = 0;
doc.Load(XmlReader.Create(bundleXmlFile.Data.CreateStream())); doc.Load(XmlReader.Create(bundleXmlFile.Data.CreateStream()));
var manifest = doc.DocumentElement; var manifest = doc.DocumentElement;
if (manifest.Name.ToLowerInvariant() != "manifest") { if (manifest.Name.ToLowerInvariant() != "manifest") {

View File

@ -217,6 +217,7 @@ namespace de4dot.code.deobfuscators.CodeWall {
void decryptAllAssemblies() { void decryptAllAssemblies() {
if (assemblyResource == null) if (assemblyResource == null)
return; return;
assemblyResource.Data.Position = 0;
var resourceSet = ResourceReader.read(resourceModule, assemblyResource.Data); var resourceSet = ResourceReader.read(resourceModule, assemblyResource.Data);
foreach (var resourceElement in resourceSet.ResourceElements) { foreach (var resourceElement in resourceSet.ResourceElements) {
if (resourceElement.ResourceData.Code != ResourceTypeCode.ByteArray) if (resourceElement.ResourceData.Code != ResourceTypeCode.ByteArray)

View File

@ -255,6 +255,7 @@ namespace de4dot.code.deobfuscators.CodeWall {
info.Magic2 = findMagic2(info.Method); info.Magic2 = findMagic2(info.Method);
info.Magic3 = findMagic3(info.Method); info.Magic3 = findMagic3(info.Method);
info.Reader = info.Resource.Data; info.Reader = info.Resource.Data;
info.Reader.Position = 0;
} }
} }

View File

@ -108,6 +108,7 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator {
return; return;
encryptedResource = CoUtils.getResource(module, DotNetUtils.getCodeStrings(decrypterType.FindStaticConstructor())); encryptedResource = CoUtils.getResource(module, DotNetUtils.getCodeStrings(decrypterType.FindStaticConstructor()));
encryptedResource.Data.Position = 0;
constantsData = resourceDecrypter.decrypt(encryptedResource.Data.CreateStream()); constantsData = resourceDecrypter.decrypt(encryptedResource.Data.CreateStream());
} }

View File

@ -75,6 +75,7 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator {
if (resource == null) if (resource == null)
return null; return null;
resource.Data.Position = 0;
DeobUtils.decryptAndAddResources(module, resource.Name.String, () => resourceDecrypter.decrypt(resource.Data.CreateStream())); DeobUtils.decryptAndAddResources(module, resource.Name.String, () => resourceDecrypter.decrypt(resource.Data.CreateStream()));
mergedIt = true; mergedIt = true;
return resource; return resource;

View File

@ -83,6 +83,7 @@ namespace de4dot.code.deobfuscators.ILProtector {
if (resource == null) if (resource == null)
continue; continue;
var reader = resource.Data; var reader = resource.Data;
reader.Position = 0;
if (!checkResourceV100(reader) && if (!checkResourceV100(reader) &&
!checkResourceV105(reader)) !checkResourceV105(reader))
continue; continue;
@ -133,6 +134,7 @@ namespace de4dot.code.deobfuscators.ILProtector {
byte[] getMethodsData(EmbeddedResource resource) { byte[] getMethodsData(EmbeddedResource resource) {
var reader = resource.Data; var reader = resource.Data;
reader.Position = 0;
reader.Position = startOffset; reader.Position = startOffset;
if ((reader.ReadInt32() & 1) != 0) if ((reader.ReadInt32() & 1) != 0)
return decompress(reader); return decompress(reader);

View File

@ -124,6 +124,7 @@ namespace de4dot.code.renamer {
void rename(TypeDef type, EmbeddedResource resource) { void rename(TypeDef type, EmbeddedResource resource) {
newNames.Clear(); newNames.Clear();
resource.Data.Position = 0;
var resourceSet = ResourceReader.read(module, resource.Data); var resourceSet = ResourceReader.read(module, resource.Data);
var renamed = new List<RenameInfo>(); var renamed = new List<RenameInfo>();
foreach (var elem in resourceSet.ResourceElements) { foreach (var elem in resourceSet.ResourceElements) {