diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs index 724d1bcc..756b0abf 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs @@ -233,7 +233,7 @@ namespace de4dot.code.deobfuscators.Eazfuscator_NET { return false; } - static List createAssemblyInfos(string s) { + List createAssemblyInfos(string s) { try { return tryCreateAssemblyInfos(s); } @@ -242,18 +242,22 @@ namespace de4dot.code.deobfuscators.Eazfuscator_NET { } } - static List tryCreateAssemblyInfos(string s) { + List tryCreateAssemblyInfos(string s) { + int numElements = decrypterType.Detected ? 3 : 2; var ary = s.Split(','); - if (ary.Length == 0 || ary.Length % 3 != 0) + if (ary.Length == 0 || ary.Length % numElements != 0) return null; var infos = new List(); - for (int i = 0; i < ary.Length; i += 3) { + for (int i = 0; i < ary.Length; i += numElements) { var info = new AssemblyInfo(); info.AssemblyFullName = Encoding.UTF8.GetString(Convert.FromBase64String(ary[i])); info.ResourceName = ary[i + 1]; - info.Filename = Encoding.UTF8.GetString(Convert.FromBase64String(ary[i + 2])); + if (numElements >= 3) + info.Filename = Encoding.UTF8.GetString(Convert.FromBase64String(ary[i + 2])); + else + info.Filename = Utils.getAssemblySimpleName(info.AssemblyFullName) + ".dll"; int index = info.ResourceName.IndexOf('|'); if (index >= 0) { var flags = info.ResourceName.Substring(0, index); diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/GetManifestResourceStreamRestorer.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/GetManifestResourceStreamRestorer.cs index ad09d1fb..2dc2cbc6 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/GetManifestResourceStreamRestorer.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/GetManifestResourceStreamRestorer.cs @@ -50,7 +50,7 @@ namespace de4dot.code.deobfuscators.Eazfuscator_NET { var getStream2 = getTheOnlyMethod(type, "System.IO.Stream", "(System.Reflection.Assembly,System.Type,System.String)"); var getNames = getTheOnlyMethod(type, "System.String[]", "(System.Reflection.Assembly)"); - if (getStream2 == null || getNames == null) + if (getStream2 == null) continue; var resource = findGetManifestResourceStreamTypeResource(type, simpleDeobfuscator, deob);