Fix problem when resources aren't encrypted or compressed

This commit is contained in:
de4dot 2011-10-23 22:03:38 +02:00
parent 779d1a8a31
commit 4f02f84d84

View File

@ -37,6 +37,7 @@ namespace de4dot.deobfuscators.CryptoObfuscator {
public byte[] decrypt(Stream resourceStream) { public byte[] decrypt(Stream resourceStream) {
byte flags = (byte)resourceStream.ReadByte(); byte flags = (byte)resourceStream.ReadByte();
Stream sourceStream = resourceStream; Stream sourceStream = resourceStream;
bool didSomething = false;
if ((flags & 1) != 0) { if ((flags & 1) != 0) {
var memStream = new MemoryStream((int)resourceStream.Length); var memStream = new MemoryStream((int)resourceStream.Length);
@ -59,6 +60,7 @@ namespace de4dot.deobfuscators.CryptoObfuscator {
} }
} }
sourceStream = memStream; sourceStream = memStream;
didSomething = true;
} }
if ((flags & 2) != 0) { if ((flags & 2) != 0) {
@ -74,6 +76,7 @@ namespace de4dot.deobfuscators.CryptoObfuscator {
} }
sourceStream = memStream; sourceStream = memStream;
didSomething = true;
} }
if ((flags & 4) != 0) { if ((flags & 4) != 0) {
@ -83,9 +86,10 @@ namespace de4dot.deobfuscators.CryptoObfuscator {
memStream.WriteByte((byte)~sourceStream.ReadByte()); memStream.WriteByte((byte)~sourceStream.ReadByte());
sourceStream = memStream; sourceStream = memStream;
didSomething = true;
} }
if (sourceStream is MemoryStream) { if (didSomething && sourceStream is MemoryStream) {
var memStream = (MemoryStream)sourceStream; var memStream = (MemoryStream)sourceStream;
return memStream.ToArray(); return memStream.ToArray();
} }