From a69b17e06d8516aa381ca82054f80ba23e1c5fff Mon Sep 17 00:00:00 2001 From: de4dot Date: Sun, 29 Jan 2012 18:30:07 +0100 Subject: [PATCH] Support embedded assemblies (Silverlight) --- .../deobfuscators/DeepSea/AssemblyResolver.cs | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/de4dot.code/deobfuscators/DeepSea/AssemblyResolver.cs b/de4dot.code/deobfuscators/DeepSea/AssemblyResolver.cs index 9f308d62..796ee12e 100644 --- a/de4dot.code/deobfuscators/DeepSea/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/DeepSea/AssemblyResolver.cs @@ -69,7 +69,7 @@ namespace de4dot.code.deobfuscators.DeepSea { } protected override bool checkHandlerMethodInternal(MethodDefinition handler) { - if (checkHandlerV3(handler)) { + if (checkHandlerV3(handler) || checkHandlerSL(handler)) { isV3 = true; return true; } @@ -85,17 +85,29 @@ namespace de4dot.code.deobfuscators.DeepSea { return false; } - static string[] handlerLocalTypes = new string[] { + static string[] handlerLocalTypes_NET = new string[] { "System.Byte[]", - "System.Security.Cryptography.SHA1CryptoServiceProvider", "System.IO.Compression.DeflateStream", "System.IO.MemoryStream", "System.IO.Stream", "System.Reflection.Assembly", + "System.Security.Cryptography.SHA1CryptoServiceProvider", "System.String", }; static bool checkHandlerV3(MethodDefinition handler) { - return new LocalTypes(handler).all(handlerLocalTypes); + return new LocalTypes(handler).all(handlerLocalTypes_NET); + } + + static string[] handlerLocalTypes_SL = new string[] { + "System.Byte[]", + "System.IO.Stream", + "System.Reflection.Assembly", + "System.Security.Cryptography.SHA1Managed", + "System.String", + "System.Windows.AssemblyPart", + }; + static bool checkHandlerSL(MethodDefinition handler) { + return new LocalTypes(handler).all(handlerLocalTypes_SL); } bool checkHandlerV4(MethodDefinition handler, out List fieldInfos) {