From d29ac1a4cf1fdaec5dbe2c66cbc5d0795a10b923 Mon Sep 17 00:00:00 2001 From: de4dot Date: Wed, 19 Sep 2012 22:51:49 +0200 Subject: [PATCH 1/2] Check for generic params in all generic arguments too --- de4dot.code/deobfuscators/TypesRestorer.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/de4dot.code/deobfuscators/TypesRestorer.cs b/de4dot.code/deobfuscators/TypesRestorer.cs index 64025368..2b3c003c 100644 --- a/de4dot.code/deobfuscators/TypesRestorer.cs +++ b/de4dot.code/deobfuscators/TypesRestorer.cs @@ -556,8 +556,14 @@ namespace de4dot.code.deobfuscators { while (type != null) { switch (MemberReferenceHelper.getMemberReferenceType(type)) { - case CecilType.ArrayType: case CecilType.GenericInstanceType: + foreach (var ga in ((GenericInstanceType)type).GenericArguments) { + if (!isValidType(gpp, ga)) + return false; + } + break; + + case CecilType.ArrayType: case CecilType.PointerType: case CecilType.TypeDefinition: case CecilType.TypeReference: From 95d49c5b9ee85f1ce5c8b0b416c5806d38ccf098 Mon Sep 17 00:00:00 2001 From: de4dot Date: Thu, 20 Sep 2012 05:57:16 +0200 Subject: [PATCH 2/2] Add more assembly search paths --- de4dot.code/AssemblyResolver.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/de4dot.code/AssemblyResolver.cs b/de4dot.code/AssemblyResolver.cs index 8e94a97d..1eeb8f92 100644 --- a/de4dot.code/AssemblyResolver.cs +++ b/de4dot.code/AssemblyResolver.cs @@ -72,6 +72,8 @@ namespace de4dot.code { addIfExists(path, @"Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies"); addIfExists(path, @"Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies"); addIfExists(path, @"Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies"); + addIfExists(path, @"Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies"); + addIfExists(path, @"Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies"); addIfExists(path, @"Microsoft XNA\XNA Game Studio\v2.0\References\Windows\x86"); addIfExists(path, @"Microsoft XNA\XNA Game Studio\v2.0\References\Xbox360"); addIfExists(path, @"Microsoft XNA\XNA Game Studio\v3.0\References\Windows\x86"); @@ -87,6 +89,15 @@ namespace de4dot.code { addIfExists(path, @"Windows Mobile 5.0 SDK R2\Managed Libraries"); addIfExists(path, @"Windows Mobile 6 SDK\Managed Libraries"); addIfExists(path, @"Windows Mobile 6.5.3 DTK\Managed Libraries"); + addIfExists(path, @"Microsoft SQL Server\90\SDK\Assemblies"); + addIfExists(path, @"Microsoft SQL Server\100\SDK\Assemblies"); + addIfExists(path, @"Microsoft SQL Server\110\SDK\Assemblies"); + addIfExists(path, @"Microsoft ASP.NET\ASP.NET MVC 2\Assemblies"); + addIfExists(path, @"Microsoft ASP.NET\ASP.NET MVC 3\Assemblies"); + addIfExists(path, @"Microsoft ASP.NET\ASP.NET MVC 4\Assemblies"); + addIfExists(path, @"Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies"); + addIfExists(path, @"Microsoft ASP.NET\ASP.NET Web Pages\v2.0\Assemblies"); + addIfExists(path, @"Microsoft SDKs\F#\3.0\Framework\v4.0"); } // basePath is eg. "C:\Program Files (x86)\Microsoft Silverlight"