From 1c522e934167157347f6772dd9bd5c54315bec0f Mon Sep 17 00:00:00 2001 From: de4dot Date: Thu, 21 Nov 2013 16:50:25 +0100 Subject: [PATCH 01/22] Rename add() -> Add(), toList() -> ToList() --- de4dot.code/deobfuscators/CodeFort/AssemblyData.cs | 14 +++++++------- .../deobfuscators/CodeFort/PasswordFinder.cs | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/de4dot.code/deobfuscators/CodeFort/AssemblyData.cs b/de4dot.code/deobfuscators/CodeFort/AssemblyData.cs index 043e0583..2c3c5556 100644 --- a/de4dot.code/deobfuscators/CodeFort/AssemblyData.cs +++ b/de4dot.code/deobfuscators/CodeFort/AssemblyData.cs @@ -382,7 +382,7 @@ namespace de4dot.code.deobfuscators.CodeFort { this.type = type; } - public void add(string propertyName, object value) { + public void Add(string propertyName, object value) { var prop = type.GetProperty(propertyName); if (prop == null) throw new ApplicationException(string.Format("Could not find property {0} (type {1})", propertyName, type)); @@ -415,9 +415,9 @@ namespace de4dot.code.deobfuscators.CodeFort { var dcAttr = Type.GetType("System.Runtime.Serialization.DataContractAttribute," + serializationAssemblyname); var ctor = dcAttr.GetConstructor(Type.EmptyTypes); var propCreator = new PropertyInfoCreator(dcAttr); - propCreator.add("Namespace", ns); - propCreator.add("Name", name); - propCreator.add("IsReference", isReference); + propCreator.Add("Namespace", ns); + propCreator.Add("Name", name); + propCreator.Add("IsReference", isReference); return new CustomAttributeBuilder(ctor, new object[0], propCreator.Properties, propCreator.Values); } @@ -425,7 +425,7 @@ namespace de4dot.code.deobfuscators.CodeFort { var emAttr = Type.GetType("System.Runtime.Serialization.EnumMemberAttribute," + serializationAssemblyname); var ctor = emAttr.GetConstructor(Type.EmptyTypes); var propCreator = new PropertyInfoCreator(emAttr); - propCreator.add("Value", value); + propCreator.Add("Value", value); return new CustomAttributeBuilder(ctor, new object[0], propCreator.Properties, propCreator.Values); } @@ -433,8 +433,8 @@ namespace de4dot.code.deobfuscators.CodeFort { var dmAttr = Type.GetType("System.Runtime.Serialization.DataMemberAttribute," + serializationAssemblyname); var ctor = dmAttr.GetConstructor(Type.EmptyTypes); var propCreator = new PropertyInfoCreator(dmAttr); - propCreator.add("Name", name); - propCreator.add("EmitDefaultValue", emitDefaultValue); + propCreator.Add("Name", name); + propCreator.Add("EmitDefaultValue", emitDefaultValue); return new CustomAttributeBuilder(ctor, new object[0], propCreator.Properties, propCreator.Values); } diff --git a/de4dot.code/deobfuscators/CodeFort/PasswordFinder.cs b/de4dot.code/deobfuscators/CodeFort/PasswordFinder.cs index d6d8051c..ab2e624d 100644 --- a/de4dot.code/deobfuscators/CodeFort/PasswordFinder.cs +++ b/de4dot.code/deobfuscators/CodeFort/PasswordFinder.cs @@ -117,7 +117,7 @@ namespace de4dot.code.deobfuscators.CodeFort { return instance.GetType().GetField(name).GetValue(instance); } - static System.Collections.IList toList(object obj) { + static System.Collections.IList ToList(object obj) { return (System.Collections.IList)obj; } @@ -126,7 +126,7 @@ namespace de4dot.code.deobfuscators.CodeFort { var moduleBuilder = asmBuilder.DefineDynamicModule("mod"); var serializedTypes = new SerializedTypes(moduleBuilder); var allTypes = serializedTypes.Deserialize(serializedData); - asmTypes = toList(ReadField(allTypes, "Types")); + asmTypes = ToList(ReadField(allTypes, "Types")); mainAsmPassword = FindMainAssemblyPassword(); embedPassword = FindEmbedPassword(); From ace439fb3710528b8f16fd91b94bdd777c54cfe3 Mon Sep 17 00:00:00 2001 From: de4dot Date: Thu, 21 Nov 2013 16:50:43 +0100 Subject: [PATCH 02/22] Fix method names --- .../deobfuscators/ILProtector/DynamicMethodsDecrypter.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs index 8d4f6e05..740d2c3c 100644 --- a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs @@ -336,15 +336,15 @@ namespace de4dot.code.deobfuscators.ILProtector { } IDecrypter CreateDecrypter() { - return CreateDecrypterV1_0_7_1() ?? + return CreateDecrypterV1_0_7_0() ?? CreateDecrypterV2_0_0_0() ?? CreateDecrypterV2_0_8_0() ?? CreateDecrypterV2_0_8_5() ?? CreateDecrypterV2_0_9_0(); } - IDecrypter CreateDecrypterV1_0_7_1() { - var delegateField = FindDelegateFieldV1_0_7_1(protectMainType); + IDecrypter CreateDecrypterV1_0_7_0() { + var delegateField = FindDelegateFieldV1_0_7_0(protectMainType); if (delegateField == null) return null; @@ -425,7 +425,7 @@ namespace de4dot.code.deobfuscators.ILProtector { return FindDelegateField(module.GlobalType, "System.Delegate", "(System.Int32)"); } - static FieldDef FindDelegateFieldV1_0_7_1(TypeDef mainType) { + static FieldDef FindDelegateFieldV1_0_7_0(TypeDef mainType) { return FindDelegateField(mainType, "System.Boolean", "(System.Int32,System.Int32,System.Int32,System.Byte*&,System.Int32&)"); } From 2828d57ccf0e08e9ca0d3b67c11fceef40ccec85 Mon Sep 17 00:00:00 2001 From: de4dot Date: Thu, 21 Nov 2013 16:50:56 +0100 Subject: [PATCH 03/22] Update version detection --- de4dot.code/deobfuscators/Eazfuscator_NET/VersionDetector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/VersionDetector.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/VersionDetector.cs index e38a6f98..eb920ecb 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/VersionDetector.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/VersionDetector.cs @@ -722,7 +722,7 @@ namespace de4dot.code.deobfuscators.Eazfuscator_NET { decryptStringMethod.Body.ExceptionHandlers.Count >= 2 && new LocalTypes(decryptStringMethod).All(locals35) && CheckTypeFields2(fields35)) { - return "3.5 - 4.0"; + return "3.5 - 4.1"; } } From 52668b9420639ef19cfe88cb171be659d1c72316 Mon Sep 17 00:00:00 2001 From: de4dot Date: Fri, 22 Nov 2013 20:21:09 +0100 Subject: [PATCH 04/22] Restore bool/char array ldelem/stelem instructions --- .../Agile_NET/vm/CilOperandInstructionRestorer.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs b/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs index 4df28e4c..43a26c69 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs @@ -53,6 +53,8 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm { newOpCode = OpCodes.Ldelem_Ref; else { switch (operandTypeTmp.ElementType) { + case ElementType.Boolean: newOpCode = OpCodes.Ldelem_I1; break; + case ElementType.Char: newOpCode = OpCodes.Ldelem_U2; break; case ElementType.I: newOpCode = OpCodes.Ldelem_I; break; case ElementType.I1: newOpCode = OpCodes.Ldelem_I1; break; case ElementType.I2: newOpCode = OpCodes.Ldelem_I2; break; @@ -82,8 +84,10 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm { switch (operandTypeTmp.ElementType) { case ElementType.U: case ElementType.I: newOpCode = OpCodes.Stelem_I; break; + case ElementType.Boolean: case ElementType.U1: case ElementType.I1: newOpCode = OpCodes.Stelem_I1; break; + case ElementType.Char: case ElementType.U2: case ElementType.I2: newOpCode = OpCodes.Stelem_I2; break; case ElementType.U4: From f173df9b092a6340a6dfca476e8baf66f382c6bc Mon Sep 17 00:00:00 2001 From: de4dot Date: Fri, 22 Nov 2013 21:18:01 +0100 Subject: [PATCH 05/22] New version: 3.0.3 --- AssemblyData/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer-CLR20-x64/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer-CLR20/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer-CLR40-x64/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer-CLR40/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer-x64/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer/Properties/AssemblyInfo.cs | 4 ++-- Test.Rename.Dll/Properties/AssemblyInfo.cs | 4 ++-- Test.Rename/Properties/AssemblyInfo.cs | 4 ++-- de4dot-x64/Properties/AssemblyInfo.cs | 4 ++-- de4dot.blocks/Properties/AssemblyInfo.cs | 4 ++-- de4dot.code/Properties/AssemblyInfo.cs | 4 ++-- de4dot.cui/Properties/AssemblyInfo.cs | 4 ++-- de4dot.mdecrypt/Properties/AssemblyInfo.cs | 4 ++-- de4dot/Properties/AssemblyInfo.cs | 4 ++-- 15 files changed, 30 insertions(+), 30 deletions(-) diff --git a/AssemblyData/Properties/AssemblyInfo.cs b/AssemblyData/Properties/AssemblyInfo.cs index 9a1846a9..6e716af3 100644 --- a/AssemblyData/Properties/AssemblyInfo.cs +++ b/AssemblyData/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/AssemblyServer-CLR20-x64/Properties/AssemblyInfo.cs b/AssemblyServer-CLR20-x64/Properties/AssemblyInfo.cs index a02dcb49..511f465c 100644 --- a/AssemblyServer-CLR20-x64/Properties/AssemblyInfo.cs +++ b/AssemblyServer-CLR20-x64/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/AssemblyServer-CLR20/Properties/AssemblyInfo.cs b/AssemblyServer-CLR20/Properties/AssemblyInfo.cs index 83599918..ca5d1428 100644 --- a/AssemblyServer-CLR20/Properties/AssemblyInfo.cs +++ b/AssemblyServer-CLR20/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/AssemblyServer-CLR40-x64/Properties/AssemblyInfo.cs b/AssemblyServer-CLR40-x64/Properties/AssemblyInfo.cs index 04c2d642..b9c2bdd1 100644 --- a/AssemblyServer-CLR40-x64/Properties/AssemblyInfo.cs +++ b/AssemblyServer-CLR40-x64/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/AssemblyServer-CLR40/Properties/AssemblyInfo.cs b/AssemblyServer-CLR40/Properties/AssemblyInfo.cs index d3feeec2..e5f696ab 100644 --- a/AssemblyServer-CLR40/Properties/AssemblyInfo.cs +++ b/AssemblyServer-CLR40/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/AssemblyServer-x64/Properties/AssemblyInfo.cs b/AssemblyServer-x64/Properties/AssemblyInfo.cs index b799795f..3c2025df 100644 --- a/AssemblyServer-x64/Properties/AssemblyInfo.cs +++ b/AssemblyServer-x64/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/AssemblyServer/Properties/AssemblyInfo.cs b/AssemblyServer/Properties/AssemblyInfo.cs index 460521ea..9572e6f1 100644 --- a/AssemblyServer/Properties/AssemblyInfo.cs +++ b/AssemblyServer/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/Test.Rename.Dll/Properties/AssemblyInfo.cs b/Test.Rename.Dll/Properties/AssemblyInfo.cs index 3ce8ff50..1b9b01cc 100644 --- a/Test.Rename.Dll/Properties/AssemblyInfo.cs +++ b/Test.Rename.Dll/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/Test.Rename/Properties/AssemblyInfo.cs b/Test.Rename/Properties/AssemblyInfo.cs index 676d6953..18b1b812 100644 --- a/Test.Rename/Properties/AssemblyInfo.cs +++ b/Test.Rename/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/de4dot-x64/Properties/AssemblyInfo.cs b/de4dot-x64/Properties/AssemblyInfo.cs index b395d652..7a684000 100644 --- a/de4dot-x64/Properties/AssemblyInfo.cs +++ b/de4dot-x64/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/de4dot.blocks/Properties/AssemblyInfo.cs b/de4dot.blocks/Properties/AssemblyInfo.cs index 42bf3449..e8e8d298 100644 --- a/de4dot.blocks/Properties/AssemblyInfo.cs +++ b/de4dot.blocks/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/de4dot.code/Properties/AssemblyInfo.cs b/de4dot.code/Properties/AssemblyInfo.cs index 4f35a9b1..e7238177 100644 --- a/de4dot.code/Properties/AssemblyInfo.cs +++ b/de4dot.code/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/de4dot.cui/Properties/AssemblyInfo.cs b/de4dot.cui/Properties/AssemblyInfo.cs index bab31dd0..b01f9076 100644 --- a/de4dot.cui/Properties/AssemblyInfo.cs +++ b/de4dot.cui/Properties/AssemblyInfo.cs @@ -30,7 +30,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] [assembly: InternalsVisibleTo("de4dot, PublicKey=00240000048000009400000006020000002400005253413100040000010001007b5ffd8f48f1397cd4e21c9e30a5cb36b2c013d6f20688c90e3f0c2d24e6d67cbeea7a6ec3faf9ba081f3d6b6fbe389677adbb8337d3a16187cd13b16a34008a22b89089da41c4a08fd35615c77de0827adcca6d49b08c0ed3e0404a1c44b7d083be614acb1779e4fb275e14427f3687f375d03f3b465c8a6cdeebd1f8c7f4ea")] [assembly: InternalsVisibleTo("de4dot-x64, PublicKey=00240000048000009400000006020000002400005253413100040000010001007b5ffd8f48f1397cd4e21c9e30a5cb36b2c013d6f20688c90e3f0c2d24e6d67cbeea7a6ec3faf9ba081f3d6b6fbe389677adbb8337d3a16187cd13b16a34008a22b89089da41c4a08fd35615c77de0827adcca6d49b08c0ed3e0404a1c44b7d083be614acb1779e4fb275e14427f3687f375d03f3b465c8a6cdeebd1f8c7f4ea")] diff --git a/de4dot.mdecrypt/Properties/AssemblyInfo.cs b/de4dot.mdecrypt/Properties/AssemblyInfo.cs index 9966c65e..77f9d38d 100644 --- a/de4dot.mdecrypt/Properties/AssemblyInfo.cs +++ b/de4dot.mdecrypt/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] diff --git a/de4dot/Properties/AssemblyInfo.cs b/de4dot/Properties/AssemblyInfo.cs index 4822cc61..56a761ef 100644 --- a/de4dot/Properties/AssemblyInfo.cs +++ b/de4dot/Properties/AssemblyInfo.cs @@ -29,5 +29,5 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: AssemblyVersion("3.0.2.3405")] -[assembly: AssemblyFileVersion("3.0.2.3405")] +[assembly: AssemblyVersion("3.0.3.3405")] +[assembly: AssemblyFileVersion("3.0.3.3405")] From cc56b730b3833b92e9b41d8c784f648b7bf25829 Mon Sep 17 00:00:00 2001 From: de4dot Date: Sat, 23 Nov 2013 21:59:45 +0100 Subject: [PATCH 06/22] Add CRC32 instance methods --- de4dot.code/deobfuscators/CRC32.cs | 127 ++++++++++++++++++++++++++++- 1 file changed, 126 insertions(+), 1 deletion(-) diff --git a/de4dot.code/deobfuscators/CRC32.cs b/de4dot.code/deobfuscators/CRC32.cs index 62f4050d..f9e706fd 100644 --- a/de4dot.code/deobfuscators/CRC32.cs +++ b/de4dot.code/deobfuscators/CRC32.cs @@ -18,7 +18,7 @@ */ namespace de4dot.code.deobfuscators { - class CRC32 { + struct CRC32 { static readonly uint[] table = new uint[256] { 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, @@ -86,6 +86,131 @@ namespace de4dot.code.deobfuscators { 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D, }; + uint checkSum; + + public void Initialize() { + this.checkSum = uint.MaxValue; + } + + public void Hash(byte[] data) { + if (data == null) + return; + foreach (var b in data) { + int i = (byte)(checkSum ^ b); + checkSum = (checkSum >> 8) ^ table[i]; + } + } + + public void Hash(sbyte a) { + int i = (byte)(checkSum ^ a); + checkSum = (checkSum >> 8) ^ table[i]; + } + + public void Hash(byte a) { + int i = (byte)(checkSum ^ a); + checkSum = (checkSum >> 8) ^ table[i]; + } + + public void Hash(short a) { + int i = (byte)(checkSum ^ (byte)a); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 8)); + checkSum = (checkSum >> 8) ^ table[i]; + } + + public void Hash(ushort a) { + int i = (byte)(checkSum ^ (byte)a); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 8)); + checkSum = (checkSum >> 8) ^ table[i]; + } + + public void Hash(int a) { + int i = (byte)(checkSum ^ (byte)a); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 8)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 16)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 24)); + checkSum = (checkSum >> 8) ^ table[i]; + } + + public void Hash(uint a) { + int i = (byte)(checkSum ^ (byte)a); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 8)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 16)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 24)); + checkSum = (checkSum >> 8) ^ table[i]; + } + + public void Hash(long a) { + int i = (byte)(checkSum ^ (byte)a); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 8)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 16)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 24)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 32)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 40)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 48)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 56)); + checkSum = (checkSum >> 8) ^ table[i]; + } + + public void Hash(ulong a) { + int i = (byte)(checkSum ^ (byte)a); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 8)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 16)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 24)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 32)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 40)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 48)); + checkSum = (checkSum >> 8) ^ table[i]; + + i = (byte)(checkSum ^ (byte)(a >> 56)); + checkSum = (checkSum >> 8) ^ table[i]; + } + + public uint GetHash() { + return ~checkSum; + } + public static uint CheckSum(byte[] data) { if (data == null) return 0; From e2a95f68380048396f9983efd401049666f70a93 Mon Sep 17 00:00:00 2001 From: de4dot Date: Sat, 23 Nov 2013 22:00:13 +0100 Subject: [PATCH 07/22] Support Agile.NET 6.3.0.10 --- de4dot.code/de4dot.code.csproj | 4 +- .../deobfuscators/Agile_NET/vm/v2/CSVM1.bin | Bin 0 -> 9154 bytes .../Agile_NET/vm/v2/CSVM1_v2.bin | Bin 9520 -> 0 bytes .../deobfuscators/Agile_NET/vm/v2/CSVM2.bin | Bin 0 -> 9138 bytes .../Agile_NET/vm/v2/CSVM2_v2.bin | Bin 9520 -> 0 bytes .../deobfuscators/Agile_NET/vm/v2/CSVM3.bin | Bin 0 -> 9186 bytes .../Agile_NET/vm/v2/CSVM3_v2.bin | Bin 9580 -> 0 bytes .../deobfuscators/Agile_NET/vm/v2/CSVM4.bin | Bin 0 -> 9328 bytes .../vm/v2/CompositeHandlerDetector.cs | 241 ++---- .../Agile_NET/vm/v2/CompositeOpCodeHandler.cs | 40 +- .../deobfuscators/Agile_NET/vm/v2/CsvmInfo.cs | 90 ++- .../Agile_NET/vm/v2/CsvmResources.Designer.cs | 22 +- .../Agile_NET/vm/v2/CsvmResources.resx | 17 +- .../vm/v2/CsvmToCilMethodConverter.cs | 7 +- .../Agile_NET/vm/v2/MethodFinder.cs | 109 --- .../Agile_NET/vm/v2/MethodSigInfoCreator.cs | 737 ------------------ .../Agile_NET/vm/v2/OpCodeHandler.cs | 38 - .../Agile_NET/vm/v2/OpCodeHandlerInfo.cs | 19 +- .../Agile_NET/vm/v2/OpCodeHandlerInfos.cs | 80 +- .../Agile_NET/vm/v2/SigCreator.cs | 593 ++++++++++++++ .../deobfuscators/Agile_NET/vm/v2/VmOpCode.cs | 18 +- .../vm/v2/VmOpCodeHandlerDetector.cs | 60 +- de4dot.mdecrypt/DynamicMethodsDecrypter.cs | 56 ++ 23 files changed, 885 insertions(+), 1246 deletions(-) create mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM1.bin delete mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM1_v2.bin create mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM2.bin delete mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM2_v2.bin create mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM3.bin delete mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM3_v2.bin create mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM4.bin delete mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/MethodFinder.cs delete mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/MethodSigInfoCreator.cs delete mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandler.cs create mode 100644 de4dot.code/deobfuscators/Agile_NET/vm/v2/SigCreator.cs diff --git a/de4dot.code/de4dot.code.csproj b/de4dot.code/de4dot.code.csproj index 9f48a2e0..a56d2163 100644 --- a/de4dot.code/de4dot.code.csproj +++ b/de4dot.code/de4dot.code.csproj @@ -88,12 +88,10 @@ - - - + diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM1.bin b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM1.bin new file mode 100644 index 0000000000000000000000000000000000000000..e32fb05e59769d1424058351054b076896d3a2ab GIT binary patch literal 9154 zcmd6s32YTr6ozLI0TD`B%A!yOp#?2#%O;3Qp_ElC5F?8OjVKlYqedGyteUvs0vHvD zfXE`EP$PmtBLW7B1vQ!|K{jP6#6|^)8=~ItogVLf^QN>OpDX6)Z-$>yz(4Jy{L&PVC5mv!2e!F}nIzso=%>6HYn!{^onPj%E2#642io=WBl;;%EMR90)T}}U z%4bJ@d7eepDxa|^X1D|e?>gp&Lf-Z#GM;KNcZN_uC$dK*i=Nq9=h;1Cab&vw*@ttH ze(&_vJ3Jo=g8D(99f_dh=q-opovDskFsLKesz|@&-Z!UkTd(}PzJz+qeFIuohpxm& zP}fBA=ev`yPCZk9qEArAMD%BM=!#xJT@%Tldy~qRovA<3FQ{W8`m;K8JvT(xMDpij zsn7gzrv9uKqGKZZvpRIGpWwP`pI~blo}e3``c=J8NGeB}!6Sx;u2|5ZVXdJ%IxKJZ zNlCwE^R*YEZ#l4X*1P zs+)WCWbkflqqC}c2(A{T=cKatJgCDr{9R8phjMgQHxm)-@WvgTW1E_lV6T-3dg|%K z-r;?7{JJ&^(G@#Y!DmmH^d(9!)S*{9yPROSWQG7jYTIrGL@WGe@$=UKlAN@YnkJFtspd@RgP ztcP87)I43g-igEa7iVTi?bH{1zY}etjGyOxHL%BBrA?CZ+KwvCIlg6! zR6es9;jt?F%R)QDtmj`~{(wdXXffhHwHRJ;V?_LBHUubwQ@!wAu+s0_Gj*-Tnf1MD zf8G<)?6}C;0e4pR@1L+$VzaHYioULX?(?qoiw5&s zQ0*KP9&vXDpGAr^vkUH639T844cEROA4~cwId6*d1y612(gZEmSUvWcWvq;vw|TvA zNjEG1j0>EUi*V2xq1@iA%e>?tS8n?Cw@R~r{%!A~_RtU;btsn-I;wHd!Y98!b;Hoy zv{kXE00f#a&dj>Ar$n#LeA|8dk0OmqDLgMON0=cJ!ANt%qg{I0c)297gVpGG$uK*D zHvA{278#&}43B?NRwQ=pXl6umyL#fmt1c7yJDF9@&g??F;EB(B;hyHZo<7+i_QWG4 zsOxs_d_^h-{5i?or^obIf9Q6>aDIu*$}#xddLcRkM*F3+p{H8&E**>>jlAG|()353 zCrh@N^G0ED#>CHJqpXXe##^aI8IofM&G%65y6L+$d(%INd=rs(1a@QAWKK~?1TLTnHdK%&EG%DBC{MM7FTcM*_Ne;XV{(H z%_?z+7toI}c=p2M7;ABf<@p7EcmB^K#ZFLhql-7>!8KQRvAlbfW6Tg!`Sgp#@Pjo{ z6d~UQ+U$v%u{L>2Y zGgvP1F_zeO-=IeFzt?_$&r2NTzwgzR4()Ph#jQv#A9yVpJ8*>6@`@^=HunAXCyTn$ zL52Av(#IQK@EdaC2dDS#?;z1rrPKb$^Rt~Dd{@&Q(5mS9jcL!_d$J^LB6hs(>D5J^ zKfoZdG}gn8jKOcvbS5rEIu0mQwOfJijCJQ{dj3H36y!!$RO-2NX00KghIa(W1{w`{ z7u&h1sH^ooRet%LYx;VAP6(HZJRQr)fFo9ju4wRSaAIMq=MOSZ!nN}3TbT9a!{{bC zG&c_9l==N;S>)h2kj1M;=UC(rgFKzZv1QwW^n%9Q9;zMNQ($qTPwOc=gVktg2#4Ug zC2PycHk&K3uAI(cW*v^fc%)0yj1v65Icf0wjbmj;Ygdk?-Cv5lz0-+B*NIc(m)xZu YH6VXDf6UDlc52HWl4GtFE z7UJgV-Om$~^Y+&9#K8pu*DBZ$L)`9Ikj(QvfqGkPpFdo)%=;nmdAK32o1c9#lY5lm zq-I$hJ73)ZI4glGEsK;_pns^_#uglCQ<-E696I5`4f?03J+@H@;C1uQQy3oKUArCm zhBNSjS~|yZ$5gKE`Si^NqJe49FZc)MQu$-*(mH8dW$92Cn(w+=B0Eu8)a&P#b4gF$ z_~TGS=_vSve&_#e%gitPPsYqIVx@(5d)!u0xeoEGtT5a1@+kP_z-__Lwk9@>EzdFY zNzO&tyV`ga${;4rpDa3K?dpz^FC5($4tDcO^H&p@PL|B`_Rxj>SKEvnbPAIn;7w*? zMLL-+5$mN^Osa;z8n|N~O}75G>m=y;Zu<|bUJFI}mru8sN4CtSPB1q}Ckxf{m4tIC%Ox5^{Qu6CvJjHb1k0?xQ_M|=|(!8ceXC~ zA#2X;&$Cq*@DOyGYx!jFBV&1p!cD4s<yGVg<`eH6)~VRWNxp2%AC9hB@E4hl?vu6-&-b+0}6 zBi8fG>TXoCGpoB1V^((y;J#;jJSM$0V&8JE8qx>JRW_L5!r2_pB78jXEP(zVI@50w zUq5*qPJ3WMqP8DF^Ml4KCwVzD+*_kK_XIUZEyq$9I2f9vc^!P5RL&MV9RZ%E@c4%H zFt;!d;G5YTAU3)()OlD`uZi3z@A{R;paFcsyBL~>J61x@VOpC%^LZMxObseu!qJRR zdTdscvXHrpp6?L_#~mFm&>xCbV)59-lJ=L;8w5CPPPDxE2tJ{9L+@L0?Nv{=Ifyf| zgyb}q3tfByZP7l=ELOyr#R_{9th+GIvgn%ce?7~m)d#d^9M8~U0l$caclkF6Y~r_k&j799`9$ACa#{{l3>ljCJh3Pb zm-aZQ1zMozli4$fn1b`4?7RZepD5F0#;FmRP`nwo7`M5q(_`sRZn>^Tlvu6?&c=z- z-r3YigrL)0s}EBwV+A~-*&RwmqI8A_I8|m-CsBeSGbkux3?Swd=;WAJ2 z+0cNvIVW_{vjGCQekKlc}Bhz0gVR8MV{911QQJ+pVHO?|-QYKRrIMeBH4x7n(w%dFb% zZj^X(uTUY8$&opaCv|V^A2bnmU%m7xjo2rPBW=SLWjB)Cz8^bC_iNK}ml(WMz&)UY z?Vo&`k|M7^$NbDhxF zHp!<7rb#=1lW;@(y^M3^JkMe_=AJFTHPm_@qmx*;*PItAN-2P~|AB_e0 zOTGZ5dyHqa7emtT@5boAB*xq}RpqCvq>|vM?=9!mSCNev-fZTO!2hDL|E^9#wa))i zCqbNWK)=WjvwBGK=RGiqW)S(IN-}#@zq1<52aFHR;~6Q{f*jd6PI1Hg38oYMh>MF<$h#~rJuQL7-lAckrsKxVIR^7sL;9D9uxCi2{w+=0*QN0H#)&XM& z550jU9$SMOnipI13|)_%*Yq1X)`|P=UO!W>5d8P z+M!i``Sn@eHE-N9lC_D9*?J&@w?%Q$?`|G3T_I;ASymvAO?sZj5k?{KjuEA8w+?jH zS*8e|x^OZt8MrKNsPDaP=?0VY#7V=PFV>RP`S1Ly+3%jK_+*>W(eI;$3@J@LDlgk( z@GFNKitG5-&e8Dq=`v|=tz@nQuJr;gj~iMa8>4c%<+^rvek&4UYqEPN@N2&xDPjFA z9SV}3)+;PTy3*3YFIsoYYcmGSCn^&6%g36ej8LvaTNn?Ti@*1I>tEq+@yUxwP7AFx zctdQPpwy~5!e$u#y<+)*XW^|5XbaCUT4!8iYHXg<=O1@DT%F8!wp5DP_IFw^n zC(=UBPX0lHP;b$W)~nWvI^Q~Qgel?%@5qo_B}v`ZQVk5jz~I#3e>jwIgKMBuU1@OGXhMv8P4q4)-Rb@`{1T>&8{)=!ZI8{T3P%Su zTO$etouItHR0#ZLe%Y4Y{701Yius}lHTgR;!jrqJQ66sk&~r?ozCHQZ2M z`3HaBov#pk##y5?Ye{E)H<~9nLwu^H*RW`>igo?u$}uNb(RPRnJ!kZ)i2duQ)Bd~!-%w`1pWP) zq~Bvvm!c{>Gfq7M=j4)jw#7%S^%(X?I*)=sq#~wI;2{`B!@hJl?7E1(HQw&n0^ESW z6%BF(!>%QIRJS#6m@e@F2{A(gSCG4|s8>6vt-ZH0_nLQLJa8id-#j!^f*bO!*KXKzFMqy0Ws#D$It}~3?{3I<>_hG)B(2*bdCe(oH;(5QfbNK0Iqhwc z%)_JJDOsa>LsKyYe6J_?zW@C+jqm%&9`~@3CX$KB%={AD|8AX)lU43m6fIx2OR6Qe zy4)K+J7cD}L0cHFhIfWbs+N>xqB#G4YLx6P{1UbSH^i~#TcT4#)={pJnm2j>(P;o~ zM&KF=X5r=a4Ge>KtFpbicFwFH<~T>1Bny5Kn-ZZ+u4#x3x_`FS;#a*x?wC?#Zid`0 z^4R_Pb8}H18WZ#bhXroPm&Qu2?BSv2Az4bzc%28&!(V;phE2iuCahZQavS{~K#VA+vy8-J r^4YSl#~#TItul;Sgc$SzhZSx}%aRXIuiGij6N@v_{}y248wdP9UpA5V diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM2.bin b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM2.bin new file mode 100644 index 0000000000000000000000000000000000000000..e1e577a5ff9b5cb6ff3eec15fb7beb43a67d69ae GIT binary patch literal 9138 zcmds+32YTr6ozLI0grMp#?2#i+~_1g;I7A2@yd9Mih%IQKO9;R!vZmJt`0Z z5sJ!IBZ2{=A_j^e8cmcSn~E&45mDlXsP}uP$9vzrDeaT0FHSPO^X|R>+3z`LroQKS zgU!w5%iz^CW3P70wrrc$w^+v-@29USX}2eX`--PVZ)bkO(btnaA5=w=H#Y^@Bb;5<$n|TfeS#wmM?LppICpEd7$Y-ImO4z4Fic66(zk^ln}mx)L8j zT@%Tlo5o+8dba*VpP-J3=+DZ~6}^JGCXzq**C{DHTYsWoP{%~{XJzPmeu%D#O4FyFI_IgQnwvH(g0|FOpymLC1(bC(G4o2hrL}u zWU@>4woiVg!1EiJU;hs)5z|C{HV@Qmp}h*dZD=*i&S z)<$PV^AKDuO3z7o?|D#%Z}_{OXb$D*tZpVE*5QpiI>$CLE5TkX5%kp4iM_-7=J<7O z9HJ|BD$A$;_Isb|jAoUkbCVFA6V1QjeOLVcZ5pC$qWZV8biN=&XR2qFq-wpmmo83g zta*woNWGlC=(!P6FUclkL0uuAVs~3nHJgby$dN=T7_yA5sMwj+j~{6JX2;C$f0sH= zRwLSw=-7$kJ4&+u$PMFV=|p5VyUBwMuHMi{ve_GbllhFQg1e(v+0jZ6CRTTrbW6drMR2A@TWG_wotSP88ei4E7j zyH3>kJZb0z=Zl@%)TIeptg-gSnT4!ezhKKo;gW7v{vH=NDHq|OGeWtwS(kaqH?G_t zb@O|@b|m|!U-vI*4GpnTn^GyEqZ$V-eCqh=u>*3`*2JCy5NN_UJ?ri+61_U}P3N6I zh%_pt@VvAXVTMQqBhA>yJ9M@2a#>&ptI_e2VRi&<_;*e%GC&6zp7^w+NbK0w%!uT6 z_2k1tt`zy(nN`ik>_WTXi68pxeNFbvI8`_H#3LoB8+Px0Q7Q!dImz5-#$3Mf>nVca z{1TbvWAM54LUaa<_Dg$1PqpUVIT$?}dBOQQlOKDAEZKDK>Vo2oF(1c9SqDRnw@{5T zB*zY#-=W;`-EY_JPk$%!4Mg4v*v-vuMq*IvHow$rNZh$_$otWm^X+4OH$>0S;mQo0 zx$G}!*y@fiIRnhvOs((LQe#+S1}UgcMfV>%WUG&vH1Ll6i9D8HdvD4+7|9Y6VV&YY z9vRl9JN6S~W*o>g|KRl&ndKm{xOyAUHal{7s@>VytP*#40sR<*XD>XCu@;wDo?qbi z=KVBG>;x4zx_Be*S9NU%%lq!|39mKze>xXC|m^{?w6O z74P}ooSk@_742pi-45!9o#~q`@(KrujTGtm-JO;4XcoOUe4VA)BMxNtxKSk*d8I)H zdj~Xk?TrP=^0EB_{&v4L*>iyxp{v>vFMP$CuYO literal 0 HcmV?d00001 diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM2_v2.bin b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM2_v2.bin deleted file mode 100644 index 81bd5ae61b634bf895c08f7254eacd511e1bd157..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9520 zcmds+2{cvR`^S$=nG>SvqFa)SYYv%*WKKjWxu#S|DiytrhRBpLBtvu!Zzx14M7^e~ zDAk+NK#6#fk_PfSkJVo5tk&(n{_D4vwO+ro*5llDK4(As+28$~y`OWiU>IhF8yqaS zEx^s&x1TpI@9oXw$%FF+uU4@khPd6aV43H;0(Bj1pFdc$)b|1KdAK32Q8mqyD|X&)N4vV{cNRHv8#hfcV0gZ?S1k8P*{e4hRV)Zy`+_1lnd zI0G-Lr*R&4PUqfMNZVW_7MKD3f`4Fc)zecK*GbzdNr$`HA6QpUWGAXidJlT$UDTB~ z`ZyF-J_`PzU-qAEnfc}T$(Z>?ti1S6kLM~Y?!yAgD@+|;{sDeDahw0Mt+7or<2hzF z$+a-oqn(dh0Wop?WU*OmS9gwl;p{$tsGCn(pq9wAb7Y=(gfHm7(r)OaU7UI!Z!!}r z(#dr3@?NW|NtMV~1Gmj$$=3gNorJvKZJW02HCK>-`E*-lG-Eb(g1JFDnX84>e%csWo-YK63?ke81*K6&& zziV(db%JLZ=``2!X-lbT5$mR}!L`M-DWepxi?gW{tZPW8xt34iHG*63O*B2qXcc17 zSd_7PHgy7xkWO`EFF~idmQRj;G8Ts^JfwzK{sJGkZ`;mhKJm?Aol0$7^ZiWV z&<=7P&gr&aJl~SfmD)$y?8^GENgCpYwr~c{tnU8*)brWtgOXjt!GW32wNA&W>~;iy z#Co1t-HmE?W_34W%<67I-1lsc$GEp{`M10)2DCwPjSVKWU^d6I5FZab3!uO2{GL9U zO!Mn3`u8{RUv_Um^Ml4KCwVD5(pSAS|AbYZYMzA-a4*~ zVQyg_z&EowKx}knxa+W(ZVS0j-u)}DeiQhFcQG^%w=IQTBQ!UE=Jz&YnHp5Oh@%;w zwD_DBC1Eo+-2+Fd&f7cPpg$C=#G$VWi{}=VQVYwI8FX6h}d|uj$HJ;@>|5p8las5%A8Pe@3+_E+4kvUZ) z9mfzhh#BS&eHTcex)jy!9N2i4m9?XUvrQH_7|MThD?^D_`+vmWigYz3d-|q8Ta@GJ zca+@+q_m@pzaH{WSTzuhqnU%~-}Uo)HU&Dn7Pp($vx|EhLg5Ax+)(b#weKM|xr)Xd zl|dfi~782gFx zgG@g?A`^}`!xrH-S9N+U{mC=m-H;N`-Ne;AQQkY7I*Af=nrro8nnk>zS1gB9nP`mm z@Bo+cZ0aON&}ptcchl^j1AfG?>uMz>_zhQho6V+9iwQc-wR~DNpp_ylpCTS}=z5yp z-Xz7@)M*Jpr^fk%?sgeXg#;i6W*1=o5qFDTe2Cpu$FPG^RvWg+Dx6XBzSB_bqxRJ_1s@TW##T8Ok{FouHz})8~X>1MfR*- z^3~UMk=o(82ak{!J;AnDcagG3}Zywt@I1Y#DBd z(}%L(Hv1{WIizffe|P@$81Ur;?tY?CN29et_-ni5Q>sbIcHku3(0+d~Drz!RKjrUa z+vJ`fB*T?(9ejhHpc`ladq14v0ETLT3CrCI`}}Q-&i^AZqJM6@jL6bgh?mNSoox74 z!_N3PaQ`s0h4Flkm{RlMea+vjOzC4Q^wNgw=n%($pturuv|28YI}mP|Eyc0dPITt~ z2;d*(2Qxq5|FU0;p(VGmbwyrxt*6|+ShydJ1^7$;0L8oXXZA0Kq~G6((|bvbxqYhU zppK$)lCz$#oKIg>E@F7InL`5qi^l%DItkS}|4p3)al!%pB0tRPA<3WjzfB^OV|nme>S1`F3}|ivJ|6zU`fZw1Rn0`ykogcspylQXk!c; z`38I?fzPWdzN71~cNyt5b=-Te(M*V|2>jF-eGkn(;`#WS*e1Txi8g32g&W)m@$qIm zJxS9DCO=S4<*4a*RfYM0@u7J@GxZA5e_;E2K_3yN-O=ttq-@z&F2GRS*$JfWnw6Jchw-g>t<^N7g`IYY^cB6)1mI|xS@g}^&U6t~{o|ER$tP2}|XQw6EOWpP7&?{3f3pPVO7 z8s>VjmaHal`&Z3=_gp2W+Ki5VA1$U!Y3N$eL8u>m`CgZK8%;mtf zKEUO1L+fL6OkTHK*Um@ZN`%>3>>ddI+V4k7L_bR>Rnpsfg}G=~Mke@0>uzOz)_~bW zRq{Uhc;mDY$~9;U<3V%r_g-JU%RCIff~eGt@M`@x#I{L_Z7L&d2C?6(mJN6p-|U38 z@C>7M#yzgi<~fc1xZ9E1RQ|AXDPr5-X~ArcsJKt0g`A!I{UqVulI?9*tQEAsb>aw9 zzzyD!A-Bp>x~-*}=t6-Zt52nca6U#_pqO4@`{iE^)xYarlP}vcYP|tC7~)5j8KE)h zcOHcuC-H=FN-YLP)I)Pa#ll|IzWpnx!mQP2uT?=@Xx(D=P5}%K;@Fw(v1mS+?XfV= z=-nic&J{g%#Hm(HkE}acZXgPN(R)dym(0e@14lW1@*f`#`17R#V$eSvinzfw(5az3 zBw{ovZckmThm_8b{tWyQri2^fMg{GU&8CV+2Q}KFiiBLCyug$R{6=Ag!%l&tN(H5T zQeQ-9j=)t2e6xN0STR&aW8xiW)tMeLW8=)XK9tj-b8fFlzSEf_6{jo8I`)ivlp-ymANY;@ z@Y=|d9v+=q`I1CxG0dk`0@wL@5BQ-+TTp`k{!G&AF>gpy5t$jME`f7#OFVP%Q*Aqj zoy_E=`a>#WdITPdVfNUUPA88G*juA*&J5uC1g@Z;Clqlt*{im_b;FM`KadbJAaJVO zH3i-JK`pJ_)%jO_0~3K868Pq!aVu9fR#lUhPR7Xe>6yLS2pI#@P&&4Jd? z(Yv6BhIE88jPL*2OHKCN-BsN8>h>my*f4R!mOJ?Em@#h1w{C|)&)q_HN6JD)Ej4>= z$*;cSAMh+DY2FeoXia0ge!Q>gg-Bw43&T|*%ae6J_?zV|)Ip8xyE zu00VWEhJ;nnfWEQ|J^#9Agk25Fjl_8LyD1KTj>j*oiP*Kpe>A7-8aiET~o>;SzKVB zRgCOS{1UbSH^i~ln_^Q#)-mqU8aMd<(QX26O5o~ArjeD6O?3Ttt8#t1cFe3FW;jQh zqzZjmJ|#+-T+zVf5r<^0~6F#~#WJtulyNh#2$%hb3-E%d!to Uuh}WiTb^L3_btHqKmzdp07N>HDF6Tf diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM3.bin b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM3.bin new file mode 100644 index 0000000000000000000000000000000000000000..7378faf9805d0c9a395f7c9df1ca71887011d8a7 GIT binary patch literal 9186 zcmds+32YTr6ozLI0gidogVLf^QN>0c|NF`A}3aSGup#zjDrocmdpq{^Blf9GJYZ)G)U3h< z&ZkD6JkO%)RnAxxGhBi~b^~+6VeHmNG9GI)e}-^BEkYxjMbB((@Wj{Radf)oi3f7g ze#f+u4?Q0Zg7(25ibSw+{0Dm)ove*`FlZy*s>;5kep8aUZB+i*Si-&C&LQnWWs zb@uNk8_z}|HYQ>`Ys1#Y32v+Q3HB@_5_AKcel_nCnpC39;E}^4moIACtlr2EJ1^__ z@s@$D7iup=-?D4voDDp4rnQ_pX`AOabfI&-2d1Ozw!BsLn!?%C6BC7RZ6bgW#GH9Xlof&*yPUQlKtLUVj_Rxm)Z$k)$oq~)+3w^tTdi~N%E#GD_f1tIsBsNz)G|ZA|3}PCdk1O&!JbB=blp$oY zr6O{gfviX*k@QNR#y5k>-11VVwZG=wU~`XEE}=y`^5LtwYk%{6lb$g>2)XLk9^Dzd z+uH1`X&pkUMd?1N?mZ9g$PItj6U*ToUDeG*#5=rkN7vX^W+m8bC4!y0JMnjT-yFZK ztwU_ZPgTYA-+u2?o3X66Y(68z=0uBcc;6L&eA|TBnyB%uEt}hh*v#o!C#l|G?j?)U zT5Fx63UXe~TJ+2na$ZtRsDipeJ;m?#MAd30(V#|>rC_Ks_C&?ctbTfT*Ef1*9{yd< zajF{GhDHYtmEBm8{YP$?EXyaNyP>8IwivXomFVftF51<6tITSR8_}WVtmqmpUlz|a zd}Ll~occjW_nTz@MiWw*7i7CQkOy-XOt8ol2dVp6zX{68l4>aMi&lI*3?<&fuR3a- zuHWd$-h0Y2GqT!`P7%B9xrKEa3%=i3FHD)es#s1sLlWV+I{S+vJHxE!pJo1_2QtAj z5-;@-QE+oY;$#Q{9Kop_#432Q@BI4awVGEp)@p6rN3MAA{G8lxt##-kGvMruoP_={$Ss30$L}$E8GLX#Sn0YoGgj`}*gG^DL;24vL7ll)>MkMVg^PI$pwRMsmaT z??;E4e3>-1!1-dQK6QD57H^bXJ-e8d%NM-2UZkX(mA@wiNh(Do=!|ggWY%R~>W!=S zC;j}vukOqK>DL|4b%KZZsB@*3@KK9{9zJ&P__ZT*(^kjs0uWfjI4kS6K9apU^Ifm4 zKZ-W0rO513i7-PXgVE;NhkEq2`Ep)>g4O7J$uJZ_AO4+Piw^KXhlf9}C>1|;H8Y~Q zT|IK&mx4p(N7 z%w?b8VNZ8r$sS?0b%y%(OxWGz=s^WM@U zhbP9b@_!m9enqOAjl4k*uUpc?>e{;!V}_WMl8VT8pHaK(Br8I`dGv8mAU(gYGZXYq z;f$;LD&F(^Ih14wE86`qx*gY#ThrgM$O{}KK2@aW_jgvR<5~Lt_%)X2fH;uZlP6SI zEdiBuJ*2+OOM7=ZMm!lSSv4aYWN2Jd;vXD38 z$PZ3$JlH{Er)sDDlILeT6nuA63V2oZd(|yZ-gRtC+9dpV)8i$joh?J@#9V^LzBi@KU0g==6$l_GbA7*}u)at8sQP!gmV4Kw3+&GX03kS}z$l-Ay z%T|xivB(hy8H}&%aeR4hVR~VUP50N2?LqK3*{A0(l)=+$WQc^|zNN~`&NjqVcvp7k zC1xFo!F;5v(~1)O{yBO0n=N8>$7)xP7kfP$dAp}`lllP#kvyKa^mdIXQ==;9%@8@e RH9K{5D|50uUDtb$0iELRzvP6&N4TT7WsMlVU z>P=~(M7&5zh5XKCx@XRqr~mxtH)H1YyJs%vne#dKbzk@Q-mY`dU>IhJ8x$JcIB@gw z8Dxpie}DT_%J6c|>(z9KA#QszMDpdnKy7=Qmyb5A@p%M%8E%Mc73E#ZSusv=Q8q72 zpjXiaPD|kOYhq+%oj*11pbHJOu1Pfl4vjG52JMrTpIXZXuzL6x%8pL%ZP!RL|a zigEA!0 zo=#TTN{ET+7mLf@xW0Sr8)NUqqrI#W>~%z@nJf9SD}rP2TBp9FW=YyZyvls6NGFq3 z0{xcNGfGi!hVGiiiCX>Jb>jB=uyf9$-%L*C_4A!oG3|?~6O0Yg$xP`&jUHQ?&8w!5 z;Ss?MpZ@JSu~Ph#PDluOt#okAYbkx3x0pJ?JViP!wfWTa(JS@K(0%y_b~H*}#*Q1}F5L_vw%x0>ZqQ#Ujca+B1sv+Z zT!(9h%{Pztq8G~SqOJF3f7&VmaYJ3W0;iUD|9|rNoQz@Np3#uNtd|;R8mHz)3UvHN4#UoY?@|C*ljuxPC{#?7&q{o%s<18V{FcU|5$Aem)$ zlScQUG22!5Ml?RCztX~2a-w`x%L;-l^Of_>wSa@6F4#>EFXVGm2pYSe*#^J67k87m*wy$hn1~jw73YT#-@6$OU zw^f11)J^-y30bFI-EPnxidAUk#MG*;*Kx+2jMhQzuReoM$lcKUR$^D}^Bs0~G*#!G8^s_Rqe)_K$MRrXAUD>CyHEF;vVv&W*6@olQv>Yxb zETgD<&A)DQOy1heN&ePI%l`?in0S80#-^@~9=*{7u33sAg^+i2=QlT!I;~Do9 z-G{_AV@kds^-mNViowx*A^Layx|vRnLa)K>rt#wP!NxFnfEPD3_mRq~otD~s5*yM;<&jAhj6HfY-S=R! z{9@{~nxIqD@?m$|%;qBgTynK*2Hz!U7xq55LJq+hs6CjgPbJV&r?EV(xObKQhT=y4jb|wSikzY z9kERsCp%+%1rL(+!MRBw0XZXrs4u`@vjxcCr@XLxH6roxUcAn0V$7YhwSHRi zipfqoKGNO;)p>~F)#i&3{ulNAcX<-Zb^eaF1e>|e{e17t?Z=NL4)}a#R&Y&1m%FUUF6HjcX7?EWm6qcUmQ1h5aMIWaeS7p z79#pcF^!>i&{Y}61Nw)?@tn9)alTX{lOS!Ab`Qx^gvbg%w0Gv#$tGn-H2yPn!14=T z4O@>J@~wD$I)N*h^U8)>H`(MmBhwc8&ipH~BWg~y*?Z6Jp5lUlc%tvFT7$W;tn6~G zcCYKXjU4B}w*+qR48+}J6;Wkp=`&2W3Ya*0>>X_J*aqCtxY(FxYkBUzuG7M}NziZa z=J|Yu=s&RYBd0g7!u}Zd5mJuS8y8?G?wmx@F7>J_Z^KzPyz|IT(;zZx`++207scg# zZ`+uWh_t?NWw8u4;}wh}j7;F&WAZz0AAZtkp3Zyr;+euU;8M7uw)b~t>CP+@B#kn? z+9;~Res`f}zgt&HY1ZT8)8i!+aW!pAR=TI)R~k1I*QxJM#-l!FNoKyckh~hW(Hpo7 zZfJjOiOuho?%Dg~M=1|otL-Dsh3$SOM-I|-%L;p0iJ0;AWM+Y1wC`3mWDl86Ri_-1 zNia+wBj13!&>u7we;@SGxw@j=w=g;_GonWK9kFh*e23B)onG8@_1Yn?lH1)-7uGP^ zXWZlKtzSCRpK?21m&O)eAx^COJ1wY%@ppy(Di51Lm8hUEl^Cau){KMMjAf!ZYYpy9k((D4u<#%#rCk+jC)VQ zPmxxHGm5VQM$|*yxRR@1dEl^!EDvqX`5V;`7uvU|y;A^#LhL)WGZu{pwKEpR8NHhX zQkY_9k2}`!>xgR4ROs=6U-Vv5&OX4?}Det0{(n0hZwXEMIJY}2Rb!Yghq}h z#~-MV+as>^b1)OXg(={MxItm(Q`6a!@nN-&=wfacNG~u&0>4#MX}_2KghFB2fcQ6F zX9wU)1inqTGAE-oVl+41QZdlWN(Zs~eay7F;XG5Y@WL@Nbqi9tO)29jJJ3cMxcBV@ zv95D%^r6i^Gf!XRY~aY?;GH0{YKx@LlgH%4B-OUOd7Wai6K@hz!3}BB*id36wX286 zd$ReY@GuLc0@%i19DYMl#SJ~L_9fCZ_+f(S=X0u#b?)Y)z|{!c&w<&%K!~UOa{En1 zVIEFMJur0w-z>y;)v1)v>G}DQ5W}??1^6Zc@7R81U^2T~fi60!-X$RU1aJ)kcT3r% z%@y_>Co4}cvg>l`*Z zaDQLPz?-{Uh2p{m^;_@Zk7I_oA>Z0vdVTkc=pD#h@)|03*y@G86CSNtMN+@RSJ;+L zck@(HG3buky&CLemd3)O@86@oI{4m9@cm#q*p6*_Y~O*%u~w2H-~9Lz>;G<# zPLxvU=8BW4+#}vzP*>#xpR6$>+@LP>SJfxmEkj-0JVlWGkY%jYZTuEyj2q%u+im{Y z5vy4D7`0oh|7bP?Hz9Dre=!n2eCZwp560%k15WPCTZN?1ZMfjGaH%{LLP*7 zm@U*K?5>fe-pw!OJLjFy$J_Hy{$=sKk$0irD*X#|##=-0Pg%6v z7PR<1gcwmw;gpn&OCmu_Wi0Q?0AqH(gvA_*!S^nwy4O{tT0*U%MKLQMoBm(~r D(I=s5 diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM4.bin b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CSVM4.bin new file mode 100644 index 0000000000000000000000000000000000000000..85439b6e8b07a477d7d71b0783d97e660619517d GIT binary patch literal 9328 zcmds+32YTr6ozLI0gL7~O=+K0eQ}cMopf;JzzuXQ&+VxP*y19rwh%_>~r ze17DY=UG&>(iw|lhD%V$u3>IC4BIg~f4c|IBh?SnrQiD2W%&EM5JR~zwQ&_=vfmVHUxCnR&*sQk0BgnRRSeOpw9t>j10 z)y#9pYdofI&-#8=_14DpVQ9TrMkqYT|J{6xv0L=K9Lx>v05^{Fy)ox)x9>? zZnr`_0)iWV5*v+VhwQ1-iKg`%9V?e)4Zmz2!2z^tFDNq+q4|A$R5(VW z)lvb;OYMYisyU;F^$2GJE47zgo4j@V>W0H|jy*3ruoA5Uxk>$D)@sfS`eGYgMh}0d zfXswSXgegoT;Tcj&9DE57s;Og%8Lz*7s&(7Me>5^x_KC^8N@U^A79REx%lvml)hxL zr6O{gfviX*k@RZU+LOU#Zhx`OhF?eDZgY=SE}=y`@?rPF4ZnH5Nza%bgj{uNkM0cK zZEbc|v<@NFqI92>_nrrL4c%~)1hHa8BjInm-9-gm_x-zFipCTe^u%jTvbHgkGbNvhU|d)11x zMp~z+f}EFgmp^rboR?G+s-Uh=Pw~4wQMH;$G^mkeDHy7ZJyG#9tDoJ|?yXLl$Ii$( zPE{k@(CF~d;yX&R|HuuKW%)#OH`LU@`d4pkD0;fH%fGF+LuR$c4Q$z9ZgdToFN@6# zADNdLr+(1U{U+I?)~HnG1=&0fAI1>f(i7beVGQz$2$A&Kx@oBd^honhAVFE)SB1DRkM ziI;kaD7ZNxaWVt}j^NY|Vii2u_wAXyLG#MSTCHt5`-X?E$jSZ2T8Az&V;*Drwjx=Zl^C)a40Uys_@)d4;TuSo*;xk&K zm;D6~d%6=#_5icCQtNxQoH491gBF}lMKcc^u&0liH1JORi9D8n_KwNhAE^?OVOPX~ zJUF~-5Bw*{%s7x~{{9gbndKnyxJH}EHb40NEKAwhtZGcKk7xw| zvu^69c+cn+coaUiqDk1Daq zs|*s4qY2)o(qOskZ#>AU5Zhls?S7lG`-mL_U$u_>;;YxBk59fNI}$9H#2ESe?&)7o z{x{p}uX)id?`^N9bacI)754;l~iO=@m#9LPz_dM&WX0dXLU z*N)7w$bkkKjIZl)eAy~LJ-`0e2dc;RAb6bY)AJX~;OR9eL_%=iQsrf58{#s&E4%Yr zvrepn`AAo%6(#unbNqm}>&NPjm98GocYZqZc2DPK&lOGvmkNJGS1Rm>g1hWDAu1kO pA>Dy_h|rh)Jr%iJQpwO2i;0`)$6Dm_2b-ay`Id6)!q08&{{()n0pb7v literal 0 HcmV?d00001 diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeHandlerDetector.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeHandlerDetector.cs index 9ae1debc..fc0452e6 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeHandlerDetector.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeHandlerDetector.cs @@ -25,19 +25,17 @@ using de4dot.blocks; namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { class CompositeHandlerDetector { - readonly List handlers; + readonly List handlers; - public CompositeHandlerDetector(IList handlers) { - this.handlers = new List(handlers.Count); - OpCodeHandler nop = null; - foreach (var handler in handlers) { - if (nop == null && handler.OpCodeHandlerInfo.TypeCode == HandlerTypeCode.Nop) - nop = handler; - else - this.handlers.Add(handler); - } - if (nop != null) - this.handlers.Add(nop); + public CompositeHandlerDetector(IList handlers) { + this.handlers = new List(handlers); + + this.handlers.Sort((a, b) => { + int r = b.BlockSigInfos.Count.CompareTo(a.BlockSigInfos.Count); + if (r != 0) + return r; + return b.BlockSigInfos[0].Hashes.Count.CompareTo(a.BlockSigInfos[0].Hashes.Count); + }); } struct MatchState { @@ -51,27 +49,18 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { } struct HandlerState { - public readonly HandlerMethod HandlerMethod; - public readonly IList Blocks; + public readonly List BlockSigInfos; public readonly int BlockIndex; - public int InstructionIndex; + public int HashIndex; - public HandlerState(HandlerMethod handlerMethod, int blockIndex, int instructionIndex) { - this.HandlerMethod = handlerMethod; - this.Blocks = handlerMethod.Blocks.MethodBlocks.GetAllBlocks(); + public HandlerState(List blockSigInfos, int blockIndex, int instructionIndex) { + this.BlockSigInfos = blockSigInfos; this.BlockIndex = blockIndex; - this.InstructionIndex = instructionIndex; - } - - public HandlerState(HandlerMethod handlerMethod, IList blocks, int blockIndex, int instructionIndex) { - this.HandlerMethod = handlerMethod; - this.Blocks = blocks; - this.BlockIndex = blockIndex; - this.InstructionIndex = instructionIndex; + this.HashIndex = instructionIndex; } public HandlerState Clone() { - return new HandlerState(HandlerMethod, Blocks, BlockIndex, InstructionIndex); + return new HandlerState(BlockSigInfos, BlockIndex, HashIndex); } } @@ -98,22 +87,22 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { } public bool FindHandlers(CompositeOpCodeHandler composite) { - composite.OpCodeHandlerInfos.Clear(); - var compositeExecState = new FindHandlerState(new HandlerState(composite.ExecMethod, 0, 0)); + composite.TypeCodes.Clear(); + var compositeExecState = new FindHandlerState(new HandlerState(composite.BlockSigInfos, 0, 0)); while (!compositeExecState.Done) { var handler = FindHandlerMethod(ref compositeExecState); if (handler == null) return false; - composite.OpCodeHandlerInfos.Add(handler.OpCodeHandlerInfo); + composite.TypeCodes.Add(handler.TypeCode); } - return composite.OpCodeHandlerInfos.Count != 0; + return composite.TypeCodes.Count != 0; } - OpCodeHandler FindHandlerMethod(ref FindHandlerState findExecState) { + MethodSigInfo FindHandlerMethod(ref FindHandlerState findExecState) { foreach (var handler in handlers) { FindHandlerState findExecStateNew = findExecState.Clone(); - if (!Matches(handler.ExecMethod, ref findExecStateNew)) + if (!Matches(handler.BlockSigInfos, ref findExecStateNew)) continue; findExecState = findExecStateNew; @@ -123,14 +112,14 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { } Stack stack = new Stack(); - bool Matches(HandlerMethod handler, ref FindHandlerState findState) { + bool Matches(List handler, ref FindHandlerState findState) { HandlerState? nextState = null; stack.Clear(); stack.Push(new MatchState(new HandlerState(handler, 0, 0), findState.CompositeState)); while (stack.Count > 0) { var matchState = stack.Pop(); - if (matchState.CompositeState.InstructionIndex == 0) { + if (matchState.CompositeState.HashIndex == 0) { if (findState.VisitedCompositeBlocks.ContainsKey(matchState.CompositeState.BlockIndex)) continue; findState.VisitedCompositeBlocks[matchState.CompositeState.BlockIndex] = true; @@ -143,193 +132,83 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { if (!Compare(ref matchState.OtherState, ref matchState.CompositeState)) return false; - var hblock = matchState.OtherState.Blocks[matchState.OtherState.BlockIndex]; - var hinstrs = hblock.Instructions; - int hi = matchState.OtherState.InstructionIndex; - var cblock = matchState.CompositeState.Blocks[matchState.CompositeState.BlockIndex]; - var cinstrs = cblock.Instructions; - int ci = matchState.CompositeState.InstructionIndex; + var hblock = matchState.OtherState.BlockSigInfos[matchState.OtherState.BlockIndex]; + var hinstrs = hblock.Hashes; + int hi = matchState.OtherState.HashIndex; + var cblock = matchState.CompositeState.BlockSigInfos[matchState.CompositeState.BlockIndex]; + var cinstrs = cblock.Hashes; + int ci = matchState.CompositeState.HashIndex; if (hi < hinstrs.Count) return false; if (ci < cinstrs.Count) { - if (hblock.CountTargets() != 0) + if (hblock.Targets.Count != 0) return false; - if (hblock.LastInstr.OpCode.Code == Code.Ret) { + if (hblock.EndsInRet) { if (nextState != null) return false; nextState = matchState.CompositeState; } } else { - if (cblock.CountTargets() != hblock.CountTargets()) + if (cblock.Targets.Count != hblock.Targets.Count) + return false; + if (cblock.HasFallThrough != hblock.HasFallThrough) return false; - if (cblock.FallThrough != null || hblock.FallThrough != null) { - if (cblock.FallThrough == null || hblock.FallThrough == null) - return false; - var hs = CreateHandlerState(handler, matchState.OtherState.Blocks, hblock.FallThrough); - var cs = CreateHandlerState(findState.CompositeState.HandlerMethod, findState.CompositeState.Blocks, cblock.FallThrough); + for (int i = 0; i < cblock.Targets.Count; i++) { + var hs = new HandlerState(handler, hblock.Targets[i], 0); + var cs = new HandlerState(findState.CompositeState.BlockSigInfos, cblock.Targets[i], 0); stack.Push(new MatchState(hs, cs)); } - if (cblock.Targets != null || hblock.Targets != null) { - if (cblock.Targets == null || hblock.Targets == null || - cblock.Targets.Count != hblock.Targets.Count) - return false; - - for (int i = 0; i < cblock.Targets.Count; i++) { - var hs = CreateHandlerState(handler, matchState.OtherState.Blocks, hblock.Targets[i]); - var cs = CreateHandlerState(findState.CompositeState.HandlerMethod, findState.CompositeState.Blocks, cblock.Targets[i]); - stack.Push(new MatchState(hs, cs)); - } - } } } if (nextState == null) { + if (findState.VisitedCompositeBlocks.Count != findState.CompositeState.BlockSigInfos.Count) + return false; findState.Done = true; return true; } else { if (findState.CompositeState.BlockIndex == nextState.Value.BlockIndex && - findState.CompositeState.InstructionIndex == nextState.Value.InstructionIndex) + findState.CompositeState.HashIndex == nextState.Value.HashIndex) return false; findState.CompositeState = nextState.Value; + if (findState.CompositeState.HashIndex == 0) + findState.VisitedCompositeBlocks.Remove(findState.CompositeState.BlockIndex); return true; } } - static HandlerState CreateHandlerState(HandlerMethod handler, IList blocks, Block target) { - return new HandlerState(handler, blocks.IndexOf(target), 0); - } - static bool Compare(ref HandlerState handler, ref HandlerState composite) { - var hinstrs = handler.Blocks[handler.BlockIndex].Instructions; - int hi = handler.InstructionIndex; - var cinstrs = composite.Blocks[composite.BlockIndex].Instructions; - int ci = composite.InstructionIndex; + var hhashes = handler.BlockSigInfos[handler.BlockIndex].Hashes; + int hi = handler.HashIndex; + var chashes = composite.BlockSigInfos[composite.BlockIndex].Hashes; + int ci = composite.HashIndex; while (true) { - if (hi >= hinstrs.Count && ci >= cinstrs.Count) + if (hi >= hhashes.Count && ci >= chashes.Count) break; - if (hi >= hinstrs.Count || ci >= cinstrs.Count) + + if (hi >= hhashes.Count) { + if (handler.BlockSigInfos[handler.BlockIndex].EndsInRet) + break; + } + + if (hi >= hhashes.Count || ci >= chashes.Count) return false; - var hinstr = hinstrs[hi++]; - var cinstr = cinstrs[ci++]; - if (hinstr.OpCode.Code == Code.Nop || - cinstr.OpCode.Code == Code.Nop) { - if (hinstr.OpCode.Code != Code.Nop) - hi--; - if (cinstr.OpCode.Code != Code.Nop) - ci--; - continue; - } + var hhash = hhashes[hi++]; + var chash = chashes[ci++]; - if (hi == hinstrs.Count && hinstr.OpCode.Code == Code.Ret) { - if (cinstr.OpCode.Code != Code.Br && cinstr.OpCode.Code != Code.Ret) - ci--; - break; - } - - if (hinstr.OpCode.Code != cinstr.OpCode.Code) - return false; - - if (hinstr.OpCode.Code == Code.Ldfld && - hi + 1 < hinstrs.Count && ci + 1 < cinstrs.Count) { - var hfield = hinstr.Operand as FieldDef; - var cfield = cinstr.Operand as FieldDef; - if (hfield != null && cfield != null && - !hfield.IsStatic && !cfield.IsStatic && - hfield.DeclaringType == handler.HandlerMethod.Method.DeclaringType && - cfield.DeclaringType == composite.HandlerMethod.Method.DeclaringType && - SignatureEqualityComparer.Instance.Equals(hfield.Signature, cfield.Signature)) { - cinstr = cinstrs[ci++]; - hinstr = hinstrs[hi++]; - if (cinstr.OpCode.Code != Code.Ldc_I4 || - hinstr.OpCode.Code != Code.Ldc_I4) - return false; - continue; - } - } - - if (!CompareOperand(hinstr.OpCode.OperandType, cinstr.Operand, hinstr.Operand)) + if (chash != hhash) return false; } - handler.InstructionIndex = hi; - composite.InstructionIndex = ci; + handler.HashIndex = hi; + composite.HashIndex = ci; return true; } - - static bool CompareOperand(OperandType opType, object a, object b) { - switch (opType) { - case OperandType.ShortInlineI: - return (a is byte && b is byte && (byte)a == (byte)b) || - (a is sbyte && b is sbyte && (sbyte)a == (sbyte)b); - - case OperandType.InlineI: - return a is int && b is int && (int)a == (int)b; - - case OperandType.InlineI8: - return a is long && b is long && (long)a == (long)b; - - case OperandType.ShortInlineR: - return a is float && b is float && (float)a == (float)b; - - case OperandType.InlineR: - return a is double && b is double && (double)a == (double)b; - - case OperandType.InlineField: - return FieldEqualityComparer.CompareDeclaringTypes.Equals(a as IField, b as IField); - - case OperandType.InlineMethod: - return MethodEqualityComparer.CompareDeclaringTypes.Equals(a as IMethod, b as IMethod); - - case OperandType.InlineSig: - return SignatureEqualityComparer.Instance.Equals(a as MethodSig, b as MethodSig); - - case OperandType.InlineString: - return string.Equals(a as string, b as string); - - case OperandType.InlineSwitch: - var al = a as IList; - var bl = b as IList; - return al != null && bl != null && al.Count == bl.Count; - - case OperandType.InlineTok: - var fa = a as IField; - var fb = b as IField; - if (fa != null && fb != null) - return FieldEqualityComparer.CompareDeclaringTypes.Equals(fa, fb); - var ma = a as IMethod; - var mb = b as IMethod; - if (ma != null && mb != null) - return MethodEqualityComparer.CompareDeclaringTypes.Equals(ma, mb); - return TypeEqualityComparer.Instance.Equals(a as ITypeDefOrRef, b as ITypeDefOrRef); - - case OperandType.InlineType: - return TypeEqualityComparer.Instance.Equals(a as ITypeDefOrRef, b as ITypeDefOrRef); - - case OperandType.InlineVar: - case OperandType.ShortInlineVar: - var la = a as Local; - var lb = b as Local; - if (la != null && lb != null) - return true; - var pa = a as Parameter; - var pb = b as Parameter; - return pa != null && pb != null && pa.Index == pb.Index; - - case OperandType.InlineBrTarget: - case OperandType.ShortInlineBrTarget: - case OperandType.InlineNone: - case OperandType.InlinePhi: - return true; - - default: - return false; - } - } } } diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeOpCodeHandler.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeOpCodeHandler.cs index 2508d020..cc6afe0e 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeOpCodeHandler.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeOpCodeHandler.cs @@ -23,45 +23,17 @@ using dnlib.DotNet; using de4dot.blocks; namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { - class HandlerMethod { - public MethodDef Method { get; private set; } - public Blocks Blocks { get; private set; } - - public HandlerMethod(MethodDef method) { - this.Method = method; - this.Blocks = new Blocks(method); - } - } - - class PrimitiveHandlerMethod : HandlerMethod { - public MethodSigInfo Sig { get; set; } - - public PrimitiveHandlerMethod(MethodDef method) - : base(method) { - } - } - class CompositeOpCodeHandler { - public TypeDef HandlerType { get; private set; } - public HandlerMethod ExecMethod { get; private set; } - public List OpCodeHandlerInfos { get; private set; } + public List BlockSigInfos { get; private set; } + public List TypeCodes { get; private set; } - public CompositeOpCodeHandler(TypeDef handlerType, HandlerMethod execMethod) { - this.HandlerType = handlerType; - this.ExecMethod = execMethod; - this.OpCodeHandlerInfos = new List(); + public CompositeOpCodeHandler(List blockSigInfos) { + this.BlockSigInfos = blockSigInfos; + this.TypeCodes = new List(); } public override string ToString() { - if (OpCodeHandlerInfos.Count == 0) - return ""; - var sb = new StringBuilder(); - foreach (var handler in OpCodeHandlerInfos) { - if (sb.Length != 0) - sb.Append(", "); - sb.Append(handler.Name); - } - return sb.ToString(); + return OpCodeHandlerInfo.GetCompositeName(TypeCodes); } } } diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmInfo.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmInfo.cs index 815cc53d..a5d1c557 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmInfo.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmInfo.cs @@ -594,45 +594,79 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { } public bool FindUnaryOpsMethods() { - UnaryNot = FindUnaryOpMethod(Code.Not); - UnaryNeg = FindUnaryOpMethod(Code.Neg); - return UnaryNot != null && UnaryNeg != null; + UnaryNot = FindUnaryOpMethod1(Code.Not); + UnaryNeg = FindUnaryOpMethod1(Code.Neg); + if (UnaryNot != null && UnaryNeg != null) + return true; + + return FindUnaryOpMethod2(); } - MethodDef FindUnaryOpMethod(Code code) { + MethodDef FindUnaryOpMethod1(Code code) { foreach (var type in module.Types) { if (type.BaseType != VmHandlerBaseType) continue; if (type.Methods.Count != 4) continue; - foreach (var method in type.Methods) { - if (!method.HasBody || !method.IsStatic) - continue; - if (!DotNetUtils.IsMethod(method, "System.Object", "(System.Object)")) - continue; - if (CountThrows(method) != 1) - continue; - var instrs = method.Body.Instructions; - for (int i = 0; i < instrs.Count - 4; i++) { - var ldarg = instrs[i]; - if (!ldarg.IsLdarg() || ldarg.GetParameterIndex() != 0) - continue; - if (!CheckUnboxAny(instrs[i + 1], ElementType.I4)) - continue; - if (instrs[i + 2].OpCode.Code != code) - continue; - if (!CheckBox(instrs[i + 3], ElementType.I4)) - continue; - if (!instrs[i + 4].IsStloc()) - continue; - - return method; - } - } + var method = FindUnaryMethod(type, code); + if (method != null) + return method; } return null; } + bool FindUnaryOpMethod2() { + foreach (var type in module.Types) { + if (type.BaseType == null || type.BaseType.FullName != "System.Object") + continue; + if (type.Methods.Count != 3) + continue; + + UnaryNot = FindUnaryMethod(type, Code.Not); + UnaryNeg = FindUnaryMethod(type, Code.Neg); + if (UnaryNot != null && UnaryNeg != null) + return true; + } + return false; + } + + MethodDef FindUnaryMethod(TypeDef type, Code code) { + foreach (var method in type.Methods) { + if (!IsUnsaryMethod(method, code)) + continue; + + return method; + } + return null; + } + + bool IsUnsaryMethod(MethodDef method, Code code) { + if (!method.HasBody || !method.IsStatic) + return false; + if (!DotNetUtils.IsMethod(method, "System.Object", "(System.Object)")) + return false; + if (CountThrows(method) != 1) + return false; + var instrs = method.Body.Instructions; + for (int i = 0; i < instrs.Count - 4; i++) { + var ldarg = instrs[i]; + if (!ldarg.IsLdarg() || ldarg.GetParameterIndex() != 0) + continue; + if (!CheckUnboxAny(instrs[i + 1], ElementType.I4)) + continue; + if (instrs[i + 2].OpCode.Code != code) + continue; + if (!CheckBox(instrs[i + 3], ElementType.I4)) + continue; + if (!instrs[i + 4].IsStloc()) + continue; + + return true; + } + + return false; + } + static int CountThrows(MethodDef method) { if (method == null || method.Body == null) return 0; diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmResources.Designer.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmResources.Designer.cs index 6153040b..3a090f84 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmResources.Designer.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmResources.Designer.cs @@ -63,9 +63,9 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { /// /// Looks up a localized resource of type System.Byte[]. /// - internal static byte[] CSVM1_v2 { + internal static byte[] CSVM1 { get { - object obj = ResourceManager.GetObject("CSVM1_v2", resourceCulture); + object obj = ResourceManager.GetObject("CSVM1", resourceCulture); return ((byte[])(obj)); } } @@ -73,9 +73,9 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { /// /// Looks up a localized resource of type System.Byte[]. /// - internal static byte[] CSVM2_v2 { + internal static byte[] CSVM2 { get { - object obj = ResourceManager.GetObject("CSVM2_v2", resourceCulture); + object obj = ResourceManager.GetObject("CSVM2", resourceCulture); return ((byte[])(obj)); } } @@ -83,9 +83,19 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { /// /// Looks up a localized resource of type System.Byte[]. /// - internal static byte[] CSVM3_v2 { + internal static byte[] CSVM3 { get { - object obj = ResourceManager.GetObject("CSVM3_v2", resourceCulture); + object obj = ResourceManager.GetObject("CSVM3", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] CSVM4 { + get { + object obj = ResourceManager.GetObject("CSVM4", resourceCulture); return ((byte[])(obj)); } } diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmResources.resx b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmResources.resx index 254aef83..17159be0 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmResources.resx +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmResources.resx @@ -117,14 +117,17 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - CSVM1_v2.bin;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + CSVM1.bin;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - CSVM2_v2.bin;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + CSVM2.bin;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - CSVM3_v2.bin;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + CSVM3.bin;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + CSVM4.bin;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmToCilMethodConverter.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmToCilMethodConverter.cs index 3cc2f2f6..7d76cf59 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmToCilMethodConverter.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmToCilMethodConverter.cs @@ -45,11 +45,11 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { uint offset = 0; for (int vmInstrIndex = 0; vmInstrIndex < numVmInstrs; vmInstrIndex++) { var composite = opCodeDetector.Handlers[vmInstrs[vmInstrIndex]]; - var handlerInfos = composite.OpCodeHandlerInfos; + IList handlerInfos = composite.HandlerTypeCodes; if (handlerInfos.Count == 0) - handlerInfos = new List() { new OpCodeHandlerInfo(HandlerTypeCode.Nop, null) }; + handlerInfos = new HandlerTypeCode[] { HandlerTypeCode.Nop }; for (int hi = 0; hi < handlerInfos.Count; hi++) { - var instr = handlerInfoReader.Read(handlerInfos[hi].TypeCode, reader); + var instr = handlerInfoReader.Read(handlerInfos[hi], reader); instr.Offset = offset; offset += (uint)GetInstructionSize(instr); SetCilToVmIndex(instr, vmInstrIndex); @@ -58,6 +58,7 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { instrs.Add(instr); } } + return instrs; } } diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/MethodFinder.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/MethodFinder.cs deleted file mode 100644 index ca206830..00000000 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/MethodFinder.cs +++ /dev/null @@ -1,109 +0,0 @@ -/* - Copyright (C) 2011-2013 de4dot@gmail.com - - This file is part of de4dot. - - de4dot is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - de4dot is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with de4dot. If not, see . -*/ - -using System.Collections.Generic; - -namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { - class MethodFinder { - readonly IList handlerInfos; - readonly PrimitiveHandlerMethod handlerMethod; - - class SigState { - public readonly MethodSigInfo SigInfo; - - public SigState(PrimitiveHandlerMethod handlerMethod) { - this.SigInfo = handlerMethod.Sig; - } - } - - public MethodFinder(IList handlerInfos, PrimitiveHandlerMethod handlerMethod) { - this.handlerInfos = handlerInfos; - this.handlerMethod = handlerMethod; - } - - public OpCodeHandler FindHandler() { - var handler = FindHandler(new SigState(handlerMethod)); - if (handler == null) - return null; - - return new OpCodeHandler(handler, handlerMethod.Method.DeclaringType, handlerMethod); - } - - OpCodeHandlerInfo FindHandler(SigState execSigState) { - foreach (var handler in handlerInfos) { - if (Matches(handler.ExecSig, execSigState)) - return handler; - } - return null; - } - - struct MatchInfo { - public int HandlerIndex; - public int SigIndex; - - public MatchInfo(int handlerIndex, int sigIndex) { - this.HandlerIndex = handlerIndex; - this.SigIndex = sigIndex; - } - } - - Dictionary sigIndexToHandlerIndex = new Dictionary(); - Dictionary handlerIndexToSigIndex = new Dictionary(); - Stack stack = new Stack(); - bool Matches(MethodSigInfo handlerSig, SigState sigState) { - stack.Clear(); - sigIndexToHandlerIndex.Clear(); - handlerIndexToSigIndex.Clear(); - var handlerInfos = handlerSig.BlockInfos; - var sigInfos = sigState.SigInfo.BlockInfos; - - stack.Push(new MatchInfo(0, 0)); - while (stack.Count > 0) { - var info = stack.Pop(); - - int handlerIndex, sigIndex; - bool hasVisitedHandler = handlerIndexToSigIndex.TryGetValue(info.HandlerIndex, out sigIndex); - bool hasVisitedSig = sigIndexToHandlerIndex.TryGetValue(info.SigIndex, out handlerIndex); - if (hasVisitedHandler != hasVisitedSig) - return false; - if (hasVisitedHandler) { - if (handlerIndex != info.HandlerIndex || sigIndex != info.SigIndex) - return false; - continue; - } - handlerIndexToSigIndex[info.HandlerIndex] = info.SigIndex; - sigIndexToHandlerIndex[info.SigIndex] = info.HandlerIndex; - - var handlerBlock = handlerInfos[info.HandlerIndex]; - var sigBlock = sigInfos[info.SigIndex]; - - if (!handlerBlock.Equals(sigBlock)) - return false; - - for (int i = 0; i < handlerBlock.Targets.Count; i++) { - int handlerTargetIndex = handlerBlock.Targets[i]; - int sigTargetIndex = sigBlock.Targets[i]; - stack.Push(new MatchInfo(handlerTargetIndex, sigTargetIndex)); - } - } - - return true; - } - } -} diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/MethodSigInfoCreator.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/MethodSigInfoCreator.cs deleted file mode 100644 index c311e0a9..00000000 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/MethodSigInfoCreator.cs +++ /dev/null @@ -1,737 +0,0 @@ -/* - Copyright (C) 2011-2013 de4dot@gmail.com - - This file is part of de4dot. - - de4dot is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - de4dot is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with de4dot. If not, see . -*/ - -using System; -using System.Collections.Generic; -using System.IO; -using System.Security.Cryptography; -using dnlib.DotNet; -using dnlib.DotNet.Emit; -using dnlib.DotNet.MD; -using de4dot.blocks; - -namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { - class MethodSigInfo { - readonly List blockInfos; - - public List BlockInfos { - get { return blockInfos; } - } - - public MethodSigInfo() { - this.blockInfos = new List(); - } - - public MethodSigInfo(IEnumerable blockInfos) { - this.blockInfos = new List(blockInfos); - } - } - - class BlockInfo : IEquatable { - readonly List targets; - - public byte[] Hash { get; set; } - public List Targets { - get { return targets; } - } - - public BlockInfo() { - this.targets = new List(); - } - - public BlockInfo(byte[] hash, IEnumerable targets) { - this.Hash = hash; - this.targets = new List(targets); - } - - public override string ToString() { - if (Hash == null) - return ""; - return BitConverter.ToString(Hash).Replace("-", string.Empty); - } - - public bool Equals(BlockInfo other) { - return Equals(Hash, other.Hash) && - Targets.Count == other.Targets.Count; - } - - bool Equals(byte[] a, byte[] b) { - if (a == b) - return true; - if (a == null || b == null) - return false; - if (a.Length != b.Length) - return false; - for (int i = 0; i < a.Length; i++) { - if (a[i] != b[i]) - return false; - } - return true; - } - } - - class MethodSigInfoCreator { - MethodSigInfo methodSigInfo; - Blocks blocks; - IList allBlocks; - Dictionary blockToInfo; - Dictionary methodToId = new Dictionary(); - - public void AddId(object key, int id) { - if (key != null) - methodToId[key] = id; - } - - int GetId(object key) { - if (key == null) - return int.MinValue; - - int id; - if (methodToId.TryGetValue(key, out id)) - return id; - return int.MinValue + 1; - } - - public MethodSigInfo Create(Blocks blocks) { - methodSigInfo = new MethodSigInfo(); - - this.blocks = blocks; - allBlocks = blocks.MethodBlocks.GetAllBlocks(); - - blockToInfo = new Dictionary(); - foreach (var block in allBlocks) { - var blockInfo = new BlockInfo(); - blockToInfo[block] = blockInfo; - methodSigInfo.BlockInfos.Add(blockInfo); - } - - foreach (var block in allBlocks) { - var blockInfo = blockToInfo[block]; - Update(blockInfo, block); - if (block.FallThrough != null) - blockInfo.Targets.Add(allBlocks.IndexOf(block.FallThrough)); - if (block.Targets != null) { - foreach (var target in block.Targets) - blockInfo.Targets.Add(allBlocks.IndexOf(target)); - } - } - - return methodSigInfo; - } - - void Update(BlockInfo blockInfo, Block block) { - using (var hasher = MD5.Create()) { - bool emptyHash; - using (var outStream = new NullStream()) { - using (var csStream = new CryptoStream(outStream, hasher, CryptoStreamMode.Write)) { - var writer = new BinaryWriter(csStream); - Update(writer, blockInfo, block); - } - emptyHash = outStream.Length == 0; - } - if (!emptyHash) - blockInfo.Hash = hasher.Hash; - } - } - - void Update(BinaryWriter writer, BlockInfo blockInfo, Block block) { - var instrs = block.Instructions; - for (int i = 0; i < instrs.Count; i++) { - var instr = instrs[i]; - switch (instr.OpCode.Code) { - case Code.Beq_S: - case Code.Bge_S: - case Code.Bgt_S: - case Code.Ble_S: - case Code.Blt_S: - case Code.Bne_Un_S: - case Code.Bge_Un_S: - case Code.Bgt_Un_S: - case Code.Ble_Un_S: - case Code.Blt_Un_S: - case Code.Brfalse_S: - case Code.Brtrue_S: - case Code.Leave_S: - case Code.Beq: - case Code.Bge: - case Code.Bgt: - case Code.Ble: - case Code.Blt: - case Code.Bne_Un: - case Code.Bge_Un: - case Code.Bgt_Un: - case Code.Ble_Un: - case Code.Blt_Un: - case Code.Brfalse: - case Code.Brtrue: - case Code.Leave: - writer.Write((ushort)SimplifyBranch(instr.OpCode.Code)); - break; - - case Code.Switch: - writer.Write((ushort)instr.OpCode.Code); - writer.Write(blockInfo.Targets.Count); - break; - - case Code.Br_S: - case Code.Br: - break; - - case Code.Ret: - break; - - case Code.Ldc_I4_M1: - case Code.Ldc_I4_0: - case Code.Ldc_I4_1: - case Code.Ldc_I4_2: - case Code.Ldc_I4_3: - case Code.Ldc_I4_4: - case Code.Ldc_I4_5: - case Code.Ldc_I4_6: - case Code.Ldc_I4_7: - case Code.Ldc_I4_8: - case Code.Ldc_I4: - case Code.Ldc_I4_S: - writer.Write((ushort)Code.Ldc_I4); - writer.Write(instr.GetLdcI4Value()); - break; - - case Code.Ldc_I8: - writer.Write((ushort)instr.OpCode.Code); - writer.Write((long)instr.Operand); - break; - - case Code.Ldc_R4: - writer.Write((ushort)instr.OpCode.Code); - writer.Write((float)instr.Operand); - break; - - case Code.Ldc_R8: - writer.Write((ushort)instr.OpCode.Code); - writer.Write((double)instr.Operand); - break; - - case Code.Ldfld: - var typeField = instr.Operand as FieldDef; - bool isField = IsTypeField(typeField); - writer.Write((ushort)instr.OpCode.Code); - writer.Write(isField); - if (isField) { - if (i + 1 < instrs.Count && instrs[i + 1].IsLdcI4()) - i++; - writer.Write(GetFieldId(typeField)); - } - else - Write(writer, instr.Operand); - break; - - case Code.Call: - case Code.Callvirt: - case Code.Newobj: - case Code.Jmp: - case Code.Ldftn: - case Code.Ldvirtftn: - case Code.Ldtoken: - case Code.Stfld: - case Code.Ldsfld: - case Code.Stsfld: - case Code.Ldflda: - case Code.Ldsflda: - case Code.Cpobj: - case Code.Ldobj: - case Code.Castclass: - case Code.Isinst: - case Code.Unbox: - case Code.Stobj: - case Code.Box: - case Code.Newarr: - case Code.Ldelema: - case Code.Ldelem: - case Code.Stelem: - case Code.Unbox_Any: - case Code.Refanyval: - case Code.Mkrefany: - case Code.Initobj: - case Code.Constrained: - case Code.Sizeof: - writer.Write((ushort)instr.OpCode.Code); - Write(writer, instr.Operand); - break; - - case Code.Ldstr: - writer.Write((ushort)instr.OpCode.Code); - break; - - case Code.Ldarg: - case Code.Ldarg_S: - case Code.Ldarg_0: - case Code.Ldarg_1: - case Code.Ldarg_2: - case Code.Ldarg_3: - writer.Write((ushort)Code.Ldarg); - writer.Write(instr.Instruction.GetParameterIndex()); - break; - - case Code.Ldarga: - case Code.Ldarga_S: - writer.Write((ushort)Code.Ldarga); - writer.Write(instr.Instruction.GetParameterIndex()); - break; - - case Code.Starg: - case Code.Starg_S: - writer.Write((ushort)Code.Starg); - writer.Write(instr.Instruction.GetParameterIndex()); - break; - - case Code.Ldloc: - case Code.Ldloc_S: - case Code.Ldloc_0: - case Code.Ldloc_1: - case Code.Ldloc_2: - case Code.Ldloc_3: - writer.Write((ushort)Code.Ldloc); - break; - - case Code.Ldloca: - case Code.Ldloca_S: - writer.Write((ushort)Code.Ldloca); - break; - - case Code.Stloc: - case Code.Stloc_S: - case Code.Stloc_0: - case Code.Stloc_1: - case Code.Stloc_2: - case Code.Stloc_3: - writer.Write((ushort)Code.Stloc); - break; - - case Code.Ldnull: - case Code.Throw: - case Code.Rethrow: - case Code.Ldlen: - case Code.Ckfinite: - case Code.Arglist: - case Code.Localloc: - case Code.Volatile: - case Code.Tailcall: - case Code.Cpblk: - case Code.Initblk: - case Code.Refanytype: - case Code.Readonly: - case Code.Break: - case Code.Endfinally: - case Code.Endfilter: - writer.Write((ushort)instr.OpCode.Code); - break; - - case Code.Calli: - writer.Write((ushort)instr.OpCode.Code); - Write(writer, instr.Operand); - break; - - case Code.Unaligned: - writer.Write((ushort)instr.OpCode.Code); - writer.Write((byte)instr.Operand); - break; - - default: - break; - } - } - } - - void Write(BinaryWriter writer, object op) { - var fd = op as FieldDef; - if (fd != null) { - Write(writer, fd); - return; - } - - var mr = op as MemberRef; - if (mr != null) { - Write(writer, mr); - return; - } - - var md = op as MethodDef; - if (md != null) { - Write(writer, md); - return; - } - - var ms = op as MethodSpec; - if (ms != null) { - Write(writer, ms); - return; - } - - var td = op as TypeDef; - if (td != null) { - Write(writer, td); - return; - } - - var tr = op as TypeRef; - if (tr != null) { - Write(writer, tr); - return; - } - - var ts = op as TypeSpec; - if (ts != null) { - Write(writer, ts); - return; - } - - var fsig = op as FieldSig; - if (fsig != null) { - Write(writer, fsig); - return; - } - - var msig = op as MethodSig; - if (msig != null) { - Write(writer, msig); - return; - } - - var gsig = op as GenericInstMethodSig; - if (gsig != null) { - Write(writer, gsig); - return; - } - - var asmRef = op as AssemblyRef; - if (asmRef != null) { - Write(writer, asmRef); - return; - } - - writer.Write((byte)ObjectType.Unknown); - } - - enum ObjectType : byte { - // 00..3F = Table.XXX values. - Unknown = 0x40, - TypeSig = 0x41, - FieldSig = 0x42, - MethodSig = 0x43, - GenericInstMethodSig = 0x44, - } - - void Write(BinaryWriter writer, TypeSig sig) { - Write(writer, sig, 0); - } - - void Write(BinaryWriter writer, TypeSig sig, int level) { - if (level++ > 20) - return; - - writer.Write((byte)ObjectType.TypeSig); - var etype = sig.GetElementType(); - writer.Write((byte)etype); - switch (etype) { - case ElementType.Ptr: - case ElementType.ByRef: - case ElementType.SZArray: - case ElementType.Pinned: - Write(writer, sig.Next, level); - break; - - case ElementType.Array: - var arySig = (ArraySig)sig; - writer.Write(arySig.Rank); - writer.Write(arySig.Sizes.Count); - writer.Write(arySig.LowerBounds.Count); - Write(writer, sig.Next, level); - break; - - case ElementType.CModReqd: - case ElementType.CModOpt: - Write(writer, ((ModifierSig)sig).Modifier); - Write(writer, sig.Next, level); - break; - - case ElementType.ValueArray: - writer.Write(((ValueArraySig)sig).Size); - Write(writer, sig.Next, level); - break; - - case ElementType.Module: - writer.Write(((ModuleSig)sig).Index); - Write(writer, sig.Next, level); - break; - - case ElementType.GenericInst: - var gis = (GenericInstSig)sig; - Write(writer, gis.GenericType, level); - foreach (var ga in gis.GenericArguments) - Write(writer, ga, level); - Write(writer, sig.Next, level); - break; - - case ElementType.FnPtr: - Write(writer, ((FnPtrSig)sig).Signature); - break; - - case ElementType.Var: - case ElementType.MVar: - writer.Write(((GenericSig)sig).Number); - break; - - case ElementType.ValueType: - case ElementType.Class: - Write(writer, ((TypeDefOrRefSig)sig).TypeDefOrRef); - break; - - case ElementType.End: - case ElementType.Void: - case ElementType.Boolean: - case ElementType.Char: - case ElementType.I1: - case ElementType.U1: - case ElementType.I2: - case ElementType.U2: - case ElementType.I4: - case ElementType.U4: - case ElementType.I8: - case ElementType.U8: - case ElementType.R4: - case ElementType.R8: - case ElementType.String: - case ElementType.TypedByRef: - case ElementType.I: - case ElementType.U: - case ElementType.R: - case ElementType.Object: - case ElementType.Internal: - case ElementType.Sentinel: - default: - break; - } - } - - void Write(BinaryWriter writer, FieldSig sig) { - writer.Write((byte)ObjectType.FieldSig); - writer.Write((byte)(sig == null ? 0 : sig.GetCallingConvention())); - Write(writer, sig.GetFieldType()); - } - - void Write(BinaryWriter writer, MethodSig sig) { - writer.Write((byte)ObjectType.MethodSig); - writer.Write((byte)(sig == null ? 0 : sig.GetCallingConvention())); - Write(writer, sig.GetRetType()); - foreach (var p in sig.GetParams()) - Write(writer, p); - writer.Write(sig.GetParamCount()); - bool hasParamsAfterSentinel = sig.GetParamsAfterSentinel() != null; - writer.Write(hasParamsAfterSentinel); - if (hasParamsAfterSentinel) { - foreach (var p in sig.GetParamsAfterSentinel()) - Write(writer, p); - } - } - - void Write(BinaryWriter writer, GenericInstMethodSig sig) { - writer.Write((byte)ObjectType.GenericInstMethodSig); - writer.Write((byte)(sig == null ? 0 : sig.GetCallingConvention())); - foreach (var ga in sig.GetGenericArguments()) - Write(writer, ga); - } - - void Write(BinaryWriter writer, FieldDef fd) { - writer.Write((byte)Table.Field); - Write(writer, fd.DeclaringType); - var attrMask = FieldAttributes.Static | FieldAttributes.InitOnly | - FieldAttributes.Literal | FieldAttributes.SpecialName | - FieldAttributes.PinvokeImpl | FieldAttributes.RTSpecialName; - writer.Write((ushort)(fd == null ? 0 : fd.Attributes & attrMask)); - Write(writer, fd == null ? null : fd.Signature); - } - - void Write(BinaryWriter writer, MemberRef mr) { - writer.Write((byte)Table.MemberRef); - var parent = mr == null ? null : mr.Class; - Write(writer, parent); - bool canWriteName = IsFromNonObfuscatedAssembly(parent); - writer.Write(canWriteName); - if (canWriteName) - writer.Write(mr.Name); - Write(writer, mr == null ? null : mr.Signature); - } - - void Write(BinaryWriter writer, MethodDef md) { - writer.Write((byte)Table.Method); - Write(writer, md.DeclaringType); - var attrMask1 = MethodImplAttributes.CodeTypeMask | MethodImplAttributes.ManagedMask | - MethodImplAttributes.ForwardRef | MethodImplAttributes.PreserveSig | - MethodImplAttributes.InternalCall; - writer.Write((ushort)(md == null ? 0 : md.ImplAttributes & attrMask1)); - var attrMask2 = MethodAttributes.Static | MethodAttributes.Virtual | - MethodAttributes.HideBySig | MethodAttributes.VtableLayoutMask | - MethodAttributes.CheckAccessOnOverride | MethodAttributes.Abstract | - MethodAttributes.SpecialName | MethodAttributes.PinvokeImpl | - MethodAttributes.UnmanagedExport | MethodAttributes.RTSpecialName; - writer.Write((ushort)(md == null ? 0 : md.Attributes & attrMask2)); - Write(writer, md == null ? null : md.Signature); - writer.Write(md == null ? 0 : md.ParamDefs.Count); - writer.Write(md == null ? 0 : md.GenericParameters.Count); - writer.Write(md == null ? false : md.HasImplMap); - writer.Write(GetId(md)); - } - - void Write(BinaryWriter writer, MethodSpec ms) { - writer.Write((byte)Table.MethodSpec); - Write(writer, ms == null ? null : ms.Method); - Write(writer, ms == null ? null : ms.Instantiation); - } - - void Write(BinaryWriter writer, TypeDef td) { - writer.Write((byte)Table.TypeDef); - Write(writer, td == null ? null : td.BaseType); - var attrMask = TypeAttributes.LayoutMask | TypeAttributes.ClassSemanticsMask | - TypeAttributes.Abstract | TypeAttributes.SpecialName | - TypeAttributes.Import | TypeAttributes.WindowsRuntime | - TypeAttributes.StringFormatMask | TypeAttributes.RTSpecialName; - writer.Write((uint)(td == null ? 0 : td.Attributes & attrMask)); - Write(writer, td == null ? null : td.BaseType); - writer.Write(td == null ? 0 : td.GenericParameters.Count); - writer.Write(td == null ? 0 : td.Interfaces.Count); - if (td != null) { - foreach (var iface in td.Interfaces) - Write(writer, iface); - } - writer.Write(GetId(td)); - } - - void Write(BinaryWriter writer, TypeRef tr) { - writer.Write((byte)Table.TypeRef); - Write(writer, tr == null ? null : tr.ResolutionScope); - bool canWriteName = IsFromNonObfuscatedAssembly(tr); - writer.Write(canWriteName); - if (canWriteName) { - writer.Write(tr.Namespace); - writer.Write(tr.Name); - } - } - - void Write(BinaryWriter writer, TypeSpec ts) { - writer.Write((byte)Table.TypeSpec); - Write(writer, ts == null ? null : ts.TypeSig); - } - - void Write(BinaryWriter writer, AssemblyRef asmRef) { - writer.Write((byte)Table.AssemblyRef); - - bool canWriteAsm = IsNonObfuscatedAssembly(asmRef); - writer.Write(canWriteAsm); - if (canWriteAsm) { - bool hasPk = !PublicKeyBase.IsNullOrEmpty2(asmRef.PublicKeyOrToken); - writer.Write(hasPk); - if (hasPk) - writer.Write(PublicKeyBase.ToPublicKeyToken(asmRef.PublicKeyOrToken).Data); - writer.Write(asmRef.Name); - writer.Write(asmRef.Culture); - } - } - - static bool IsFromNonObfuscatedAssembly(IMemberRefParent mrp) { - return IsFromNonObfuscatedAssembly(mrp as TypeRef); - } - - static bool IsFromNonObfuscatedAssembly(TypeRef tr) { - if (tr == null) - return false; - - for (int i = 0; i < 100; i++) { - var asmRef = tr.ResolutionScope as AssemblyRef; - if (asmRef != null) - return IsNonObfuscatedAssembly(asmRef); - - var tr2 = tr.ResolutionScope as TypeRef; - if (tr2 != null) { - tr = tr2; - continue; - } - - break; - } - - return false; - } - - static bool IsNonObfuscatedAssembly(AssemblyRef asmRef) { - if (asmRef == null) - return false; - // The only external asm refs it uses... - if (asmRef.Name != "mscorlib" && asmRef.Name != "System") - return false; - - return true; - } - - bool IsTypeField(FieldDef fd) { - return fd != null && fd.DeclaringType == blocks.Method.DeclaringType; - } - - int GetFieldId(FieldDef fd) { - if (fd == null) - return int.MinValue; - var fieldType = fd.FieldSig.GetFieldType(); - if (fieldType == null) - return int.MinValue + 1; - - int result = 0; - for (int i = 0; i < 100; i++) { - result += (int)fieldType.ElementType; - if (fieldType.Next == null) - break; - result += 0x100; - fieldType = fieldType.Next; - } - - var td = fieldType.TryGetTypeDef(); - if (td != null && td.IsEnum) - return result + 0x10000000; - return result; - } - - static Code SimplifyBranch(Code code) { - switch (code) { - case Code.Beq_S: return Code.Beq; - case Code.Bge_S: return Code.Bge; - case Code.Bgt_S: return Code.Bgt; - case Code.Ble_S: return Code.Ble; - case Code.Blt_S: return Code.Blt; - case Code.Bne_Un_S: return Code.Bne_Un; - case Code.Bge_Un_S: return Code.Bge_Un; - case Code.Bgt_Un_S: return Code.Bgt_Un; - case Code.Ble_Un_S: return Code.Ble_Un; - case Code.Blt_Un_S: return Code.Blt_Un; - case Code.Br_S: return Code.Br; - case Code.Brfalse_S: return Code.Brfalse; - case Code.Brtrue_S: return Code.Brtrue; - case Code.Leave_S: return Code.Leave; - default: return code; - } - } - } -} diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandler.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandler.cs deleted file mode 100644 index 606d1f68..00000000 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandler.cs +++ /dev/null @@ -1,38 +0,0 @@ -/* - Copyright (C) 2011-2013 de4dot@gmail.com - - This file is part of de4dot. - - de4dot is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - de4dot is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with de4dot. If not, see . -*/ - -using dnlib.DotNet; - -namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { - class OpCodeHandler { - public OpCodeHandlerInfo OpCodeHandlerInfo { get; private set; } - public TypeDef HandlerType { get; private set; } - public HandlerMethod ExecMethod { get; private set; } - - public OpCodeHandler(OpCodeHandlerInfo opCodeHandlerInfo, TypeDef handlerType, HandlerMethod execMethod) { - this.OpCodeHandlerInfo = opCodeHandlerInfo; - this.HandlerType = handlerType; - this.ExecMethod = execMethod; - } - - public override string ToString() { - return OpCodeHandlerInfo.Name; - } - } -} diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfo.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfo.cs index d7d3d48d..1d07cf95 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfo.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfo.cs @@ -19,24 +19,35 @@ using System; using System.Collections.Generic; +using System.Text; namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { class OpCodeHandlerInfo { public HandlerTypeCode TypeCode { get; private set; } public string Name { get; private set; } - public MethodSigInfo ExecSig { get; private set; } - public OpCodeHandlerInfo(HandlerTypeCode typeCode, MethodSigInfo execSig) { + public OpCodeHandlerInfo(HandlerTypeCode typeCode) { this.TypeCode = typeCode; this.Name = GetHandlerName(typeCode); - this.ExecSig = execSig; } public override string ToString() { return Name; } - static string GetHandlerName(HandlerTypeCode code) { + public static string GetCompositeName(IList typeCodes) { + if (typeCodes.Count == 0) + return ""; + var sb = new StringBuilder(); + foreach (var typeCode in typeCodes) { + if (sb.Length != 0) + sb.Append(", "); + sb.Append(GetHandlerName(typeCode)); + } + return sb.ToString(); + } + + public static string GetHandlerName(HandlerTypeCode code) { switch (code) { case HandlerTypeCode.Add: return "add"; case HandlerTypeCode.Add_Ovf: return "add.ovf"; diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfos.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfos.cs index 13165b97..a78753b8 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfos.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfos.cs @@ -23,75 +23,61 @@ using System.IO; namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { static class OpCodeHandlerInfos { - enum OpCodeHandlersFileVersion : int { - V1 = 1, - } - - public static void Write(BinaryWriter writer, IList handlerInfos) { - WriteV1(writer, handlerInfos); - } - - public static void WriteV1(BinaryWriter writer, IList handlerInfos) { - writer.Write((int)OpCodeHandlersFileVersion.V1); + public static void Write(BinaryWriter writer, List handlerInfos) { + writer.Write(1); writer.Write(handlerInfos.Count); foreach (var handler in handlerInfos) { writer.Write((int)handler.TypeCode); - var infos = handler.ExecSig.BlockInfos; - writer.Write(infos.Count); - foreach (var info in infos) { - if (info.Hash == null) - writer.Write(0); - else { - writer.Write(info.Hash.Length); - writer.Write(info.Hash); - } + writer.Write(handler.BlockSigInfos.Count); + foreach (var info in handler.BlockSigInfos) { writer.Write(info.Targets.Count); foreach (var target in info.Targets) writer.Write(target); + writer.Write(info.Hashes.Count); + foreach (var hash in info.Hashes) + writer.Write((uint)hash); + writer.Write(info.HasFallThrough); + writer.Write(info.EndsInRet); } } } - public static List Read(BinaryReader reader) { - switch ((OpCodeHandlersFileVersion)reader.ReadInt32()) { - case OpCodeHandlersFileVersion.V1: return ReadV1(reader); - default: throw new ApplicationException("Invalid file version"); - } - } - - static List ReadV1(BinaryReader reader) { + public static List Read(BinaryReader reader) { + if (reader.ReadInt32() != 1) + throw new InvalidDataException(); int numHandlers = reader.ReadInt32(); - var list = new List(numHandlers); + var list = new List(numHandlers); for (int i = 0; i < numHandlers; i++) { var typeCode = (HandlerTypeCode)reader.ReadInt32(); - int numInfos = reader.ReadInt32(); - var sigInfo = new MethodSigInfo(); - for (int j = 0; j < numInfos; j++) { - var info = new BlockInfo(); - - info.Hash = reader.ReadBytes(reader.ReadInt32()); - if (info.Hash.Length == 0) - info.Hash = null; - + int numBlocks = reader.ReadInt32(); + var blocks = new List(numBlocks); + for (int j = 0; j < numBlocks; j++) { int numTargets = reader.ReadInt32(); + var targets = new List(numTargets); for (int k = 0; k < numTargets; k++) - info.Targets.Add(reader.ReadInt32()); - - sigInfo.BlockInfos.Add(info); + targets.Add(reader.ReadInt32()); + var numHashes = reader.ReadInt32(); + var hashes = new List(numHashes); + for (int k = 0; k < numHashes; k++) + hashes.Add((BlockElementHash)reader.ReadInt32()); + var block = new BlockSigInfo(hashes, targets); + block.HasFallThrough = reader.ReadBoolean(); + block.EndsInRet = reader.ReadBoolean(); + blocks.Add(block); } - - list.Add(new OpCodeHandlerInfo(typeCode, sigInfo)); + list.Add(new MethodSigInfo(blocks, typeCode)); } return list; } - public static readonly IList[] HandlerInfos = new IList[] { - ReadOpCodeHandlerInfos(CsvmResources.CSVM1_v2), - ReadOpCodeHandlerInfos(CsvmResources.CSVM2_v2), - ReadOpCodeHandlerInfos(CsvmResources.CSVM3_v2), + public static readonly IList[] HandlerInfos = new IList[] { + ReadOpCodeHandlerInfos(CsvmResources.CSVM1), + ReadOpCodeHandlerInfos(CsvmResources.CSVM2), + ReadOpCodeHandlerInfos(CsvmResources.CSVM3), + ReadOpCodeHandlerInfos(CsvmResources.CSVM4), }; - static IList ReadOpCodeHandlerInfos(byte[] data) { + static IList ReadOpCodeHandlerInfos(byte[] data) { return OpCodeHandlerInfos.Read(new BinaryReader(new MemoryStream(data))); } } diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/SigCreator.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/SigCreator.cs new file mode 100644 index 00000000..0206b16f --- /dev/null +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/SigCreator.cs @@ -0,0 +1,593 @@ +/* + Copyright (C) 2011-2013 de4dot@gmail.com + + This file is part of de4dot. + + de4dot is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + de4dot is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with de4dot. If not, see . +*/ + +using System; +using System.Collections.Generic; +using System.Text; +using dnlib.DotNet; +using dnlib.DotNet.Emit; +using de4dot.blocks; + +namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { + class MethodSigInfo { + public HandlerTypeCode TypeCode { get; set; } + public List BlockSigInfos { get; private set; } + + public MethodSigInfo(List blockSigInfos) { + this.BlockSigInfos = blockSigInfos; + } + + public MethodSigInfo(List blockSigInfos, HandlerTypeCode typeCode) { + this.BlockSigInfos = blockSigInfos; + this.TypeCode = typeCode; + } + + public override string ToString() { + return OpCodeHandlerInfo.GetHandlerName(TypeCode); + } + } + + class BlockSigInfo { + readonly List targets; + + public List Hashes { get; private set; } + public List Targets { + get { return targets; } + } + public bool HasFallThrough { get; set; } + public bool EndsInRet { get; set; } + + public BlockSigInfo() { + this.targets = new List(); + this.Hashes = new List(); + } + + public BlockSigInfo(List hashes, List targets) { + this.Hashes = hashes; + this.targets = targets; + } + } + + enum BlockElementHash : int { + } + + class SigCreator { + const int BASE_INDEX = 0x40000000; + Blocks blocks; + Dictionary objToId = new Dictionary(); + CRC32 hasher = new CRC32(); + + public SigCreator() { + } + + public void AddId(object key, int id) { + if (key != null) + objToId[key] = id; + } + + int? GetId(object key) { + if (key == null) + return null; + + int id; + if (objToId.TryGetValue(key, out id)) + return id; + return null; + } + + public List Create(MethodDef method) { + blocks = new Blocks(method); + var allBlocks = blocks.MethodBlocks.GetAllBlocks(); + + var blockInfos = new List(allBlocks.Count); + foreach (var block in allBlocks) { + var blockInfo = new BlockSigInfo(); + blockInfo.HasFallThrough = block.FallThrough != null; + blockInfo.EndsInRet = block.LastInstr.OpCode.Code == Code.Ret; + blockInfos.Add(blockInfo); + var instrs = block.Instructions; + for (int i = 0; i < instrs.Count; i++) { + var info = CalculateHash(instrs, ref i); + if (info != null) + blockInfo.Hashes.Add(info.Value); + } + } + + for (int i = 0; i < blockInfos.Count; i++) { + var block = allBlocks[i]; + var blockInfo = blockInfos[i]; + + if (block.FallThrough != null) + blockInfo.Targets.Add(allBlocks.IndexOf(block.FallThrough)); + if (block.Targets != null) { + foreach (var target in block.Targets) + blockInfo.Targets.Add(allBlocks.IndexOf(target)); + } + } + + return blockInfos; + } + + BlockElementHash? CalculateHash(IList instrs, ref int index) { + hasher.Initialize(); + var instr = instrs[index]; + switch (instr.OpCode.Code) { + case Code.Beq: + case Code.Beq_S: + return GetHash(BASE_INDEX + 0); + + case Code.Bge: + case Code.Bge_S: + return GetHash(BASE_INDEX + 1); + + case Code.Bge_Un: + case Code.Bge_Un_S: + return GetHash(BASE_INDEX + 2); + + case Code.Bgt: + case Code.Bgt_S: + return GetHash(BASE_INDEX + 3); + + case Code.Bgt_Un: + case Code.Bgt_Un_S: + return GetHash(BASE_INDEX + 4); + + case Code.Ble: + case Code.Ble_S: + return GetHash(BASE_INDEX + 5); + + case Code.Ble_Un: + case Code.Ble_Un_S: + return GetHash(BASE_INDEX + 6); + + case Code.Blt: + case Code.Blt_S: + return GetHash(BASE_INDEX + 7); + + case Code.Blt_Un: + case Code.Blt_Un_S: + return GetHash(BASE_INDEX + 8); + + case Code.Bne_Un: + case Code.Bne_Un_S: + return GetHash(BASE_INDEX + 9); + + case Code.Brfalse: + case Code.Brfalse_S: + return GetHash(BASE_INDEX + 10); + + case Code.Brtrue: + case Code.Brtrue_S: + return GetHash(BASE_INDEX + 11); + + case Code.Switch: + return GetHash(BASE_INDEX + 12); + + case Code.Ceq: + return GetHash(BASE_INDEX + 13); + + case Code.Cgt: + return GetHash(BASE_INDEX + 14); + + case Code.Cgt_Un: + return GetHash(BASE_INDEX + 15); + + case Code.Clt: + return GetHash(BASE_INDEX + 16); + + case Code.Clt_Un: + return GetHash(BASE_INDEX + 17); + + case Code.Ldc_I4: + case Code.Ldc_I4_0: + case Code.Ldc_I4_1: + case Code.Ldc_I4_2: + case Code.Ldc_I4_3: + case Code.Ldc_I4_4: + case Code.Ldc_I4_5: + case Code.Ldc_I4_6: + case Code.Ldc_I4_7: + case Code.Ldc_I4_8: + case Code.Ldc_I4_M1: + case Code.Ldc_I4_S: + return GetHash(instr.GetLdcI4Value()); + + case Code.Ldstr: + return GetHash(instr.Operand as string); + + case Code.Rethrow: + return GetHash(BASE_INDEX + 18); + + case Code.Throw: + return GetHash(BASE_INDEX + 19); + + case Code.Call: + case Code.Callvirt: + Hash(instr.Operand); + return (BlockElementHash)hasher.GetHash(); + + case Code.Ldfld: + var field = instr.Operand as FieldDef; + if (!IsTypeField(field)) + return null; + if (index + 1 >= instrs.Count || !instrs[index + 1].IsLdcI4()) + return null; + index++; + return GetHash(GetFieldId(field)); + + default: + break; + } + return null; + } + + bool IsTypeField(FieldDef fd) { + return fd != null && fd.DeclaringType == blocks.Method.DeclaringType; + } + + static int GetFieldId(FieldDef fd) { + if (fd == null) + return int.MinValue; + var fieldType = fd.FieldSig.GetFieldType(); + if (fieldType == null) + return int.MinValue + 1; + + int result = BASE_INDEX + 0x1000; + for (int i = 0; i < 100; i++) { + result += (int)fieldType.ElementType; + if (fieldType.Next == null) + break; + result += 0x100; + fieldType = fieldType.Next; + } + + var td = fieldType.TryGetTypeDef(); + if (td != null && td.IsEnum) + return result + 0x10000000; + return result; + } + + void Hash(object op) { + var md = op as MethodDef; + if (md != null) { + Hash(md); + return; + } + + var mr = op as MemberRef; + if (mr != null) { + Hash(mr); + return; + } + + var td = op as TypeDef; + if (td != null) { + Hash(td); + return; + } + + var tr = op as TypeRef; + if (tr != null) { + Hash(tr); + return; + } + + var ts = op as TypeSpec; + if (ts != null) { + Hash(ts); + return; + } + + var fsig = op as FieldSig; + if (fsig != null) { + Hash(fsig); + return; + } + + var msig = op as MethodSig; + if (msig != null) { + Hash(msig); + return; + } + + var gsig = op as GenericInstMethodSig; + if (gsig != null) { + Hash(gsig); + return; + } + + var asmRef = op as AssemblyRef; + if (asmRef != null) { + Hash(asmRef); + return; + } + + var tsig = op as TypeSig; + if (tsig != null) { + Hash(tsig); + return; + } + + return; + } + + void Hash(TypeSig sig) { + Hash(sig, 0); + } + + void Hash(TypeSig sig, int level) { + if (sig == null) + return; + if (level++ > 20) + return; + + hasher.Hash((byte)0x41); + var etype = sig.GetElementType(); + hasher.Hash((byte)etype); + switch (etype) { + case ElementType.Ptr: + case ElementType.ByRef: + case ElementType.SZArray: + case ElementType.Pinned: + Hash(sig.Next, level); + break; + + case ElementType.Array: + var arySig = (ArraySig)sig; + hasher.Hash(arySig.Rank); + hasher.Hash(arySig.Sizes.Count); + hasher.Hash(arySig.LowerBounds.Count); + Hash(sig.Next, level); + break; + + case ElementType.CModReqd: + case ElementType.CModOpt: + Hash(((ModifierSig)sig).Modifier); + Hash(sig.Next, level); + break; + + case ElementType.ValueArray: + hasher.Hash(((ValueArraySig)sig).Size); + Hash(sig.Next, level); + break; + + case ElementType.Module: + hasher.Hash(((ModuleSig)sig).Index); + Hash(sig.Next, level); + break; + + case ElementType.GenericInst: + var gis = (GenericInstSig)sig; + Hash(gis.GenericType, level); + foreach (var ga in gis.GenericArguments) + Hash(ga, level); + Hash(sig.Next, level); + break; + + case ElementType.FnPtr: + Hash(((FnPtrSig)sig).Signature); + break; + + case ElementType.Var: + case ElementType.MVar: + hasher.Hash(((GenericSig)sig).Number); + break; + + case ElementType.ValueType: + case ElementType.Class: + Hash(((TypeDefOrRefSig)sig).TypeDefOrRef); + break; + + case ElementType.End: + case ElementType.Void: + case ElementType.Boolean: + case ElementType.Char: + case ElementType.I1: + case ElementType.U1: + case ElementType.I2: + case ElementType.U2: + case ElementType.I4: + case ElementType.U4: + case ElementType.I8: + case ElementType.U8: + case ElementType.R4: + case ElementType.R8: + case ElementType.String: + case ElementType.TypedByRef: + case ElementType.I: + case ElementType.U: + case ElementType.R: + case ElementType.Object: + case ElementType.Internal: + case ElementType.Sentinel: + default: + break; + } + } + + void Hash(MethodDef md) { + if (md == null) + return; + + var attrMask1 = MethodImplAttributes.CodeTypeMask | MethodImplAttributes.ManagedMask | + MethodImplAttributes.ForwardRef | MethodImplAttributes.PreserveSig | + MethodImplAttributes.InternalCall; + hasher.Hash((ushort)(md == null ? 0 : md.ImplAttributes & attrMask1)); + var attrMask2 = MethodAttributes.Static | MethodAttributes.Virtual | + MethodAttributes.HideBySig | MethodAttributes.VtableLayoutMask | + MethodAttributes.CheckAccessOnOverride | MethodAttributes.Abstract | + MethodAttributes.SpecialName | MethodAttributes.PinvokeImpl | + MethodAttributes.UnmanagedExport | MethodAttributes.RTSpecialName; + hasher.Hash((ushort)(md.Attributes & attrMask2)); + Hash(md.Signature); + hasher.Hash(md.ParamDefs.Count); + hasher.Hash(md.GenericParameters.Count); + hasher.Hash(md.HasImplMap ? 1 : 0); + + var id = GetId(md); + if (id != null) + hasher.Hash(id.Value); + } + + void Hash(MemberRef mr) { + if (mr == null) + return; + + Hash(mr.Class); + if (IsFromNonObfuscatedAssembly(mr.Class)) + Hash(mr.Name); + Hash(mr.Signature); + } + + void Hash(TypeDef td) { + if (td == null) + return; + + Hash(td.BaseType); + var attrMask = TypeAttributes.LayoutMask | TypeAttributes.ClassSemanticsMask | + TypeAttributes.Abstract | TypeAttributes.SpecialName | + TypeAttributes.Import | TypeAttributes.WindowsRuntime | + TypeAttributes.StringFormatMask | TypeAttributes.RTSpecialName; + hasher.Hash((uint)(td.Attributes & attrMask)); + hasher.Hash(td.GenericParameters.Count); + hasher.Hash(td.Interfaces.Count); + foreach (var iface in td.Interfaces) + Hash(iface.Interface); + var id = GetId(td); + if (id != null) + hasher.Hash(id.Value); + } + + void Hash(TypeRef tr) { + if (tr == null) + return; + + Hash(tr.ResolutionScope); + if (IsFromNonObfuscatedAssembly(tr)) { + Hash(tr.Namespace); + Hash(tr.Name); + } + } + + void Hash(TypeSpec ts) { + if (ts == null) + return; + + Hash(ts.TypeSig); + } + + void Hash(FieldSig sig) { + if (sig == null) + return; + + hasher.Hash((byte)sig.GetCallingConvention()); + Hash(sig.GetFieldType()); + } + + void Hash(MethodSig sig) { + if (sig == null) + return; + + hasher.Hash((byte)sig.GetCallingConvention()); + Hash(sig.GetRetType()); + foreach (var p in sig.GetParams()) + Hash(p); + hasher.Hash(sig.GetParamCount()); + if (sig.GetParamsAfterSentinel() != null) { + foreach (var p in sig.GetParamsAfterSentinel()) + Hash(p); + } + } + + void Hash(GenericInstMethodSig sig) { + if (sig == null) + return; + + hasher.Hash((byte)sig.GetCallingConvention()); + foreach (var ga in sig.GetGenericArguments()) + Hash(ga); + } + + void Hash(AssemblyRef asmRef) { + if (asmRef == null) + return; + + bool canWriteAsm = IsNonObfuscatedAssembly(asmRef); + hasher.Hash(canWriteAsm ? 1 : 0); + if (canWriteAsm) { + bool hasPk = !PublicKeyBase.IsNullOrEmpty2(asmRef.PublicKeyOrToken); + if (hasPk) + hasher.Hash(PublicKeyBase.ToPublicKeyToken(asmRef.PublicKeyOrToken).Data); + Hash(asmRef.Name); + Hash(asmRef.Culture); + } + } + + void Hash(string s) { + if (s != null) + hasher.Hash(Encoding.UTF8.GetBytes(s)); + } + + BlockElementHash GetHash(int val) { + hasher.Hash(val); + return (BlockElementHash)hasher.GetHash(); + } + + BlockElementHash GetHash(string s) { + Hash(s); + return (BlockElementHash)hasher.GetHash(); + } + + static bool IsFromNonObfuscatedAssembly(IMemberRefParent mrp) { + return IsFromNonObfuscatedAssembly(mrp as TypeRef); + } + + static bool IsFromNonObfuscatedAssembly(TypeRef tr) { + if (tr == null) + return false; + + for (int i = 0; i < 100; i++) { + var asmRef = tr.ResolutionScope as AssemblyRef; + if (asmRef != null) + return IsNonObfuscatedAssembly(asmRef); + + var tr2 = tr.ResolutionScope as TypeRef; + if (tr2 != null) { + tr = tr2; + continue; + } + + break; + } + + return false; + } + + static bool IsNonObfuscatedAssembly(IAssembly asm) { + if (asm == null) + return false; + + // The only external asm refs it uses... + if (asm.Name != "mscorlib" && asm.Name != "System") + return false; + + return true; + } + } +} diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCode.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCode.cs index bb1fdd85..10bc1beb 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCode.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCode.cs @@ -22,23 +22,15 @@ using System.Text; namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { class VmOpCode { - public List OpCodeHandlerInfos { get; private set; } + public List HandlerTypeCodes { get; private set; } - public VmOpCode(List opCodeHandlerInfos) { - this.OpCodeHandlerInfos = new List(opCodeHandlerInfos.Count); - this.OpCodeHandlerInfos.AddRange(opCodeHandlerInfos); + public VmOpCode(List opCodeHandlerInfos) { + this.HandlerTypeCodes = new List(opCodeHandlerInfos.Count); + this.HandlerTypeCodes.AddRange(opCodeHandlerInfos); } public override string ToString() { - if (OpCodeHandlerInfos.Count == 0) - return ""; - var sb = new StringBuilder(); - foreach (var handler in OpCodeHandlerInfos) { - if (sb.Length != 0) - sb.Append(", "); - sb.Append(handler.Name); - } - return sb.ToString(); + return OpCodeHandlerInfo.GetCompositeName(HandlerTypeCodes); } } } diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCodeHandlerDetector.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCodeHandlerDetector.cs index ea234c72..c5e56d55 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCodeHandlerDetector.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCodeHandlerDetector.cs @@ -81,7 +81,6 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { return; deobfuscator = new MyDeobfuscator(module); - var csvmInfo = new CsvmInfo(module); csvmInfo.Initialize(); var vmHandlerTypes = FindVmHandlerTypes(); @@ -90,9 +89,7 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { var composites = CreateCompositeOpCodeHandlers(csvmInfo, vmHandlerTypes); foreach (var handlerInfos in OpCodeHandlerInfos.HandlerInfos) { - var otherHandlers = CreateOtherHandlers(csvmInfo, handlerInfos); - - if (!DetectCompositeHandlers(composites, otherHandlers)) + if (!DetectCompositeHandlers(composites, handlerInfos)) continue; vmOpCodes = CreateVmOpCodes(composites); @@ -105,12 +102,12 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { static List CreateVmOpCodes(IList composites) { var list = new List(composites.Count); foreach (var composite in composites) - list.Add(new VmOpCode(composite.OpCodeHandlerInfos)); + list.Add(new VmOpCode(composite.TypeCodes)); return list; } - bool DetectCompositeHandlers(IEnumerable composites, List otherHandlers) { - var detector = new CompositeHandlerDetector(otherHandlers); + bool DetectCompositeHandlers(IEnumerable composites, IList handlerInfos) { + var detector = new CompositeHandlerDetector(handlerInfos); foreach (var composite in composites) { if (!detector.FindHandlers(composite)) return false; @@ -128,15 +125,18 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { List CreateCompositeOpCodeHandlers(CsvmInfo csvmInfo, List handlers) { var list = new List(handlers.Count); - foreach (var handler in handlers) { - var execHandler = new HandlerMethod(GetExecMethod(handler)); - list.Add(new CompositeOpCodeHandler(handler, execHandler)); - } + var sigCreator = CreateSigCreator(csvmInfo); + foreach (var handler in handlers) + list.Add(new CompositeOpCodeHandler(sigCreator.Create(GetExecMethod(handler)))); return list; } MethodDef GetExecMethod(TypeDef type) { + return GetExecMethod(deobfuscator, type); + } + + static MethodDef GetExecMethod(MyDeobfuscator deobfuscator, TypeDef type) { MethodDef readMethod, execMethod; GetReadAndExecMethods(type, out readMethod, out execMethod); deobfuscator.Deobfuscate(execMethod); @@ -144,8 +144,8 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { return execMethod; } - static MethodSigInfoCreator CreateMethodSigInfoCreator(CsvmInfo csvmInfo) { - var creator = new MethodSigInfoCreator(); + static SigCreator CreateSigCreator(CsvmInfo csvmInfo) { + var creator = new SigCreator(); creator.AddId(csvmInfo.LogicalOpShrUn, 1); creator.AddId(csvmInfo.LogicalOpShl, 2); @@ -183,9 +183,20 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { creator.AddId(csvmInfo.LocalsGet, 30); creator.AddId(csvmInfo.LocalsSet, 31); + AddTypeId(creator, csvmInfo.LogicalOpShrUn, 32); + AddTypeId(creator, csvmInfo.CompareLt, 33); + AddTypeId(creator, csvmInfo.ArithmeticSubOvfUn, 34); + AddTypeId(creator, csvmInfo.UnaryNot, 35); + AddTypeId(creator, csvmInfo.ArgsGet, 36); + return creator; } + static void AddTypeId(SigCreator creator, MethodDef method, int id) { + if (method != null) + creator.AddId(method.DeclaringType, id); + } + static void GetReadAndExecMethods(TypeDef handler, out MethodDef readMethod, out MethodDef execMethod) { readMethod = execMethod = null; foreach (var method in handler.Methods) { @@ -270,28 +281,5 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v2 { return list; } - - List CreateOtherHandlers(CsvmInfo csvmInfo, IList handlerInfos) { - var list = new List(NUM_HANDLERS); - - foreach (var type in GetVmHandlerTypes(csvmInfo.VmHandlerBaseType)) { - if (list.Count == NUM_HANDLERS) - break; - - var execHandler = new PrimitiveHandlerMethod(GetExecMethod(type)); - execHandler.Sig = CreateMethodSigInfoCreator(csvmInfo).Create(execHandler.Blocks); - - var finder = new MethodFinder(handlerInfos, execHandler); - var handler = finder.FindHandler(); - if (handler == null) - continue; - - list.Add(handler); - } - - list.Sort((a, b) => a.OpCodeHandlerInfo.Name.ToUpperInvariant().CompareTo(b.OpCodeHandlerInfo.Name.ToUpperInvariant())); - - return list; - } } } diff --git a/de4dot.mdecrypt/DynamicMethodsDecrypter.cs b/de4dot.mdecrypt/DynamicMethodsDecrypter.cs index 9d40208c..8e41c1b6 100644 --- a/de4dot.mdecrypt/DynamicMethodsDecrypter.cs +++ b/de4dot.mdecrypt/DynamicMethodsDecrypter.cs @@ -581,6 +581,23 @@ namespace de4dot.mdecrypt { return hModule; } + class PatchInfo { + public int RVA; + public byte[] Data; + public byte[] Orig; + + public PatchInfo(int rva, byte[] data, byte[] orig) { + this.RVA = rva; + this.Data = data; + this.Orig = orig; + } + } + static readonly PatchInfo[] patches = new PatchInfo[] { + new PatchInfo(0x000110A5, new byte[] { 0x33, 0xC0, 0xC2, 0x04, 0x00 }, new byte[] { 0xE9, 0x36, 0x3A, 0x00, 0x00 }), + new PatchInfo(0x000110AF, new byte[] { 0x33, 0xC0, 0xC2, 0x04, 0x00 }, new byte[] { 0xE9, 0x4C, 0x3C, 0x00, 0x00 }), + new PatchInfo(0x000110AA, new byte[] { 0x33, 0xC0, 0xC2, 0x04, 0x00 }, new byte[] { 0xE9, 0xF1, 0x3A, 0x00, 0x00 }), + }; + static unsafe bool PatchCM(IntPtr addr, IntPtr origValue, IntPtr newValue) { var baseAddr = GetModuleHandle(addr); IntPtr patchAddr; @@ -590,6 +607,45 @@ namespace de4dot.mdecrypt { return false; *(IntPtr*)patchAddr = newValue; + PatchRT(baseAddr); + return true; + } + + [HandleProcessCorruptedStateExceptions, SecurityCritical] // Req'd on .NET 4.0 + static unsafe bool PatchRT(IntPtr baseAddr) { + foreach (var info in patches) { + try { + var addr = new IntPtr(baseAddr.ToInt64() + info.RVA); + + var data = new byte[info.Orig.Length]; + Marshal.Copy(addr, data, 0, data.Length); + if (!Equals(data, info.Orig)) + continue; + + uint oldProtect; + if (!VirtualProtect(addr, info.Data.Length, PAGE_EXECUTE_READWRITE, out oldProtect)) + throw new ApplicationException("Could not enable write access"); + Marshal.Copy(info.Data, 0, addr, info.Data.Length); + VirtualProtect(addr, info.Data.Length, oldProtect, out oldProtect); + return true; + } + catch { + } + } + return false; + } + + static bool Equals(byte[] a, byte[] b) { + if (a == b) + return true; + if (a == null || b == null) + return false; + if (a.Length != b.Length) + return false; + for (int i = 0; i < a.Length; i++) { + if (a[i] != b[i]) + return false; + } return true; } From 52bf3d43ec06a1c9ef432c6d17da8a50ef2a826e Mon Sep 17 00:00:00 2001 From: de4dot Date: Sun, 24 Nov 2013 07:06:33 +0100 Subject: [PATCH 08/22] Update rename regex --- de4dot.code/deobfuscators/Eazfuscator_NET/Deobfuscator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/Deobfuscator.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/Deobfuscator.cs index f21fc072..09f34441 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/Deobfuscator.cs @@ -28,7 +28,7 @@ namespace de4dot.code.deobfuscators.Eazfuscator_NET { public class DeobfuscatorInfo : DeobfuscatorInfoBase { public const string THE_NAME = "Eazfuscator.NET"; public const string THE_TYPE = "ef"; - const string DEFAULT_REGEX = @"!^#=&!^dje_.+_ejd$&" + DeobfuscatorBase.DEFAULT_ASIAN_VALID_NAME_REGEX; + const string DEFAULT_REGEX = @"!^[a-zA-Z]$&!^#=&!^dje_.+_ejd$&" + DeobfuscatorBase.DEFAULT_ASIAN_VALID_NAME_REGEX; public DeobfuscatorInfo() : base(DEFAULT_REGEX) { } From a5da42093a430acbef3bbda6dd7ad79b0c40ef55 Mon Sep 17 00:00:00 2001 From: de4dot Date: Sun, 24 Nov 2013 07:07:05 +0100 Subject: [PATCH 09/22] Decrypt method is not always present --- .../Eazfuscator_NET/AssemblyResolver.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs index 023edce0..5569d247 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs @@ -186,7 +186,7 @@ namespace de4dot.code.deobfuscators.Eazfuscator_NET { return method; } - throw new ApplicationException("Could not find decrypt method"); + return null; } void UpdateDecrypterType() { @@ -228,10 +228,12 @@ namespace de4dot.code.deobfuscators.Eazfuscator_NET { if (!CreateAssemblyInfos()) throw new ApplicationException("Could not initialize assembly infos"); - simpleDeobfuscator.Deobfuscate(decryptMethod); - simpleDeobfuscator.DecryptStrings(decryptMethod, deob); - if (!CreateDecryptKey()) - throw new ApplicationException("Could not initialize decryption key"); + if (decryptMethod != null) { + simpleDeobfuscator.Deobfuscate(decryptMethod); + simpleDeobfuscator.DecryptStrings(decryptMethod, deob); + if (!CreateDecryptKey()) + throw new ApplicationException("Could not initialize decryption key"); + } } void FindOtherType() { @@ -274,6 +276,7 @@ namespace de4dot.code.deobfuscators.Eazfuscator_NET { return true; } + decryptKey = null; return false; } From 10cecfad3c94a64cb6abfc3cba1e96c7d5179257 Mon Sep 17 00:00:00 2001 From: de4dot Date: Sun, 24 Nov 2013 21:44:20 +0100 Subject: [PATCH 10/22] Hash the whole runtime file --- .../ILProtector/RuntimeFileInfo.cs | 90 +++++++++---------- 1 file changed, 40 insertions(+), 50 deletions(-) diff --git a/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs b/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs index b6333553..80bdac9a 100644 --- a/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs +++ b/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs @@ -24,9 +24,6 @@ using dnlib.DotNet; namespace de4dot.code.deobfuscators.ILProtector { class RuntimeFileInfo { - const uint HASH_FILE_OFFSET = 0x00040000; - const int HASH_SIZE = 0x1000; - public MethodDef ProtectMethod { get; private set; } public string PathName { get; private set; } public string Name { get; private set; } @@ -45,45 +42,45 @@ namespace de4dot.code.deobfuscators.ILProtector { } static readonly VersionInfo[] versionInfo32 = new VersionInfo[] { - new VersionInfo(new Version(1, 0, 7, 0), new byte[] { 0x94, 0x79, 0x6E, 0xC1, 0x1F, 0x6D, 0xE9, 0xE3, 0x2F, 0x5E, 0xA3, 0x57, 0x71, 0x02, 0x22, 0x6A }), - new VersionInfo(new Version(1, 0, 7, 1), new byte[] { 0x8D, 0xCE, 0xAB, 0x0C, 0xA6, 0xA9, 0x4A, 0xA2, 0xCE, 0x43, 0xDE, 0x38, 0xEA, 0xDE, 0x0D, 0x3A }), - new VersionInfo(new Version(1, 0, 8, 0), new byte[] { 0x44, 0x09, 0x33, 0xCE, 0x90, 0x43, 0xF9, 0xC2, 0x2F, 0x11, 0x40, 0x1D, 0x18, 0xDA, 0x63, 0x3B }), - new VersionInfo(new Version(2, 0, 0, 0), new byte[] { 0xFD, 0x1D, 0x2B, 0x73, 0x2F, 0xD8, 0x27, 0x5F, 0xA3, 0x83, 0x76, 0x36, 0x29, 0x8E, 0x51, 0xA9 }), - new VersionInfo(new Version(2, 0, 1, 0), new byte[] { 0x0D, 0x5E, 0xC2, 0xA5, 0x0D, 0x7C, 0xE1, 0x8B, 0x57, 0x9F, 0xC8, 0x16, 0x25, 0x95, 0x70, 0xEB }), - new VersionInfo(new Version(2, 0, 2, 0), new byte[] { 0x9C, 0xED, 0x53, 0x3A, 0x97, 0x4B, 0x9E, 0xC7, 0xF4, 0x82, 0xE9, 0x84, 0xB4, 0x9A, 0xEB, 0xA6 }), - new VersionInfo(new Version(2, 0, 3, 0), new byte[] { 0x0C, 0xDD, 0xCF, 0x04, 0x20, 0x6E, 0x7A, 0x48, 0x26, 0x8B, 0x97, 0x8E, 0x58, 0x17, 0x9B, 0x51 }), - new VersionInfo(new Version(2, 0, 4, 0), new byte[] { 0x1D, 0x41, 0xE7, 0x6D, 0x17, 0xED, 0x51, 0x37, 0xA0, 0xFC, 0x98, 0x5F, 0x19, 0x97, 0xEF, 0x9D }), - new VersionInfo(new Version(2, 0, 5, 0), new byte[] { 0x60, 0xD8, 0x1D, 0x1C, 0x0C, 0xBF, 0x46, 0x82, 0x9C, 0xE3, 0x73, 0x8D, 0x88, 0x2E, 0x0E, 0xBA }), - new VersionInfo(new Version(2, 0, 6, 0), new byte[] { 0x85, 0x89, 0x66, 0x39, 0xC3, 0x04, 0x3D, 0x3F, 0xFD, 0xBC, 0xFA, 0x70, 0x1D, 0x04, 0x59, 0x89 }), - new VersionInfo(new Version(2, 0, 7, 0), new byte[] { 0x16, 0x5C, 0xE1, 0xA4, 0x30, 0xF7, 0x55, 0x26, 0x45, 0xB8, 0x43, 0x99, 0x2A, 0xC9, 0x6F, 0xD9 }), - new VersionInfo(new Version(2, 0, 7, 5), new byte[] { 0x11, 0x50, 0x25, 0x2C, 0x26, 0x03, 0x8B, 0xDA, 0xBC, 0x98, 0x7E, 0x81, 0x97, 0x3E, 0xCE, 0x31 }), - new VersionInfo(new Version(2, 0, 7, 6), new byte[] { 0x6F, 0x9C, 0xF2, 0xDB, 0x83, 0x76, 0x92, 0x6A, 0xC4, 0xAA, 0xAE, 0xFA, 0x3D, 0xB3, 0x69, 0x59 }), - new VersionInfo(new Version(2, 0, 8, 0), new byte[] { 0x96, 0x84, 0xA0, 0x32, 0x3A, 0xB5, 0xAD, 0x89, 0xD7, 0xCD, 0x69, 0x34, 0xF1, 0x5D, 0xF3, 0x3A }), - new VersionInfo(new Version(2, 0, 8, 5), new byte[] { 0xB8, 0xCF, 0xEA, 0xBA, 0xB6, 0xAD, 0xE5, 0xCC, 0xFB, 0xA4, 0xE4, 0xFE, 0x1A, 0x83, 0xE5, 0x85 }), - new VersionInfo(new Version(2, 0, 9, 0), new byte[] { 0xA4, 0x68, 0x70, 0xA2, 0x1E, 0xBB, 0x99, 0xAB, 0xDD, 0x8C, 0xCA, 0x55, 0x32, 0x12, 0x95, 0xB5 }), - new VersionInfo(new Version(2, 0, 10, 0), new byte[] { 0xC5, 0xDC, 0x27, 0x22, 0x8F, 0x09, 0xFB, 0x56, 0x84, 0x6E, 0x07, 0x62, 0x4E, 0xBF, 0x71, 0xA6 }), - new VersionInfo(new Version(2, 0, 11, 0), new byte[] { 0x57, 0xAD, 0xBC, 0xB0, 0x7F, 0x80, 0xEF, 0xEA, 0xC3, 0xB7, 0x9F, 0x27, 0x87, 0x0A, 0x4B, 0xFF }), + new VersionInfo(new Version(1, 0, 7, 0), new byte[] { 0x1B, 0x7A, 0x48, 0x9E, 0x70, 0x69, 0x3C, 0x51, 0xDB, 0x3E, 0xD8, 0x09, 0x71, 0x1F, 0x16, 0x33 }), + new VersionInfo(new Version(1, 0, 7, 1), new byte[] { 0xD2, 0x76, 0x37, 0xA2, 0xE4, 0xCC, 0x66, 0xAB, 0x6A, 0x72, 0x45, 0x25, 0x06, 0x64, 0x05, 0xD7 }), + new VersionInfo(new Version(1, 0, 8, 0), new byte[] { 0x0B, 0x3D, 0xFD, 0xB3, 0x8B, 0xCF, 0x59, 0x42, 0x9C, 0x4C, 0x2B, 0x43, 0xA4, 0x22, 0x91, 0xB0 }), + new VersionInfo(new Version(2, 0, 0, 0), new byte[] { 0xC5, 0x8A, 0x92, 0x92, 0xBD, 0xA4, 0x6D, 0xF2, 0xEA, 0xF8, 0x4F, 0x79, 0x89, 0xF2, 0x44, 0x38 }), + new VersionInfo(new Version(2, 0, 1, 0), new byte[] { 0xFD, 0x79, 0x53, 0x6C, 0xDA, 0x10, 0x3F, 0x29, 0xBF, 0x52, 0x4B, 0x70, 0xB2, 0xFF, 0x55, 0x25 }), + new VersionInfo(new Version(2, 0, 2, 0), new byte[] { 0xED, 0xC2, 0xB2, 0x07, 0x1F, 0x1A, 0xF0, 0x4D, 0x9B, 0x37, 0x6F, 0x10, 0x7A, 0xDA, 0xA2, 0xED }), + new VersionInfo(new Version(2, 0, 3, 0), new byte[] { 0xF3, 0xD8, 0x48, 0x69, 0x2B, 0x39, 0x99, 0x48, 0xB7, 0x8D, 0x0D, 0x72, 0xC5, 0xE4, 0xF5, 0x6D }), + new VersionInfo(new Version(2, 0, 4, 0), new byte[] { 0xBC, 0x39, 0x58, 0x38, 0x5C, 0x2F, 0x5A, 0x50, 0xCF, 0xF7, 0x47, 0xC7, 0xEC, 0x52, 0xC6, 0xD0 }), + new VersionInfo(new Version(2, 0, 5, 0), new byte[] { 0x90, 0x42, 0x0F, 0xB5, 0x84, 0x09, 0x90, 0xE5, 0xD8, 0x10, 0xF1, 0xAF, 0xF5, 0xBC, 0xA5, 0xF8 }), + new VersionInfo(new Version(2, 0, 6, 0), new byte[] { 0xD1, 0x8D, 0x0C, 0x3C, 0x51, 0xBD, 0x36, 0x37, 0x17, 0xAB, 0xEC, 0x92, 0x19, 0x1B, 0xB0, 0xD6 }), + new VersionInfo(new Version(2, 0, 7, 0), new byte[] { 0x02, 0xD1, 0x75, 0x77, 0x12, 0x6D, 0x4E, 0x86, 0x90, 0x34, 0x6A, 0xBB, 0x56, 0x0E, 0x6A, 0xEA }), + new VersionInfo(new Version(2, 0, 7, 5), new byte[] { 0x7D, 0x5C, 0xBE, 0x21, 0x0B, 0xA9, 0x15, 0xFF, 0xE6, 0xC9, 0xD5, 0xFD, 0x7C, 0xA0, 0xAA, 0xC1 }), + new VersionInfo(new Version(2, 0, 7, 6), new byte[] { 0x0D, 0x03, 0xB7, 0x1A, 0x74, 0x8E, 0x6B, 0x94, 0x2B, 0xD4, 0x33, 0x24, 0x49, 0xF8, 0x38, 0xD2 }), + new VersionInfo(new Version(2, 0, 8, 0), new byte[] { 0xE6, 0xD6, 0x07, 0x89, 0x03, 0xA8, 0xE3, 0xD7, 0x86, 0x5A, 0x3D, 0xC2, 0x86, 0xF5, 0x0F, 0x67 }), + new VersionInfo(new Version(2, 0, 8, 5), new byte[] { 0xFC, 0x79, 0x83, 0x61, 0xD2, 0x99, 0x8E, 0xE8, 0x2C, 0x5F, 0x14, 0xBA, 0xCB, 0xB9, 0x28, 0xF2 }), + new VersionInfo(new Version(2, 0, 9, 0), new byte[] { 0x7A, 0x88, 0xD8, 0xC3, 0xB8, 0x77, 0xAA, 0x13, 0xC0, 0x6C, 0x43, 0x88, 0x0D, 0x66, 0xFE, 0x7A }), + new VersionInfo(new Version(2, 0, 10, 0), new byte[] { 0xE5, 0x8E, 0xEB, 0x26, 0x1A, 0x1C, 0x44, 0xA8, 0xFF, 0x88, 0x14, 0xE7, 0x38, 0x13, 0xE5, 0x6D }), + new VersionInfo(new Version(2, 0, 11, 0), new byte[] { 0x67, 0xB8, 0xF7, 0x15, 0x70, 0x1D, 0xF2, 0x57, 0x00, 0x42, 0xF3, 0xA4, 0x83, 0x07, 0x62, 0xA3 }), }; static readonly VersionInfo[] versionInfo64 = new VersionInfo[] { // No sig for 1.0.7.0 x64 since I don't have it yet. - new VersionInfo(new Version(1, 0, 7, 1), new byte[] { 0x68, 0x4C, 0xC0, 0xC2, 0x55, 0x75, 0x72, 0x09, 0x12, 0x10, 0xA4, 0xF3, 0xFE, 0x95, 0x4D, 0x7A }), - new VersionInfo(new Version(1, 0, 8, 0), new byte[] { 0x99, 0xAF, 0x3D, 0x39, 0x16, 0xC2, 0xD6, 0x10, 0x6E, 0x09, 0x64, 0xDE, 0xA4, 0xB3, 0x30, 0xE5 }), - new VersionInfo(new Version(2, 0, 0, 0), new byte[] { 0x02, 0x90, 0xDA, 0xBD, 0x37, 0xEE, 0x20, 0x86, 0xA7, 0x30, 0x31, 0x6D, 0x92, 0xEF, 0xB3, 0x01 }), - new VersionInfo(new Version(2, 0, 1, 0), new byte[] { 0xE8, 0xE7, 0x11, 0x6B, 0x52, 0x60, 0x5A, 0x4D, 0x5A, 0xC6, 0x76, 0xF5, 0xD3, 0x64, 0xB1, 0x03 }), - new VersionInfo(new Version(2, 0, 2, 0), new byte[] { 0xD3, 0x37, 0xA1, 0x69, 0xF4, 0x25, 0x86, 0x19, 0xC6, 0x89, 0x70, 0x82, 0x9A, 0x3E, 0xCC, 0x04 }), - new VersionInfo(new Version(2, 0, 3, 0), new byte[] { 0xB1, 0xF8, 0xCB, 0xFD, 0x2D, 0x47, 0x36, 0xF1, 0x8A, 0x1D, 0xEF, 0xA7, 0x07, 0x0C, 0xD9, 0x74 }), - new VersionInfo(new Version(2, 0, 4, 0), new byte[] { 0x53, 0xC7, 0xA8, 0x3F, 0xD8, 0x9D, 0xA1, 0x85, 0x04, 0x50, 0x1D, 0x19, 0xF4, 0x1F, 0xF4, 0x44 }), - new VersionInfo(new Version(2, 0, 5, 0), new byte[] { 0x32, 0x82, 0x4B, 0xC7, 0xBB, 0x32, 0xBF, 0x9F, 0xB7, 0x9B, 0x06, 0x90, 0x7B, 0xB0, 0x7B, 0x7C }), - new VersionInfo(new Version(2, 0, 6, 0), new byte[] { 0x4F, 0x02, 0x86, 0xA6, 0xCA, 0xFD, 0xC1, 0x47, 0xA1, 0xDB, 0x2F, 0x73, 0x94, 0x38, 0x2B, 0xA7 }), - new VersionInfo(new Version(2, 0, 7, 0), new byte[] { 0x43, 0xA4, 0xC1, 0xA8, 0xC7, 0x36, 0x55, 0xEB, 0x3F, 0xFF, 0xA0, 0xB3, 0x85, 0x00, 0x21, 0x99 }), - new VersionInfo(new Version(2, 0, 7, 5), new byte[] { 0x6A, 0xA8, 0x2B, 0x28, 0x0B, 0xEE, 0x4C, 0xF0, 0x57, 0x3F, 0x43, 0xD4, 0xFB, 0xBC, 0x5E, 0x8C }), - new VersionInfo(new Version(2, 0, 7, 6), new byte[] { 0xE5, 0xD7, 0x81, 0xBD, 0x85, 0x02, 0x10, 0xAC, 0x92, 0x4A, 0xF0, 0x35, 0xD2, 0x4C, 0x50, 0xA5 }), - new VersionInfo(new Version(2, 0, 8, 0), new byte[] { 0x14, 0x44, 0xD1, 0x34, 0x69, 0x4D, 0xC7, 0xB7, 0x4D, 0x91, 0x0E, 0x6C, 0x4C, 0x9B, 0x46, 0x8E }), - new VersionInfo(new Version(2, 0, 8, 5), new byte[] { 0x5C, 0xEE, 0x47, 0x36, 0x2B, 0x10, 0xAD, 0x5F, 0x66, 0x6D, 0x3F, 0xD4, 0xF4, 0x4A, 0xFF, 0xA1 }), - new VersionInfo(new Version(2, 0, 9, 0), new byte[] { 0x2B, 0x80, 0x93, 0x78, 0x22, 0x29, 0x8C, 0xA1, 0xED, 0xE4, 0x59, 0x1A, 0xEC, 0x5B, 0xAF, 0xA7 }), - new VersionInfo(new Version(2, 0, 10, 0), new byte[] { 0xE3, 0x56, 0xB4, 0x98, 0x38, 0x27, 0x29, 0x27, 0x56, 0x87, 0x88, 0xAD, 0xA3, 0x50, 0x61, 0x24 }), - new VersionInfo(new Version(2, 0, 11, 0), new byte[] { 0x08, 0xDD, 0x40, 0x28, 0x08, 0x61, 0xDA, 0xD3, 0xD1, 0x38, 0x2F, 0x8A, 0xE0, 0x21, 0x0E, 0xE9 }), + new VersionInfo(new Version(1, 0, 7, 1), new byte[] { 0x8E, 0xB4, 0x61, 0x12, 0xDF, 0x76, 0x6F, 0xAB, 0xF0, 0x2C, 0x7A, 0x3A, 0x0D, 0x71, 0xE8, 0xB0 }), + new VersionInfo(new Version(1, 0, 8, 0), new byte[] { 0x04, 0xB1, 0xDA, 0x92, 0xE7, 0x59, 0x54, 0x82, 0x0F, 0x46, 0xD6, 0x08, 0xA2, 0x69, 0xB7, 0x75 }), + new VersionInfo(new Version(2, 0, 0, 0), new byte[] { 0xC7, 0xD9, 0x62, 0x7E, 0xEC, 0x6D, 0x10, 0x8A, 0xBF, 0x71, 0x7A, 0x4C, 0xC0, 0x3E, 0xAE, 0x9E }), + new VersionInfo(new Version(2, 0, 1, 0), new byte[] { 0xD3, 0xCF, 0x89, 0x80, 0xFD, 0xB7, 0x38, 0xC2, 0x3C, 0xDF, 0x4E, 0x9D, 0xCE, 0xDD, 0x95, 0xDE }), + new VersionInfo(new Version(2, 0, 2, 0), new byte[] { 0x44, 0xB7, 0xBA, 0xF9, 0x0A, 0x5B, 0xD6, 0xE7, 0xBE, 0x7A, 0x47, 0x82, 0x3B, 0x24, 0xB3, 0x73 }), + new VersionInfo(new Version(2, 0, 3, 0), new byte[] { 0x8D, 0x25, 0x16, 0x40, 0xB6, 0xCF, 0x54, 0xF8, 0x78, 0xBE, 0x3A, 0xE5, 0x3D, 0x5E, 0xF9, 0x60 }), + new VersionInfo(new Version(2, 0, 4, 0), new byte[] { 0x7F, 0x49, 0xEA, 0x93, 0x8E, 0x81, 0xFC, 0xF5, 0x56, 0x94, 0x73, 0xA8, 0x52, 0x61, 0x79, 0x60 }), + new VersionInfo(new Version(2, 0, 5, 0), new byte[] { 0x08, 0xDB, 0xA2, 0x8E, 0xD7, 0x27, 0xBB, 0xD0, 0x69, 0xF5, 0x63, 0x28, 0x46, 0xBF, 0xBB, 0xB3 }), + new VersionInfo(new Version(2, 0, 6, 0), new byte[] { 0x09, 0xFC, 0x92, 0x18, 0xC8, 0x34, 0xD6, 0x55, 0xE3, 0x7C, 0xA5, 0xCB, 0x15, 0x28, 0x59, 0x94 }), + new VersionInfo(new Version(2, 0, 7, 0), new byte[] { 0x7B, 0x36, 0x68, 0xA0, 0x9E, 0xCB, 0xB9, 0x73, 0x5B, 0x1A, 0xAC, 0x50, 0x7E, 0x59, 0x1C, 0xB7 }), + new VersionInfo(new Version(2, 0, 7, 5), new byte[] { 0x14, 0x13, 0x30, 0x60, 0x1A, 0xB0, 0x6F, 0x37, 0x82, 0xE3, 0x67, 0x16, 0x6C, 0x62, 0x30, 0x16 }), + new VersionInfo(new Version(2, 0, 7, 6), new byte[] { 0x98, 0xDE, 0x41, 0x4B, 0x15, 0x2C, 0xF7, 0x34, 0x2A, 0xEF, 0xE3, 0x91, 0x07, 0x7F, 0x0F, 0xE7 }), + new VersionInfo(new Version(2, 0, 8, 0), new byte[] { 0x21, 0x40, 0xED, 0xC6, 0xA2, 0x13, 0x3D, 0xCA, 0x22, 0x11, 0x02, 0x75, 0xFC, 0xE6, 0x3A, 0x51 }), + new VersionInfo(new Version(2, 0, 8, 5), new byte[] { 0xF5, 0x67, 0xC1, 0x44, 0xF6, 0x2F, 0xBA, 0x01, 0xA3, 0x01, 0x91, 0x60, 0xDF, 0x99, 0xAB, 0x0C }), + new VersionInfo(new Version(2, 0, 9, 0), new byte[] { 0x04, 0x17, 0xF3, 0xEA, 0x97, 0x24, 0x48, 0xC0, 0x01, 0x2E, 0x45, 0x80, 0x9D, 0x5B, 0x7C, 0xDF }), + new VersionInfo(new Version(2, 0, 10, 0), new byte[] { 0xD8, 0x79, 0x05, 0xC9, 0x2D, 0xA6, 0x5B, 0x7D, 0xEE, 0xA6, 0x13, 0x25, 0x7D, 0x29, 0x73, 0xB4 }), + new VersionInfo(new Version(2, 0, 11, 0), new byte[] { 0x49, 0xAD, 0x40, 0x10, 0xD4, 0x03, 0x04, 0xB4, 0x3C, 0xD2, 0x36, 0x67, 0x38, 0x62, 0x9C, 0xE8 }), }; public RuntimeFileInfo(MethodDef protectMethod) { @@ -125,19 +122,12 @@ namespace de4dot.code.deobfuscators.ILProtector { static byte[] GetHash(string fullPath) { try { - using (var reader = new BinaryReader(new FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.Read))) { - reader.BaseStream.Position = HASH_FILE_OFFSET; - var bytes = reader.ReadBytes(HASH_SIZE); - if (bytes.Length != HASH_SIZE) - return null; - - using (var hasher = MD5.Create()) { - using (var outStream = new NullStream()) { - using (var csStream = new CryptoStream(outStream, hasher, CryptoStreamMode.Write)) - new BinaryWriter(csStream).Write(bytes); - } - return hasher.Hash; + using (var hasher = MD5.Create()) { + using (var outStream = new NullStream()) { + using (var csStream = new CryptoStream(outStream, hasher, CryptoStreamMode.Write)) + new BinaryWriter(csStream).Write(File.ReadAllBytes(fullPath)); } + return hasher.Hash; } } catch { From 1444e4633bde12e2ea79636421f7d91bb8208f63 Mon Sep 17 00:00:00 2001 From: de4dot Date: Sun, 24 Nov 2013 21:44:41 +0100 Subject: [PATCH 11/22] Support ILProtector 2.0.11.1 --- .../deobfuscators/ILProtector/DynamicMethodsDecrypter.cs | 2 ++ de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs index 740d2c3c..47975d08 100644 --- a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs @@ -82,6 +82,7 @@ namespace de4dot.code.deobfuscators.ILProtector { { new Version(2, 0, 9, 0), new PatchInfo(0x00023360, new PatchData(0x000056F2, nops6)) }, { new Version(2, 0, 10, 0), new PatchInfo(0x00023B30, new PatchData(0x00005B12, nops6)) }, { new Version(2, 0, 11, 0), new PatchInfo(0x000207C0, new PatchData(0x00018432, nops6)) }, + { new Version(2, 0, 11, 1), new PatchInfo(0x000207C0, new PatchData(0x00018432, nops6)) }, }; static readonly Dictionary patchInfos64 = new Dictionary { { new Version(2, 0, 8, 0), new PatchInfo(0x00026090, new PatchData(0x00005E0C, nops6)) }, @@ -89,6 +90,7 @@ namespace de4dot.code.deobfuscators.ILProtector { { new Version(2, 0, 9, 0), new PatchInfo(0x00028B00, new PatchData(0x00005F70, nops6)) }, { new Version(2, 0, 10, 0), new PatchInfo(0x00029630, new PatchData(0x00006510, nops6)) }, { new Version(2, 0, 11, 0), new PatchInfo(0x000257C0, new PatchData(0x0001C9A0, nops6)) }, + { new Version(2, 0, 11, 1), new PatchInfo(0x000257C0, new PatchData(0x0001C9A0, nops6)) }, }; [DllImport("kernel32")] diff --git a/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs b/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs index 80bdac9a..34d5e7fb 100644 --- a/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs +++ b/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs @@ -60,6 +60,7 @@ namespace de4dot.code.deobfuscators.ILProtector { new VersionInfo(new Version(2, 0, 9, 0), new byte[] { 0x7A, 0x88, 0xD8, 0xC3, 0xB8, 0x77, 0xAA, 0x13, 0xC0, 0x6C, 0x43, 0x88, 0x0D, 0x66, 0xFE, 0x7A }), new VersionInfo(new Version(2, 0, 10, 0), new byte[] { 0xE5, 0x8E, 0xEB, 0x26, 0x1A, 0x1C, 0x44, 0xA8, 0xFF, 0x88, 0x14, 0xE7, 0x38, 0x13, 0xE5, 0x6D }), new VersionInfo(new Version(2, 0, 11, 0), new byte[] { 0x67, 0xB8, 0xF7, 0x15, 0x70, 0x1D, 0xF2, 0x57, 0x00, 0x42, 0xF3, 0xA4, 0x83, 0x07, 0x62, 0xA3 }), + new VersionInfo(new Version(2, 0, 11, 1), new byte[] { 0x2E, 0xC9, 0x53, 0xA0, 0x3C, 0x9B, 0x08, 0xDA, 0x88, 0x84, 0x37, 0xFC, 0x07, 0xAE, 0x8B, 0xEC }), }; static readonly VersionInfo[] versionInfo64 = new VersionInfo[] { @@ -81,6 +82,7 @@ namespace de4dot.code.deobfuscators.ILProtector { new VersionInfo(new Version(2, 0, 9, 0), new byte[] { 0x04, 0x17, 0xF3, 0xEA, 0x97, 0x24, 0x48, 0xC0, 0x01, 0x2E, 0x45, 0x80, 0x9D, 0x5B, 0x7C, 0xDF }), new VersionInfo(new Version(2, 0, 10, 0), new byte[] { 0xD8, 0x79, 0x05, 0xC9, 0x2D, 0xA6, 0x5B, 0x7D, 0xEE, 0xA6, 0x13, 0x25, 0x7D, 0x29, 0x73, 0xB4 }), new VersionInfo(new Version(2, 0, 11, 0), new byte[] { 0x49, 0xAD, 0x40, 0x10, 0xD4, 0x03, 0x04, 0xB4, 0x3C, 0xD2, 0x36, 0x67, 0x38, 0x62, 0x9C, 0xE8 }), + new VersionInfo(new Version(2, 0, 11, 1), new byte[] { 0x1D, 0x6C, 0xB6, 0xC8, 0xB3, 0x07, 0x53, 0x24, 0x6F, 0xC0, 0xF3, 0x4F, 0x5E, 0x8B, 0x9F, 0xD1 }), }; public RuntimeFileInfo(MethodDef protectMethod) { From ec7bed040b104436bc63e2b71dbb8fb52356af08 Mon Sep 17 00:00:00 2001 From: de4dot Date: Mon, 25 Nov 2013 05:16:12 +0100 Subject: [PATCH 12/22] Also check for .xaml extension --- de4dot.code/renamer/Renamer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/de4dot.code/renamer/Renamer.cs b/de4dot.code/renamer/Renamer.cs index fe3b0133..6737c748 100644 --- a/de4dot.code/renamer/Renamer.cs +++ b/de4dot.code/renamer/Renamer.cs @@ -222,7 +222,7 @@ namespace de4dot.code.renamer { rsrc.Data.Position = 0; var rsrcSet = ResourceReader.Read(module, rsrc.Data); foreach (var elem in rsrcSet.ResourceElements) { - if (elem.Name.EndsWith(".baml")) + if (elem.Name.EndsWith(".baml") || elem.Name.EndsWith(".xaml")) return true; } } From bfcffdd51f1c75a662956c01442f869bd363a56e Mon Sep 17 00:00:00 2001 From: de4dot Date: Mon, 25 Nov 2013 05:45:34 +0100 Subject: [PATCH 13/22] Fix restoring resource names --- .../deobfuscators/Spices_Net/Deobfuscator.cs | 2 +- .../Spices_Net/ResourceNamesRestorer.cs | 68 ++++++++++++++++--- 2 files changed, 59 insertions(+), 11 deletions(-) diff --git a/de4dot.code/deobfuscators/Spices_Net/Deobfuscator.cs b/de4dot.code/deobfuscators/Spices_Net/Deobfuscator.cs index 715bd614..d0a5f569 100644 --- a/de4dot.code/deobfuscators/Spices_Net/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Spices_Net/Deobfuscator.cs @@ -159,7 +159,6 @@ namespace de4dot.code.deobfuscators.Spices_Net { if (options.RestoreResourceNames) { resourceNamesRestorer = new ResourceNamesRestorer(module); resourceNamesRestorer.Find(); - resourceNamesRestorer.RenameResources(); } stringDecrypter.Initialize(); @@ -184,6 +183,7 @@ namespace de4dot.code.deobfuscators.Spices_Net { RemoveInlinedMethods(); if (options.RestoreResourceNames) { + resourceNamesRestorer.RenameResources(); AddTypeToBeRemoved(resourceNamesRestorer.ResourceManagerType, "Obfuscator ResourceManager type"); AddTypeToBeRemoved(resourceNamesRestorer.ComponentResourceManagerType, "Obfuscator ComponentResourceManager type"); } diff --git a/de4dot.code/deobfuscators/Spices_Net/ResourceNamesRestorer.cs b/de4dot.code/deobfuscators/Spices_Net/ResourceNamesRestorer.cs index 00121522..9457254d 100644 --- a/de4dot.code/deobfuscators/Spices_Net/ResourceNamesRestorer.cs +++ b/de4dot.code/deobfuscators/Spices_Net/ResourceNamesRestorer.cs @@ -29,6 +29,7 @@ namespace de4dot.code.deobfuscators.Spices_Net { TypeDef componentResourceManagerType; MethodDefAndDeclaringTypeDict resourceManagerCtors = new MethodDefAndDeclaringTypeDict(); MethodDefAndDeclaringTypeDict componentManagerCtors = new MethodDefAndDeclaringTypeDict(); + Dictionary callsResourceManager = new Dictionary(); public TypeDef ResourceManagerType { get { return resourceManagerType; } @@ -101,23 +102,68 @@ namespace de4dot.code.deobfuscators.Spices_Net { numToResource[extNum] = resource; } - foreach (var type in module.GetTypes()) { - Rename(numToResource, "", type.FullName); - Rename(numToResource, "", type.FullName + ".g"); - Rename(numToResource, type.Namespace.String, type.Name.String); - Rename(numToResource, type.Namespace.String, type.Name.String + ".g"); + if (module.Assembly != null) + Rename(numToResource, "", module.Assembly.Name + ".g"); + + foreach (var type in callsResourceManager.Keys) + Rename(numToResource, type); + + if (numToResource.Count != 0) { + foreach (var type in module.GetTypes()) { + if (numToResource.Count == 0) + break; + if (!IsWinFormType(type)) + continue; + Rename(numToResource, type); + } } - if (module.Assembly != null) - Rename(numToResource, "", module.Assembly.Name.String + ".g"); + if (numToResource.Count != 0) { + foreach (var type in module.GetTypes()) { + if (numToResource.Count == 0) + break; + Rename(numToResource, type); + } + } + + if (numToResource.Count != 0) + Logger.e("Couldn't restore all renamed resource names"); } - static void Rename(Dictionary numToResource, string ns, string name) { + static bool IsWinFormType(TypeDef type) { + for (int i = 0; i < 100; i++) { + var baseType = type.BaseType; + if (baseType == null) + break; + if (baseType.FullName == "System.Object" || + baseType.FullName == "System.ValueType") + return false; + // Speed up common cases + if (baseType.FullName == "System.Windows.Forms.Control" || + baseType.FullName == "System.Windows.Forms.Form" || + baseType.FullName == "System.Windows.Forms.UserControl") + return true; + var resolvedBaseType = baseType.ResolveTypeDef(); + if (resolvedBaseType == null) + break; + type = resolvedBaseType; + } + return false; + } + + static bool Rename(Dictionary numToResource, TypeDef type) { + return Rename(numToResource, "", type.FullName) || + Rename(numToResource, "", type.FullName + ".g") || + Rename(numToResource, type.Namespace, type.Name) || + Rename(numToResource, type.Namespace, type.Name + ".g"); + } + + static bool Rename(Dictionary numToResource, string ns, string name) { var resourceName = name + ".resources"; uint hash = GetResourceHash(resourceName); Resource resource; if (!numToResource.TryGetValue(hash, out resource)) - return; + return false; int index = resource.Name.String.LastIndexOf('.'); string resourceNamespace, newName; @@ -130,13 +176,14 @@ namespace de4dot.code.deobfuscators.Spices_Net { newName = resourceNamespace + "." + resourceName; } if (resourceNamespace != ns) - return; + return false; Logger.v("Restoring resource name: '{0}' => '{1}'", Utils.RemoveNewlines(resource.Name), Utils.RemoveNewlines(newName)); resource.Name = newName; numToResource.Remove(hash); + return true; } static uint GetResourceHash(string name) { @@ -169,6 +216,7 @@ namespace de4dot.code.deobfuscators.Spices_Net { if (newCtor == null) continue; instr.Operand = newCtor; + callsResourceManager[blocks.Method.DeclaringType] = true; } } } From b299257c26e9ff5cb1de483a16e6c33a84bc0a72 Mon Sep 17 00:00:00 2001 From: de4dot Date: Wed, 4 Dec 2013 15:37:02 +0100 Subject: [PATCH 14/22] Support latest CryptoObfuscator --- de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs | 4 +++- de4dot.code/deobfuscators/CryptoObfuscator/ProxyCallFixer.cs | 2 +- .../deobfuscators/CryptoObfuscator/ResourceDecrypter.cs | 2 +- de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs | 2 +- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs b/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs index 5480bba8..b611aac3 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs @@ -68,7 +68,9 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator { !ContainsString(method, "Debugger was detected") && !ContainsString(method, "{0} was detected") && !ContainsString(method, "run under") && - !ContainsString(method, "run with")) + !ContainsString(method, "run with") && + !ContainsString(method, "started under") && + !ContainsString(method, "{0} detected")) continue; antiDebuggerType = type; diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ProxyCallFixer.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ProxyCallFixer.cs index 26bd02a8..320b1f26 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/ProxyCallFixer.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/ProxyCallFixer.cs @@ -110,7 +110,7 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator { MethodDef GetProxyCreateMethod(TypeDef type) { if (DotNetUtils.FindFieldType(type, "System.ModuleHandle", true) == null) return null; - if (type.Fields.Count < 1 || type.Fields.Count > 16) + if (type.Fields.Count < 1 || type.Fields.Count > 18) return null; MethodDef createMethod = null; diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs index d78cbac3..314ba0b8 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs @@ -268,7 +268,7 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator { if (!ldci4.IsLdcI4()) continue; int loopCount = ldci4.GetLdcI4Value(); - if (loopCount < 2 || loopCount > 3) + if (loopCount < 2 || loopCount > 4) continue; var blt = instrs[i + 1]; if (blt.OpCode.Code != Code.Blt && blt.OpCode.Code != Code.Blt_S && blt.OpCode.Code != Code.Clt) diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs b/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs index 79a5a6ff..22cc18e1 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs @@ -84,7 +84,7 @@ namespace de4dot.code.deobfuscators.CryptoObfuscator { if (!method.IsStatic || !DotNetUtils.IsMethod(method, "System.Void", "()")) return false; - if (type.Methods.Count < 3 || type.Methods.Count > 24) + if (type.Methods.Count < 3 || type.Methods.Count > 27) return false; if (DotNetUtils.GetPInvokeMethod(type, "mscoree", "StrongNameSignatureVerificationEx") != null) { } From c35e14ac0043ea1e793b2e1a24913a118e4b0c01 Mon Sep 17 00:00:00 2001 From: de4dot Date: Wed, 29 Jan 2014 03:35:35 +0100 Subject: [PATCH 15/22] Don't remove methods that exist in VTable fixups --- de4dot.code/deobfuscators/DeobfuscatorBase.cs | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/de4dot.code/deobfuscators/DeobfuscatorBase.cs b/de4dot.code/deobfuscators/DeobfuscatorBase.cs index 121c8479..cd9c5a29 100644 --- a/de4dot.code/deobfuscators/DeobfuscatorBase.cs +++ b/de4dot.code/deobfuscators/DeobfuscatorBase.cs @@ -54,6 +54,7 @@ namespace de4dot.code.deobfuscators { protected InitializedDataCreator initializedDataCreator; bool keepTypes; MetaDataFlags? mdFlags; + Dictionary objectsThatMustBeKept = new Dictionary(); protected byte[] ModuleBytes { get { return moduleBytes; } @@ -187,6 +188,8 @@ namespace de4dot.code.deobfuscators { module.EnableTypeDefFindCache = false; if (CanRemoveTypes) { + InitializeObjectsToKeepFromVTableFixups(); + RemoveTypesWithInvalidBaseTypes(); DeleteEmptyCctors(); @@ -204,6 +207,26 @@ namespace de4dot.code.deobfuscators { module.EnableTypeDefFindCache = cacheState; } + void InitializeObjectsToKeepFromVTableFixups() { + var fixups = module.VTableFixups; + if (fixups == null || fixups.VTables.Count == 0) + return; + + foreach (var vtable in fixups) { + if (vtable == null) + continue; + foreach (var method in vtable) { + if (method == null) + continue; + objectsThatMustBeKept[method] = true; + } + } + } + + bool MustKeepObject(object o) { + return o != null && objectsThatMustBeKept.ContainsKey(o); + } + static bool IsTypeWithInvalidBaseType(TypeDef moduleType, TypeDef type) { return type.BaseType == null && !type.IsInterface && type != moduleType; } @@ -233,7 +256,7 @@ namespace de4dot.code.deobfuscators { void RemoveTypesWithInvalidBaseTypes() { var moduleType = DotNetUtils.GetModuleType(module); foreach (var type in module.GetTypes()) { - if (!IsTypeWithInvalidBaseType(moduleType, type)) + if (!IsTypeWithInvalidBaseType(moduleType, type) || MustKeepObject(type)) continue; AddTypeToBeRemoved(type, "Invalid type with no base type (anti-reflection)"); } @@ -412,7 +435,7 @@ namespace de4dot.code.deobfuscators { var emptyCctorsToRemove = new List(); foreach (var type in module.GetTypes()) { var cctor = type.FindStaticConstructor(); - if (cctor != null && DotNetUtils.IsEmpty(cctor)) + if (cctor != null && DotNetUtils.IsEmpty(cctor) && !MustKeepObject(cctor)) emptyCctorsToRemove.Add(cctor); } @@ -442,7 +465,7 @@ namespace de4dot.code.deobfuscators { Logger.Instance.Indent(); foreach (var info in methodsToRemove) { var method = info.obj; - if (method == null) + if (method == null || MustKeepObject(method)) continue; var type = method.DeclaringType; if (type == null) @@ -465,7 +488,7 @@ namespace de4dot.code.deobfuscators { Logger.Instance.Indent(); foreach (var info in fieldsToRemove) { var field = info.obj; - if (field == null) + if (field == null || MustKeepObject(field)) continue; var type = field.DeclaringType; if (type == null) @@ -490,7 +513,7 @@ namespace de4dot.code.deobfuscators { var moduleType = DotNetUtils.GetModuleType(module); foreach (var info in typesToRemove) { var typeDef = info.obj; - if (typeDef == null || typeDef == moduleType) + if (typeDef == null || typeDef == moduleType || MustKeepObject(typeDef)) continue; bool removed; if (typeDef.DeclaringType != null) @@ -566,7 +589,7 @@ namespace de4dot.code.deobfuscators { Logger.Instance.Indent(); foreach (var info in resourcesToRemove) { var resource = info.obj; - if (resource == null) + if (resource == null || MustKeepObject(resource)) continue; if (module.Resources.Remove(resource)) Logger.v("Removed resource {0} (reason: {1})", Utils.ToCsharpString(resource.Name), info.reason); From e3307dc9ac922e624a4071510f958c36404de767 Mon Sep 17 00:00:00 2001 From: de4dot Date: Sat, 15 Feb 2014 21:13:56 +0100 Subject: [PATCH 16/22] Keep deobfuscating methods even if a cflow deobfuscation exception is thrown --- de4dot.code/ObfuscatedFile.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/de4dot.code/ObfuscatedFile.cs b/de4dot.code/ObfuscatedFile.cs index e613f31b..9ca0057b 100644 --- a/de4dot.code/ObfuscatedFile.cs +++ b/de4dot.code/ObfuscatedFile.cs @@ -595,9 +595,6 @@ namespace de4dot.code { try { Deobfuscate(method, cflowDeobfuscator, methodPrinter, isVerbose, isVV); } - catch (ApplicationException) { - throw; - } catch (Exception ex) { if (!CanLoadMethodBody(method)) { if (isVerbose) From b93742c296521ee424d5e5fe92e2085212a50e91 Mon Sep 17 00:00:00 2001 From: de4dot Date: Sat, 15 Feb 2014 21:14:59 +0100 Subject: [PATCH 17/22] Remember caught exception object --- AssemblyData/AssemblyService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AssemblyData/AssemblyService.cs b/AssemblyData/AssemblyService.cs index 74798b51..1ce3fe0a 100644 --- a/AssemblyData/AssemblyService.cs +++ b/AssemblyData/AssemblyService.cs @@ -85,8 +85,8 @@ namespace AssemblyData { try { assembly = assemblyResolver.Load(filename); } - catch (BadImageFormatException) { - throw new ApplicationException(string.Format("Could not load assembly {0}. Maybe it's 32-bit or 64-bit only?", filename)); + catch (BadImageFormatException ex) { + throw new ApplicationException(string.Format("Could not load assembly {0}. Maybe it's 32-bit or 64-bit only?", filename), ex); } } } From 90c67b2fe9639f744f78ac6e53045b1cb8d09402 Mon Sep 17 00:00:00 2001 From: de4dot Date: Fri, 7 Mar 2014 20:57:09 +0100 Subject: [PATCH 18/22] Align switch cases --- .../deobfuscators/ILProtector/MethodReader.cs | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/de4dot.code/deobfuscators/ILProtector/MethodReader.cs b/de4dot.code/deobfuscators/ILProtector/MethodReader.cs index ab81e9d8..004f891a 100644 --- a/de4dot.code/deobfuscators/ILProtector/MethodReader.cs +++ b/de4dot.code/deobfuscators/ILProtector/MethodReader.cs @@ -104,29 +104,29 @@ namespace de4dot.code.deobfuscators.ILProtector { TypeSig ReadType() { switch ((ElementType)reader.ReadByte()) { - case ElementType.Void: return module.CorLibTypes.Void; - case ElementType.Boolean: return module.CorLibTypes.Boolean; - case ElementType.Char: return module.CorLibTypes.Char; - case ElementType.I1: return module.CorLibTypes.SByte; - case ElementType.U1: return module.CorLibTypes.Byte; - case ElementType.I2: return module.CorLibTypes.Int16; - case ElementType.U2: return module.CorLibTypes.UInt16; - case ElementType.I4: return module.CorLibTypes.Int32; - case ElementType.U4: return module.CorLibTypes.UInt32; - case ElementType.I8: return module.CorLibTypes.Int64; - case ElementType.U8: return module.CorLibTypes.UInt64; - case ElementType.R4: return module.CorLibTypes.Single; - case ElementType.R8: return module.CorLibTypes.Double; - case ElementType.String: return module.CorLibTypes.String; - case ElementType.Ptr: return new PtrSig(ReadType()); - case ElementType.ByRef: return new ByRefSig(ReadType()); - case ElementType.TypedByRef: return module.CorLibTypes.TypedReference; - case ElementType.I: return module.CorLibTypes.IntPtr; - case ElementType.U: return module.CorLibTypes.UIntPtr; - case ElementType.Object: return module.CorLibTypes.Object; - case ElementType.SZArray: return new SZArraySig(ReadType()); - case ElementType.Sentinel: ReadType(); return new SentinelSig(); - case ElementType.Pinned: return new PinnedSig(ReadType()); + case ElementType.Void: return module.CorLibTypes.Void; + case ElementType.Boolean: return module.CorLibTypes.Boolean; + case ElementType.Char: return module.CorLibTypes.Char; + case ElementType.I1: return module.CorLibTypes.SByte; + case ElementType.U1: return module.CorLibTypes.Byte; + case ElementType.I2: return module.CorLibTypes.Int16; + case ElementType.U2: return module.CorLibTypes.UInt16; + case ElementType.I4: return module.CorLibTypes.Int32; + case ElementType.U4: return module.CorLibTypes.UInt32; + case ElementType.I8: return module.CorLibTypes.Int64; + case ElementType.U8: return module.CorLibTypes.UInt64; + case ElementType.R4: return module.CorLibTypes.Single; + case ElementType.R8: return module.CorLibTypes.Double; + case ElementType.String: return module.CorLibTypes.String; + case ElementType.Ptr: return new PtrSig(ReadType()); + case ElementType.ByRef: return new ByRefSig(ReadType()); + case ElementType.TypedByRef:return module.CorLibTypes.TypedReference; + case ElementType.I: return module.CorLibTypes.IntPtr; + case ElementType.U: return module.CorLibTypes.UIntPtr; + case ElementType.Object: return module.CorLibTypes.Object; + case ElementType.SZArray: return new SZArraySig(ReadType()); + case ElementType.Sentinel: ReadType(); return new SentinelSig(); + case ElementType.Pinned: return new PinnedSig(ReadType()); case ElementType.ValueType: case ElementType.Class: From 5d64daefb98fb5651ffe563be72e3041b5eea966 Mon Sep 17 00:00:00 2001 From: de4dot Date: Fri, 7 Mar 2014 20:57:26 +0100 Subject: [PATCH 19/22] Support ILProtector 2.0.12.0 - 2.0.12.3 --- .../ILProtector/DynamicMethodsDecrypter.cs | 138 +++++++++++++++++- .../DynamicMethodsDecrypterService.cs | 7 + .../ILProtector/DynamicMethodsRestorer.cs | 1 + .../deobfuscators/ILProtector/MethodReader.cs | 19 ++- .../ILProtector/MethodsDecrypterBase.cs | 6 +- .../ILProtector/RuntimeFileInfo.cs | 6 + 6 files changed, 167 insertions(+), 10 deletions(-) diff --git a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs index 47975d08..1b352314 100644 --- a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs @@ -38,6 +38,7 @@ namespace de4dot.code.deobfuscators.ILProtector { FieldInfo invokerFieldInfo; ModuleDefMD moduleProtect; IDecrypter decrypter; + bool methodReaderHasDelegateTypeFlag; interface IDecrypter { byte[] Decrypt(int methodId, uint rid); @@ -269,7 +270,7 @@ namespace de4dot.code.deobfuscators.ILProtector { } } - // 2.0.9.0 - 2.0.11.0 + // 2.0.9.0 - 2.0.11.1 class DecrypterV2_0_9_0 : DecrypterBase { DecryptMethod decryptMethod; byte[] decryptedData; @@ -299,6 +300,112 @@ namespace de4dot.code.deobfuscators.ILProtector { } } + abstract class DecrypterBaseV2_0_12_x : IDecrypter { + protected readonly DynamicMethodsDecrypter dmd; + protected byte[] currentILBytes; + byte[] decryptedData; + readonly Delegate invoker; + protected readonly IntPtr pGetILBytes; + protected readonly IntPtr pDecryptCallback; + + protected unsafe DecrypterBaseV2_0_12_x(DynamicMethodsDecrypter dmd) { + this.dmd = dmd; + this.invoker = (Delegate)dmd.invokerFieldInfo.GetValue(null); + + byte* p = (byte*)GetStateAddr(invoker.Target); + p += IntPtr.Size * 3; + p = *(byte**)p; + p += 8 + IntPtr.Size * 8; + p = *(byte**)p; + p += IntPtr.Size * 3; + p = *(byte**)p; + pGetILBytes = new IntPtr(p + IntPtr.Size * 39); + pDecryptCallback = new IntPtr(p + IntPtr.Size * 40); + } + + IntPtr GetStateAddr(object obj) { + var flags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; + foreach (var fi in obj.GetType().GetFields(flags)) { + if (fi.FieldType == typeof(IntPtr)) + return (IntPtr)fi.GetValue(obj); + } + throw new ApplicationException("Could not find an IntPtr field"); + } + + public byte[] Decrypt(int methodId, uint rid) { + decryptedData = null; + currentILBytes = dmd.reflectionModule.ResolveMethod(0x06000000 + (int)rid).GetMethodBody().GetILAsByteArray(); + + invoker.DynamicInvoke(new object[1] { methodId }); + return decryptedData; + } + + protected unsafe void SaveDecryptedData(byte* pMethodCode, int methodSize) { + decryptedData = new byte[methodSize]; + Marshal.Copy(new IntPtr(pMethodCode), decryptedData, 0, decryptedData.Length); + } + } + + // 2.0.12.0 - 2.0.12.2 + class DecrypterV2_0_12_0 : DecrypterBaseV2_0_12_x { + readonly GetCallerMethodAsILByteArrayDelegate getCallerMethodAsILByteArrayDelegate; + readonly DecryptCallbackDelegate decryptCallbackDelegate; + + [return: MarshalAs(UnmanagedType.SafeArray)] + delegate byte[] GetCallerMethodAsILByteArrayDelegate(IntPtr a, int skipFrames); + unsafe delegate bool DecryptCallbackDelegate(IntPtr a, byte* pMethodCode, int methodSize, int methodId); + + public unsafe DecrypterV2_0_12_0(DynamicMethodsDecrypter dmd) + : base(dmd) { + getCallerMethodAsILByteArrayDelegate = GetCallerMethodAsILByteArray; + decryptCallbackDelegate = MyDecryptCallback; + + *(IntPtr*)pGetILBytes = Marshal.GetFunctionPointerForDelegate(getCallerMethodAsILByteArrayDelegate); + *(IntPtr*)pDecryptCallback = Marshal.GetFunctionPointerForDelegate(decryptCallbackDelegate); + } + + byte[] GetCallerMethodAsILByteArray(IntPtr a, int skipFrames) { + return currentILBytes; + } + + unsafe bool MyDecryptCallback(IntPtr a, byte* pMethodCode, int methodSize, int methodId) { + SaveDecryptedData(pMethodCode, methodSize); + return true; + } + } + + // 2.0.12.3 + class DecrypterV2_0_12_3 : DecrypterBaseV2_0_12_x { + readonly GetCallerMethodAsILByteArrayDelegate getCallerMethodAsILByteArrayDelegate; + readonly DecryptCallbackDelegate decryptCallbackDelegate; + + [return: MarshalAs(UnmanagedType.SafeArray)] + delegate byte[] GetCallerMethodAsILByteArrayDelegate(IntPtr a, int skipFrames, IntPtr c, IntPtr d); + unsafe delegate bool DecryptCallbackDelegate(IntPtr a, byte* pMethodCode, int methodSize, int methodId, IntPtr e); + + public unsafe DecrypterV2_0_12_3(DynamicMethodsDecrypter dmd) + : base(dmd) { + getCallerMethodAsILByteArrayDelegate = GetCallerMethodAsILByteArray; + decryptCallbackDelegate = MyDecryptCallback; + + *(IntPtr*)pGetILBytes = Marshal.GetFunctionPointerForDelegate(getCallerMethodAsILByteArrayDelegate); + *(IntPtr*)pDecryptCallback = Marshal.GetFunctionPointerForDelegate(decryptCallbackDelegate); + } + + byte[] GetCallerMethodAsILByteArray(IntPtr a, int skipFrames, IntPtr c, IntPtr d) { + return currentILBytes; + } + + unsafe bool MyDecryptCallback(IntPtr a, byte* pMethodCode, int methodSize, int methodId, IntPtr e) { + SaveDecryptedData(pMethodCode, methodSize); + return true; + } + } + + public bool MethodReaderHasDelegateTypeFlag { + get { return methodReaderHasDelegateTypeFlag; } + } + public DynamicMethodsDecrypter(ModuleDefMD module, Module reflectionModule) { this.module = module; this.reflectionModule = reflectionModule; @@ -338,11 +445,22 @@ namespace de4dot.code.deobfuscators.ILProtector { } IDecrypter CreateDecrypter() { - return CreateDecrypterV1_0_7_0() ?? - CreateDecrypterV2_0_0_0() ?? - CreateDecrypterV2_0_8_0() ?? - CreateDecrypterV2_0_8_5() ?? - CreateDecrypterV2_0_9_0(); + var version = reflectionProtectModule.Assembly.GetName().Version; + if (reflectionProtectModule.Assembly.GetName().Version < new Version(2, 0, 12, 0)) { + return CreateDecrypterV1_0_7_0() ?? + CreateDecrypterV2_0_0_0() ?? + CreateDecrypterV2_0_8_0() ?? + CreateDecrypterV2_0_8_5() ?? + CreateDecrypterV2_0_9_0(); + } + + methodReaderHasDelegateTypeFlag = true; + if (version < new Version(2, 0, 12, 3)) + return CreateDecrypterV2_0_12_0(); + if (version < new Version(2, 0, 12, 4)) + return CreateDecrypterV2_0_12_3(); + + return null; } IDecrypter CreateDecrypterV1_0_7_0() { @@ -385,6 +503,14 @@ namespace de4dot.code.deobfuscators.ILProtector { return new DecrypterV2_0_9_0(this, delegateField); } + IDecrypter CreateDecrypterV2_0_12_0() { + return new DecrypterV2_0_12_0(this); + } + + IDecrypter CreateDecrypterV2_0_12_3() { + return new DecrypterV2_0_12_3(this); + } + static readonly byte[] ilpPublicKeyToken = new byte[8] { 0x20, 0x12, 0xD3, 0xC0, 0x55, 0x1F, 0xE0, 0x3D }; static Assembly GetProtectAssembly() { foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { diff --git a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypterService.cs b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypterService.cs index ead8f085..a4895cd1 100644 --- a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypterService.cs +++ b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypterService.cs @@ -26,9 +26,11 @@ using AssemblyData; namespace de4dot.code.deobfuscators.ILProtector { sealed class DynamicMethodsDecrypterService : IUserGenericService { public const int MSG_DECRYPT_METHODS = 0; + public const int MSG_HAS_DELEGATE_TYPE_FLAG = 1; Module reflObfModule; ModuleDefMD obfModule; + bool hasDelegateTypeFlag; [CreateUserGenericService] public static IUserGenericService Create() { @@ -51,6 +53,9 @@ namespace de4dot.code.deobfuscators.ILProtector { case MSG_DECRYPT_METHODS: return DecryptMethods(args[0] as IList); + case MSG_HAS_DELEGATE_TYPE_FLAG: + return hasDelegateTypeFlag; + default: throw new ApplicationException(string.Format("Invalid msg: {0:X8}", msg)); } @@ -65,6 +70,8 @@ namespace de4dot.code.deobfuscators.ILProtector { for (int i = 0; i < methodIds.Count; i += 2) infos.Add(decrypter.Decrypt(methodIds[i], (uint)methodIds[i + 1])); + hasDelegateTypeFlag = decrypter.MethodReaderHasDelegateTypeFlag; + return infos; } } diff --git a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsRestorer.cs b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsRestorer.cs index c54f007e..8816eb36 100644 --- a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsRestorer.cs +++ b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsRestorer.cs @@ -42,6 +42,7 @@ namespace de4dot.code.deobfuscators.ILProtector { client.GenericService.LoadUserService(typeof(DynamicMethodsDecrypterService), null); client.GenericService.LoadAssembly(module.Location); decryptedData = client.GenericService.SendMessage(DynamicMethodsDecrypterService.MSG_DECRYPT_METHODS, new object[] { GetMethodIds() }) as IList; + MethodReaderHasDelegateTypeFlag = (bool)client.GenericService.SendMessage(DynamicMethodsDecrypterService.MSG_HAS_DELEGATE_TYPE_FLAG, new object[0]); } if (decryptedData == null) diff --git a/de4dot.code/deobfuscators/ILProtector/MethodReader.cs b/de4dot.code/deobfuscators/ILProtector/MethodReader.cs index 004f891a..fe404d89 100644 --- a/de4dot.code/deobfuscators/ILProtector/MethodReader.cs +++ b/de4dot.code/deobfuscators/ILProtector/MethodReader.cs @@ -31,6 +31,7 @@ namespace de4dot.code.deobfuscators.ILProtector { ModuleDefMD module; MethodFlags flags; TypeDef delegateType; + bool hasDelegateTypeFlag; [Flags] enum MethodFlags { @@ -38,6 +39,7 @@ namespace de4dot.code.deobfuscators.ILProtector { HasLocals = 2, HasInstructions = 4, HasExceptionHandlers = 8, + HasDelegateType = 0x10, } public TypeDef DelegateType { @@ -60,6 +62,15 @@ namespace de4dot.code.deobfuscators.ILProtector { get { return (flags & MethodFlags.HasExceptionHandlers) != 0; } } + bool HasDelegateType { + get { return !hasDelegateTypeFlag || (flags & MethodFlags.HasDelegateType) != 0; } + } + + public bool HasDelegateTypeFlag { + get { return hasDelegateTypeFlag; } + set { hasDelegateTypeFlag = value; } + } + public MethodReader(ModuleDefMD module, byte[] data, IList parameters) : base(MemoryImageStream.Create(data), parameters) { this.module = module; @@ -67,9 +78,11 @@ namespace de4dot.code.deobfuscators.ILProtector { public void Read() { flags = (MethodFlags)reader.ReadByte(); - delegateType = Resolve(ReadTypeToken()); - if (!DotNetUtils.DerivesFromDelegate(delegateType)) - throw new ApplicationException("Invalid delegate type"); + if (HasDelegateType) { + delegateType = Resolve(ReadTypeToken()); + if (!DotNetUtils.DerivesFromDelegate(delegateType)) + throw new ApplicationException("Invalid delegate type"); + } if (HasLocals) ReadLocals((int)reader.Read7BitEncodedUInt32()); if (HasInstructions) diff --git a/de4dot.code/deobfuscators/ILProtector/MethodsDecrypterBase.cs b/de4dot.code/deobfuscators/ILProtector/MethodsDecrypterBase.cs index 2ac46930..4b4e12e3 100644 --- a/de4dot.code/deobfuscators/ILProtector/MethodsDecrypterBase.cs +++ b/de4dot.code/deobfuscators/ILProtector/MethodsDecrypterBase.cs @@ -37,6 +37,8 @@ namespace de4dot.code.deobfuscators.ILProtector { get { return delegateTypes; } } + public bool MethodReaderHasDelegateTypeFlag { get; set; } + public MethodsDecrypterBase(ModuleDefMD module, MainType mainType) { this.module = module; this.mainType = mainType; @@ -84,10 +86,12 @@ namespace de4dot.code.deobfuscators.ILProtector { var methodInfo = methodInfos[methodId.Value]; methodInfos.Remove(methodId.Value); var methodReader = new MethodReader(module, methodInfo.data, parameters); + methodReader.HasDelegateTypeFlag = MethodReaderHasDelegateTypeFlag; methodReader.Read(); RestoreMethod(method, methodReader); - delegateTypes.Add(methodReader.DelegateType); + if (methodReader.DelegateType != null) + delegateTypes.Add(methodReader.DelegateType); return true; } diff --git a/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs b/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs index 34d5e7fb..2ed5d050 100644 --- a/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs +++ b/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs @@ -61,6 +61,9 @@ namespace de4dot.code.deobfuscators.ILProtector { new VersionInfo(new Version(2, 0, 10, 0), new byte[] { 0xE5, 0x8E, 0xEB, 0x26, 0x1A, 0x1C, 0x44, 0xA8, 0xFF, 0x88, 0x14, 0xE7, 0x38, 0x13, 0xE5, 0x6D }), new VersionInfo(new Version(2, 0, 11, 0), new byte[] { 0x67, 0xB8, 0xF7, 0x15, 0x70, 0x1D, 0xF2, 0x57, 0x00, 0x42, 0xF3, 0xA4, 0x83, 0x07, 0x62, 0xA3 }), new VersionInfo(new Version(2, 0, 11, 1), new byte[] { 0x2E, 0xC9, 0x53, 0xA0, 0x3C, 0x9B, 0x08, 0xDA, 0x88, 0x84, 0x37, 0xFC, 0x07, 0xAE, 0x8B, 0xEC }), + new VersionInfo(new Version(2, 0, 12, 0), new byte[] { 0x63, 0x8B, 0x5C, 0xE9, 0x89, 0x83, 0x57, 0x9D, 0xDC, 0xC3, 0xBD, 0xD9, 0xDB, 0x54, 0xBE, 0x66 }), + new VersionInfo(new Version(2, 0, 12, 2), new byte[] { 0xD5, 0x46, 0x38, 0xC7, 0x48, 0xF6, 0x3C, 0x1C, 0x1E, 0x7F, 0x3B, 0x7B, 0x5B, 0xE0, 0x49, 0x46 }), + new VersionInfo(new Version(2, 0, 12, 3), new byte[] { 0x35, 0xA3, 0x53, 0xE9, 0x9E, 0x30, 0x6E, 0x9C, 0x0F, 0x46, 0x20, 0x9A, 0x91, 0xD2, 0x95, 0x18 }), }; static readonly VersionInfo[] versionInfo64 = new VersionInfo[] { @@ -83,6 +86,9 @@ namespace de4dot.code.deobfuscators.ILProtector { new VersionInfo(new Version(2, 0, 10, 0), new byte[] { 0xD8, 0x79, 0x05, 0xC9, 0x2D, 0xA6, 0x5B, 0x7D, 0xEE, 0xA6, 0x13, 0x25, 0x7D, 0x29, 0x73, 0xB4 }), new VersionInfo(new Version(2, 0, 11, 0), new byte[] { 0x49, 0xAD, 0x40, 0x10, 0xD4, 0x03, 0x04, 0xB4, 0x3C, 0xD2, 0x36, 0x67, 0x38, 0x62, 0x9C, 0xE8 }), new VersionInfo(new Version(2, 0, 11, 1), new byte[] { 0x1D, 0x6C, 0xB6, 0xC8, 0xB3, 0x07, 0x53, 0x24, 0x6F, 0xC0, 0xF3, 0x4F, 0x5E, 0x8B, 0x9F, 0xD1 }), + new VersionInfo(new Version(2, 0, 12, 0), new byte[] { 0x5F, 0x42, 0xA5, 0x6C, 0x19, 0xC6, 0x73, 0x9E, 0xE6, 0x74, 0x62, 0x3B, 0x8A, 0x51, 0xBB, 0x93 }), + new VersionInfo(new Version(2, 0, 12, 2), new byte[] { 0x10, 0x91, 0xED, 0x05, 0x9C, 0x31, 0x0B, 0x63, 0x76, 0xD7, 0x4A, 0xEC, 0xDE, 0x99, 0x6D, 0xD0 }), + new VersionInfo(new Version(2, 0, 12, 3), new byte[] { 0x38, 0x86, 0xE0, 0xBF, 0xC6, 0x64, 0xB9, 0xA0, 0x07, 0xED, 0xDB, 0x02, 0x40, 0xD0, 0x57, 0xE8 }), }; public RuntimeFileInfo(MethodDef protectMethod) { From a9a79021a44d0f0be6e70c7a81a31509c53db7bf Mon Sep 17 00:00:00 2001 From: de4dot Date: Tue, 11 Mar 2014 22:05:54 +0100 Subject: [PATCH 20/22] Print number of restored methods --- de4dot.code/deobfuscators/Agile_NET/vm/v1/Csvm.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v1/Csvm.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v1/Csvm.cs index 91339051..60860204 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v1/Csvm.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v1/Csvm.cs @@ -112,6 +112,7 @@ namespace de4dot.code.deobfuscators.Agile_NET.vm.v1 { PrintMethod(methodPrinter, cilMethod); } Logger.Instance.DeIndent(); + Logger.n("Restored {0} CSVM methods", csvmMethods.Count); } static void PrintMethod(MethodPrinter methodPrinter, MethodDef method) { From 39a99d5e01f32cf26dff9eeeba4be0f7a9c30861 Mon Sep 17 00:00:00 2001 From: de4dot Date: Tue, 11 Mar 2014 22:15:43 +0100 Subject: [PATCH 21/22] Update copyright years --- AssemblyData/AssemblyResolver.cs | 2 +- AssemblyData/AssemblyServer.cs | 2 +- AssemblyData/AssemblyService.cs | 2 +- AssemblyData/DelegateStringDecrypter.cs | 2 +- AssemblyData/EmuStringDecrypter.cs | 2 +- AssemblyData/GenericService.cs | 2 +- AssemblyData/IAssemblyService.cs | 2 +- AssemblyData/IGenericService.cs | 2 +- AssemblyData/IMethodDecrypterService.cs | 2 +- AssemblyData/IStringDecrypter.cs | 2 +- AssemblyData/IStringDecrypterService.cs | 2 +- AssemblyData/IUserGenericService.cs | 2 +- AssemblyData/MethodDecrypterService.cs | 2 +- AssemblyData/Properties/AssemblyInfo.cs | 4 ++-- AssemblyData/SimpleData.cs | 2 +- AssemblyData/StringDecrypterService.cs | 2 +- AssemblyData/Utils.cs | 2 +- AssemblyData/methodsrewriter/AssemblyResolver.cs | 2 +- AssemblyData/methodsrewriter/CodeGenerator.cs | 2 +- AssemblyData/methodsrewriter/IMethodsRewriter.cs | 2 +- AssemblyData/methodsrewriter/MField.cs | 2 +- AssemblyData/methodsrewriter/MMethod.cs | 2 +- AssemblyData/methodsrewriter/MModule.cs | 2 +- AssemblyData/methodsrewriter/MType.cs | 2 +- AssemblyData/methodsrewriter/MethodsRewriter.cs | 2 +- AssemblyData/methodsrewriter/Operand.cs | 2 +- AssemblyData/methodsrewriter/Resolver.cs | 2 +- AssemblyData/methodsrewriter/ResolverUtils.cs | 2 +- AssemblyData/methodsrewriter/TypeInstanceResolver.cs | 2 +- AssemblyData/methodsrewriter/TypeResolver.cs | 2 +- AssemblyServer-CLR20-x64/Program.cs | 2 +- AssemblyServer-CLR20-x64/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer-CLR20/Program.cs | 2 +- AssemblyServer-CLR20/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer-CLR40-x64/Program.cs | 2 +- AssemblyServer-CLR40-x64/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer-CLR40/Program.cs | 2 +- AssemblyServer-CLR40/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer-x64/Program.cs | 2 +- AssemblyServer-x64/Properties/AssemblyInfo.cs | 4 ++-- AssemblyServer/Program.cs | 2 +- AssemblyServer/Properties/AssemblyInfo.cs | 4 ++-- LICENSE.de4dot.txt | 2 +- LICENSE.dnlib.txt | 2 +- Test.Rename.Dll/Properties/AssemblyInfo.cs | 4 ++-- Test.Rename.Dll/Tests.cs | 2 +- Test.Rename/Program.cs | 2 +- Test.Rename/Properties/AssemblyInfo.cs | 4 ++-- de4dot-x64/Program.cs | 2 +- de4dot-x64/Properties/AssemblyInfo.cs | 4 ++-- de4dot.blocks/BaseBlock.cs | 2 +- de4dot.blocks/Block.cs | 2 +- de4dot.blocks/Blocks.cs | 2 +- de4dot.blocks/BlocksSorter.cs | 2 +- de4dot.blocks/CodeGenerator.cs | 2 +- de4dot.blocks/DeadBlocksRemover.cs | 2 +- de4dot.blocks/DotNetUtils.cs | 2 +- de4dot.blocks/DumpedMethod.cs | 2 +- de4dot.blocks/DumpedMethods.cs | 2 +- de4dot.blocks/FilterHandlerBlock.cs | 2 +- de4dot.blocks/ForwardScanOrder.cs | 2 +- de4dot.blocks/GenericArgsSubstitutor.cs | 2 +- de4dot.blocks/HandlerBlock.cs | 2 +- de4dot.blocks/Instr.cs | 2 +- de4dot.blocks/InstructionListParser.cs | 2 +- de4dot.blocks/MemberDefDict.cs | 2 +- de4dot.blocks/MethodBlocks.cs | 2 +- de4dot.blocks/Properties/AssemblyInfo.cs | 4 ++-- de4dot.blocks/ScopeBlock.cs | 2 +- de4dot.blocks/StackTracePatcher.cs | 2 +- de4dot.blocks/TryBlock.cs | 2 +- de4dot.blocks/TryHandlerBlock.cs | 2 +- de4dot.blocks/Utils.cs | 2 +- de4dot.blocks/cflow/BlockCflowDeobfuscator.cs | 2 +- de4dot.blocks/cflow/BlockDeobfuscator.cs | 2 +- de4dot.blocks/cflow/BlocksCflowDeobfuscator.cs | 2 +- de4dot.blocks/cflow/BranchEmulator.cs | 2 +- de4dot.blocks/cflow/CachedCflowDeobfuscator.cs | 2 +- de4dot.blocks/cflow/CflowDeobfuscator.cs | 2 +- de4dot.blocks/cflow/CflowUtils.cs | 2 +- de4dot.blocks/cflow/ConstantsFolder.cs | 2 +- de4dot.blocks/cflow/DeadCodeRemover.cs | 2 +- de4dot.blocks/cflow/DeadStoreRemover.cs | 2 +- de4dot.blocks/cflow/DupBlockDeobfuscator.cs | 2 +- de4dot.blocks/cflow/IBlocksDeobfuscator.cs | 2 +- de4dot.blocks/cflow/ICflowDeobfuscator.cs | 2 +- de4dot.blocks/cflow/InstructionEmulator.cs | 2 +- de4dot.blocks/cflow/Int32Value.cs | 2 +- de4dot.blocks/cflow/Int64Value.cs | 2 +- de4dot.blocks/cflow/MethodCallInliner.cs | 2 +- de4dot.blocks/cflow/MethodCallInlinerBase.cs | 2 +- de4dot.blocks/cflow/Real8Value.cs | 2 +- de4dot.blocks/cflow/StLdlocFixer.cs | 2 +- de4dot.blocks/cflow/SwitchCflowDeobfuscator.cs | 2 +- de4dot.blocks/cflow/Value.cs | 2 +- de4dot.blocks/cflow/ValueStack.cs | 2 +- de4dot.code/AssemblyClient/AssemblyClient.cs | 2 +- de4dot.code/AssemblyClient/AssemblyClientFactory.cs | 2 +- de4dot.code/AssemblyClient/IAssemblyClient.cs | 2 +- de4dot.code/AssemblyClient/IAssemblyServerLoader.cs | 2 +- de4dot.code/AssemblyClient/IpcAssemblyServerLoader.cs | 2 +- .../AssemblyClient/NewAppDomainAssemblyServerLoader.cs | 2 +- de4dot.code/AssemblyClient/NewProcessAssemblyServerLoader.cs | 2 +- .../AssemblyClient/SameAppDomainAssemblyServerLoader.cs | 2 +- de4dot.code/AssemblyModule.cs | 2 +- de4dot.code/AssemblyResolver.cs | 2 +- de4dot.code/DeobfuscatorContext.cs | 2 +- de4dot.code/DumpedMethodsRestorer.cs | 2 +- de4dot.code/HandleProcessCorruptedStateExceptionsAttribute.cs | 2 +- de4dot.code/IDeobfuscatorContext.cs | 2 +- de4dot.code/IObfuscatedFile.cs | 2 +- de4dot.code/Logger.cs | 2 +- de4dot.code/MethodPrinter.cs | 2 +- de4dot.code/MethodReturnValueInliner.cs | 2 +- de4dot.code/NameRegexes.cs | 2 +- de4dot.code/ObfuscatedFile.cs | 2 +- de4dot.code/Option.cs | 2 +- de4dot.code/PrintNewTokens.cs | 2 +- de4dot.code/Properties/AssemblyInfo.cs | 4 ++-- de4dot.code/StringInliner.cs | 2 +- de4dot.code/UserException.cs | 2 +- de4dot.code/Utils.cs | 2 +- de4dot.code/Win32Path.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/CliSecureRtType.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/CsBlowfish.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/MethodsDecrypter.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/ProxyCallFixer.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/ResourceDecrypter.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/StackFrameHelper.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/StringDecrypter.cs | 2 +- .../Agile_NET/vm/CilOperandInstructionRestorer.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/CsvmDataReader.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/CsvmMethodData.cs | 2 +- .../Agile_NET/vm/CsvmToCilMethodConverterBase.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/VmOperand.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/v1/Csvm.cs | 2 +- .../deobfuscators/Agile_NET/vm/v1/CsvmToCilMethodConverter.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/v1/FieldsInfo.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/v1/OpCodeHandler.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/v1/OpCodeHandlers.cs | 2 +- .../deobfuscators/Agile_NET/vm/v1/UnknownHandlerInfo.cs | 2 +- .../deobfuscators/Agile_NET/vm/v1/VmOpCodeHandlerDetector.cs | 2 +- .../deobfuscators/Agile_NET/vm/v2/CompositeHandlerDetector.cs | 2 +- .../deobfuscators/Agile_NET/vm/v2/CompositeOpCodeHandler.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/v2/Csvm.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmInfo.cs | 2 +- .../deobfuscators/Agile_NET/vm/v2/CsvmToCilMethodConverter.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/v2/HandlerTypeCode.cs | 2 +- .../deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfo.cs | 2 +- .../deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfoReader.cs | 2 +- .../deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfos.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/v2/SigCreator.cs | 2 +- de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCode.cs | 2 +- .../deobfuscators/Agile_NET/vm/v2/VmOpCodeHandlerDetector.cs | 2 +- de4dot.code/deobfuscators/ArrayFinder.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/AssemblyResolver.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/BabelInflater.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/BabelMethodCallInliner.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/BabelUtils.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/ConstantsDecrypter.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/ImageReader.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/InflaterCreator.cs | 2 +- .../deobfuscators/Babel_NET/MemberReferenceConverter.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/MethodBodyReader.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/MethodReferenceReader.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/MethodsDecrypter.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/ProxyCallFixer.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/ResourceDecrypter.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/ResourceResolver.cs | 2 +- de4dot.code/deobfuscators/Babel_NET/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/Blowfish.cs | 2 +- de4dot.code/deobfuscators/CRC32.cs | 2 +- de4dot.code/deobfuscators/CodeFort/AssemblyData.cs | 2 +- de4dot.code/deobfuscators/CodeFort/AssemblyDecrypter.cs | 2 +- de4dot.code/deobfuscators/CodeFort/CfMethodCallInliner.cs | 2 +- de4dot.code/deobfuscators/CodeFort/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/CodeFort/PasswordFinder.cs | 2 +- de4dot.code/deobfuscators/CodeFort/ProxyCallFixer.cs | 2 +- de4dot.code/deobfuscators/CodeFort/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/AssemblyResolver.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/ErexResourceReader.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/InvalidDataException.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/InvalidMethodsFinder.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/MainType.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/MethodsDecrypter.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/ObfuscatorVersion.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/ProxyCallFixer.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/ResourceConverter.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/ResourceDecrypter.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/ResourceInfo.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/ResourceReader.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/CodeVeil/TamperDetection.cs | 2 +- de4dot.code/deobfuscators/CodeWall/AssemblyDecrypter.cs | 2 +- de4dot.code/deobfuscators/CodeWall/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/CodeWall/KeyGenerator.cs | 2 +- de4dot.code/deobfuscators/CodeWall/MethodsDecrypter.cs | 2 +- de4dot.code/deobfuscators/CodeWall/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/ConstantsReader.cs | 2 +- de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs | 2 +- .../deobfuscators/CryptoObfuscator/AssemblyResolver.cs | 2 +- .../deobfuscators/CryptoObfuscator/CoMethodCallInliner.cs | 2 +- de4dot.code/deobfuscators/CryptoObfuscator/CoUtils.cs | 2 +- .../deobfuscators/CryptoObfuscator/ConstantsDecrypter.cs | 2 +- de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs | 2 +- .../deobfuscators/CryptoObfuscator/InlinedMethodTypes.cs | 2 +- de4dot.code/deobfuscators/CryptoObfuscator/LdnullFixer.cs | 2 +- .../deobfuscators/CryptoObfuscator/MethodBodyReader.cs | 2 +- .../deobfuscators/CryptoObfuscator/MethodsDecrypter.cs | 2 +- de4dot.code/deobfuscators/CryptoObfuscator/ProxyCallFixer.cs | 2 +- .../deobfuscators/CryptoObfuscator/ResourceDecrypter.cs | 2 +- .../deobfuscators/CryptoObfuscator/ResourceResolver.cs | 2 +- de4dot.code/deobfuscators/CryptoObfuscator/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs | 2 +- de4dot.code/deobfuscators/DeepSea/ArrayBlockDeobfuscator.cs | 2 +- de4dot.code/deobfuscators/DeepSea/ArrayBlockState.cs | 2 +- de4dot.code/deobfuscators/DeepSea/AssemblyResolver.cs | 2 +- de4dot.code/deobfuscators/DeepSea/CastDeobfuscator.cs | 2 +- de4dot.code/deobfuscators/DeepSea/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/DeepSea/DsConstantsReader.cs | 2 +- de4dot.code/deobfuscators/DeepSea/DsInlinedMethodsFinder.cs | 2 +- de4dot.code/deobfuscators/DeepSea/DsMethodCallInliner.cs | 2 +- de4dot.code/deobfuscators/DeepSea/DsUtils.cs | 2 +- de4dot.code/deobfuscators/DeepSea/FieldsRestorer.cs | 2 +- de4dot.code/deobfuscators/DeepSea/ResolverBase.cs | 2 +- de4dot.code/deobfuscators/DeepSea/ResourceResolver.cs | 2 +- de4dot.code/deobfuscators/DeepSea/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/DeobUtils.cs | 2 +- de4dot.code/deobfuscators/DeobfuscatorBase.cs | 2 +- de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs | 2 +- de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/Dotfuscator/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs | 2 +- .../Eazfuscator_NET/CodeCompilerMethodCallRestorer.cs | 2 +- de4dot.code/deobfuscators/Eazfuscator_NET/DecrypterType.cs | 2 +- de4dot.code/deobfuscators/Eazfuscator_NET/Deobfuscator.cs | 2 +- .../deobfuscators/Eazfuscator_NET/DynamicDynocodeIterator.cs | 2 +- de4dot.code/deobfuscators/Eazfuscator_NET/DynocodeService.cs | 2 +- .../deobfuscators/Eazfuscator_NET/EfConstantsReader.cs | 2 +- de4dot.code/deobfuscators/Eazfuscator_NET/EfUtils.cs | 2 +- .../deobfuscators/Eazfuscator_NET/ResourceMethodsRestorer.cs | 2 +- de4dot.code/deobfuscators/Eazfuscator_NET/ResourceResolver.cs | 2 +- de4dot.code/deobfuscators/Eazfuscator_NET/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/Eazfuscator_NET/VersionDetector.cs | 2 +- de4dot.code/deobfuscators/ExceptionLoggerRemover.cs | 2 +- de4dot.code/deobfuscators/Goliath_NET/ArrayDecrypter.cs | 2 +- de4dot.code/deobfuscators/Goliath_NET/ArrayValueInliner.cs | 2 +- de4dot.code/deobfuscators/Goliath_NET/DecrypterBase.cs | 2 +- de4dot.code/deobfuscators/Goliath_NET/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/Goliath_NET/IntegerDecrypter.cs | 2 +- de4dot.code/deobfuscators/Goliath_NET/LocalsRestorer.cs | 2 +- .../deobfuscators/Goliath_NET/LogicalExpressionFixer.cs | 2 +- de4dot.code/deobfuscators/Goliath_NET/ProxyCallFixer.cs | 2 +- de4dot.code/deobfuscators/Goliath_NET/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/Goliath_NET/StrongNameChecker.cs | 2 +- de4dot.code/deobfuscators/IDeobfuscatedFile.cs | 2 +- de4dot.code/deobfuscators/IDeobfuscator.cs | 2 +- de4dot.code/deobfuscators/IDeobfuscatorInfo.cs | 2 +- de4dot.code/deobfuscators/ILProtector/DecryptedMethodInfo.cs | 2 +- de4dot.code/deobfuscators/ILProtector/Deobfuscator.cs | 2 +- .../deobfuscators/ILProtector/DynamicMethodsDecrypter.cs | 2 +- .../ILProtector/DynamicMethodsDecrypterService.cs | 2 +- .../deobfuscators/ILProtector/DynamicMethodsRestorer.cs | 2 +- de4dot.code/deobfuscators/ILProtector/MainType.cs | 2 +- de4dot.code/deobfuscators/ILProtector/MethodReader.cs | 2 +- de4dot.code/deobfuscators/ILProtector/MethodsDecrypterBase.cs | 2 +- de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs | 2 +- .../deobfuscators/ILProtector/StaticMethodsDecrypter.cs | 2 +- de4dot.code/deobfuscators/ISimpleDeobfuscator.cs | 2 +- de4dot.code/deobfuscators/InitializedDataCreator.cs | 2 +- de4dot.code/deobfuscators/InlinedMethodsFinder.cs | 2 +- de4dot.code/deobfuscators/MPRESS/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/MaxtoCode/CryptDecrypter.cs | 2 +- de4dot.code/deobfuscators/MaxtoCode/Decrypter6.cs | 2 +- de4dot.code/deobfuscators/MaxtoCode/DecrypterInfo.cs | 2 +- de4dot.code/deobfuscators/MaxtoCode/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/MaxtoCode/EncryptionInfos.cs | 2 +- de4dot.code/deobfuscators/MaxtoCode/MainType.cs | 2 +- de4dot.code/deobfuscators/MaxtoCode/McKey.cs | 2 +- de4dot.code/deobfuscators/MaxtoCode/MethodsDecrypter.cs | 2 +- de4dot.code/deobfuscators/MaxtoCode/PeHeader.cs | 2 +- de4dot.code/deobfuscators/MaxtoCode/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/MemberReferenceBuilder.cs | 2 +- de4dot.code/deobfuscators/MethodBodyParser.cs | 2 +- de4dot.code/deobfuscators/MethodCallRestorerBase.cs | 2 +- de4dot.code/deobfuscators/MethodCollection.cs | 2 +- de4dot.code/deobfuscators/MethodStack.cs | 2 +- de4dot.code/deobfuscators/MethodsDecrypter.cs | 2 +- de4dot.code/deobfuscators/NullStream.cs | 2 +- de4dot.code/deobfuscators/Operations.cs | 2 +- de4dot.code/deobfuscators/ProxyCallFixerBase.cs | 2 +- de4dot.code/deobfuscators/RandomNameChecker.cs | 2 +- de4dot.code/deobfuscators/Rummage/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/Rummage/RummageVersion.cs | 2 +- de4dot.code/deobfuscators/Rummage/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/Skater_NET/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/Skater_NET/EnumClassFinder.cs | 2 +- de4dot.code/deobfuscators/Skater_NET/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/SmartAssembly/AssemblyResolver.cs | 2 +- .../deobfuscators/SmartAssembly/AssemblyResolverInfo.cs | 2 +- .../SmartAssembly/AutomatedErrorReportingFinder.cs | 2 +- de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/SmartAssembly/MemoryManagerInfo.cs | 2 +- de4dot.code/deobfuscators/SmartAssembly/ProxyCallFixer.cs | 2 +- de4dot.code/deobfuscators/SmartAssembly/ResolverInfoBase.cs | 2 +- de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypter.cs | 2 +- .../deobfuscators/SmartAssembly/ResourceDecrypterInfo.cs | 2 +- de4dot.code/deobfuscators/SmartAssembly/ResourceResolver.cs | 2 +- .../deobfuscators/SmartAssembly/ResourceResolverInfo.cs | 2 +- de4dot.code/deobfuscators/SmartAssembly/SimpleZipInfo.cs | 2 +- de4dot.code/deobfuscators/SmartAssembly/StringDecrypter.cs | 2 +- .../deobfuscators/SmartAssembly/StringDecrypterInfo.cs | 2 +- .../deobfuscators/SmartAssembly/StringEncoderClassFinder.cs | 2 +- .../deobfuscators/SmartAssembly/TamperProtectionRemover.cs | 2 +- de4dot.code/deobfuscators/Spices_Net/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/Spices_Net/QclzDecompressor.cs | 2 +- de4dot.code/deobfuscators/Spices_Net/ResourceNamesRestorer.cs | 2 +- .../deobfuscators/Spices_Net/SpicesMethodCallInliner.cs | 2 +- de4dot.code/deobfuscators/Spices_Net/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/StringCounts.cs | 2 +- de4dot.code/deobfuscators/TypesRestorer.cs | 2 +- de4dot.code/deobfuscators/Unknown/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/UnpackedFile.cs | 2 +- de4dot.code/deobfuscators/UnusedMethodsFinder.cs | 2 +- de4dot.code/deobfuscators/ValueInlinerBase.cs | 2 +- de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs | 2 +- de4dot.code/deobfuscators/Xenocode/StringDecrypter.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v3/AntiStrongName.cs | 2 +- .../dotNET_Reactor/v3/ApplicationModeDecrypter.cs | 2 +- .../dotNET_Reactor/v3/ApplicationModeUnpacker.cs | 2 +- .../deobfuscators/dotNET_Reactor/v3/AssemblyResolver.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v3/DecryptMethod.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v3/DecrypterType.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v3/Deobfuscator.cs | 2 +- .../deobfuscators/dotNET_Reactor/v3/LibAssemblyResolver.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v3/MemoryPatcher.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v3/NativeLibSaver.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v4/AntiStrongname.cs | 2 +- .../deobfuscators/dotNET_Reactor/v4/AssemblyResolver.cs | 2 +- .../deobfuscators/dotNET_Reactor/v4/BooleanDecrypter.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs | 2 +- .../deobfuscators/dotNET_Reactor/v4/DnrMethodCallInliner.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v4/EmptyClass.cs | 2 +- .../deobfuscators/dotNET_Reactor/v4/EncryptedResource.cs | 2 +- .../dotNET_Reactor/v4/MetadataTokenObfuscator.cs | 2 +- .../deobfuscators/dotNET_Reactor/v4/MethodsDecrypter.cs | 2 +- .../deobfuscators/dotNET_Reactor/v4/NativeFileDecrypter.cs | 2 +- .../deobfuscators/dotNET_Reactor/v4/NativeImageUnpacker.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v4/ProxyCallFixer.cs | 2 +- .../deobfuscators/dotNET_Reactor/v4/ResourceResolver.cs | 2 +- .../deobfuscators/dotNET_Reactor/v4/StringDecrypter.cs | 2 +- de4dot.code/renamer/DerivedFrom.cs | 2 +- de4dot.code/renamer/ExistingNames.cs | 2 +- de4dot.code/renamer/INameChecker.cs | 2 +- de4dot.code/renamer/MemberInfos.cs | 2 +- de4dot.code/renamer/NameCreators.cs | 2 +- de4dot.code/renamer/Renamer.cs | 2 +- de4dot.code/renamer/ResourceKeysRenamer.cs | 2 +- de4dot.code/renamer/ResourceRenamer.cs | 2 +- de4dot.code/renamer/TypeInfo.cs | 2 +- de4dot.code/renamer/TypeNames.cs | 2 +- de4dot.code/renamer/TypeRenamerState.cs | 2 +- de4dot.code/renamer/VariableNameState.cs | 2 +- de4dot.code/renamer/asmmodules/EventDef.cs | 2 +- de4dot.code/renamer/asmmodules/FieldDef.cs | 2 +- de4dot.code/renamer/asmmodules/GenericParamDef.cs | 2 +- de4dot.code/renamer/asmmodules/IResolver.cs | 2 +- de4dot.code/renamer/asmmodules/MemberRefFinder.cs | 2 +- de4dot.code/renamer/asmmodules/MethodDef.cs | 2 +- de4dot.code/renamer/asmmodules/MethodNameGroups.cs | 2 +- de4dot.code/renamer/asmmodules/Module.cs | 2 +- de4dot.code/renamer/asmmodules/Modules.cs | 2 +- de4dot.code/renamer/asmmodules/ParamDef.cs | 2 +- de4dot.code/renamer/asmmodules/PropertyDef.cs | 2 +- de4dot.code/renamer/asmmodules/Ref.cs | 2 +- de4dot.code/renamer/asmmodules/RefDict.cs | 2 +- de4dot.code/renamer/asmmodules/TypeDef.cs | 2 +- de4dot.code/resources/BuiltInResourceData.cs | 2 +- de4dot.code/resources/IResourceData.cs | 2 +- de4dot.code/resources/ResourceDataCreator.cs | 2 +- de4dot.code/resources/ResourceElement.cs | 2 +- de4dot.code/resources/ResourceElementSet.cs | 2 +- de4dot.code/resources/ResourceReader.cs | 2 +- de4dot.code/resources/ResourceTypeCode.cs | 2 +- de4dot.code/resources/ResourceWriter.cs | 2 +- de4dot.code/resources/UserResourceData.cs | 2 +- de4dot.code/resources/UserResourceType.cs | 2 +- de4dot.cui/CommandLineParser.cs | 2 +- de4dot.cui/FilesDeobfuscator.cs | 2 +- de4dot.cui/Program.cs | 4 ++-- de4dot.cui/Properties/AssemblyInfo.cs | 4 ++-- de4dot.mdecrypt/DecryptMethodsInfo.cs | 2 +- de4dot.mdecrypt/DynamicMethodsDecrypter.cs | 2 +- de4dot.mdecrypt/NativeCodeGenerator.cs | 2 +- de4dot.mdecrypt/Properties/AssemblyInfo.cs | 4 ++-- de4dot/Program.cs | 2 +- de4dot/Properties/AssemblyInfo.cs | 4 ++-- 400 files changed, 416 insertions(+), 416 deletions(-) diff --git a/AssemblyData/AssemblyResolver.cs b/AssemblyData/AssemblyResolver.cs index f2a85f23..023e1c38 100644 --- a/AssemblyData/AssemblyResolver.cs +++ b/AssemblyData/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/AssemblyServer.cs b/AssemblyData/AssemblyServer.cs index b677664f..f088d552 100644 --- a/AssemblyData/AssemblyServer.cs +++ b/AssemblyData/AssemblyServer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/AssemblyService.cs b/AssemblyData/AssemblyService.cs index 1ce3fe0a..cd972c7a 100644 --- a/AssemblyData/AssemblyService.cs +++ b/AssemblyData/AssemblyService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/DelegateStringDecrypter.cs b/AssemblyData/DelegateStringDecrypter.cs index 65996f5d..6796ee4d 100644 --- a/AssemblyData/DelegateStringDecrypter.cs +++ b/AssemblyData/DelegateStringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/EmuStringDecrypter.cs b/AssemblyData/EmuStringDecrypter.cs index 866873b2..12fe5e26 100644 --- a/AssemblyData/EmuStringDecrypter.cs +++ b/AssemblyData/EmuStringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/GenericService.cs b/AssemblyData/GenericService.cs index a214f024..9b8b9efe 100644 --- a/AssemblyData/GenericService.cs +++ b/AssemblyData/GenericService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/IAssemblyService.cs b/AssemblyData/IAssemblyService.cs index b0e1da67..76a6a339 100644 --- a/AssemblyData/IAssemblyService.cs +++ b/AssemblyData/IAssemblyService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/IGenericService.cs b/AssemblyData/IGenericService.cs index db4d7a91..7502aa07 100644 --- a/AssemblyData/IGenericService.cs +++ b/AssemblyData/IGenericService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/IMethodDecrypterService.cs b/AssemblyData/IMethodDecrypterService.cs index 5ec2b224..6cdb80c1 100644 --- a/AssemblyData/IMethodDecrypterService.cs +++ b/AssemblyData/IMethodDecrypterService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/IStringDecrypter.cs b/AssemblyData/IStringDecrypter.cs index 5798c563..8e2fcab2 100644 --- a/AssemblyData/IStringDecrypter.cs +++ b/AssemblyData/IStringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/IStringDecrypterService.cs b/AssemblyData/IStringDecrypterService.cs index 83ad0c6a..83e73765 100644 --- a/AssemblyData/IStringDecrypterService.cs +++ b/AssemblyData/IStringDecrypterService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/IUserGenericService.cs b/AssemblyData/IUserGenericService.cs index 635ae7f6..35417f90 100644 --- a/AssemblyData/IUserGenericService.cs +++ b/AssemblyData/IUserGenericService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/MethodDecrypterService.cs b/AssemblyData/MethodDecrypterService.cs index 47c75234..a32a0c1a 100644 --- a/AssemblyData/MethodDecrypterService.cs +++ b/AssemblyData/MethodDecrypterService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/Properties/AssemblyInfo.cs b/AssemblyData/Properties/AssemblyInfo.cs index 6e716af3..c13cb77c 100644 --- a/AssemblyData/Properties/AssemblyInfo.cs +++ b/AssemblyData/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AssemblyData")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/AssemblyData/SimpleData.cs b/AssemblyData/SimpleData.cs index 8f4147d1..29e88f2a 100644 --- a/AssemblyData/SimpleData.cs +++ b/AssemblyData/SimpleData.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/StringDecrypterService.cs b/AssemblyData/StringDecrypterService.cs index 08c0be43..09f3cc81 100644 --- a/AssemblyData/StringDecrypterService.cs +++ b/AssemblyData/StringDecrypterService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/Utils.cs b/AssemblyData/Utils.cs index 470a14b8..8691206a 100644 --- a/AssemblyData/Utils.cs +++ b/AssemblyData/Utils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/AssemblyResolver.cs b/AssemblyData/methodsrewriter/AssemblyResolver.cs index 37751599..c5ec57be 100644 --- a/AssemblyData/methodsrewriter/AssemblyResolver.cs +++ b/AssemblyData/methodsrewriter/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/CodeGenerator.cs b/AssemblyData/methodsrewriter/CodeGenerator.cs index e8c30846..1bb190c7 100644 --- a/AssemblyData/methodsrewriter/CodeGenerator.cs +++ b/AssemblyData/methodsrewriter/CodeGenerator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/IMethodsRewriter.cs b/AssemblyData/methodsrewriter/IMethodsRewriter.cs index 5d242629..9e89505b 100644 --- a/AssemblyData/methodsrewriter/IMethodsRewriter.cs +++ b/AssemblyData/methodsrewriter/IMethodsRewriter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/MField.cs b/AssemblyData/methodsrewriter/MField.cs index 10ccba2c..2c81aeb1 100644 --- a/AssemblyData/methodsrewriter/MField.cs +++ b/AssemblyData/methodsrewriter/MField.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/MMethod.cs b/AssemblyData/methodsrewriter/MMethod.cs index 4818ba7c..94178dd3 100644 --- a/AssemblyData/methodsrewriter/MMethod.cs +++ b/AssemblyData/methodsrewriter/MMethod.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/MModule.cs b/AssemblyData/methodsrewriter/MModule.cs index 5929bff4..bc416892 100644 --- a/AssemblyData/methodsrewriter/MModule.cs +++ b/AssemblyData/methodsrewriter/MModule.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/MType.cs b/AssemblyData/methodsrewriter/MType.cs index 60b2235e..635691f1 100644 --- a/AssemblyData/methodsrewriter/MType.cs +++ b/AssemblyData/methodsrewriter/MType.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/MethodsRewriter.cs b/AssemblyData/methodsrewriter/MethodsRewriter.cs index c37a9ae7..9cceb8b6 100644 --- a/AssemblyData/methodsrewriter/MethodsRewriter.cs +++ b/AssemblyData/methodsrewriter/MethodsRewriter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/Operand.cs b/AssemblyData/methodsrewriter/Operand.cs index 2e381803..0600ac5f 100644 --- a/AssemblyData/methodsrewriter/Operand.cs +++ b/AssemblyData/methodsrewriter/Operand.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/Resolver.cs b/AssemblyData/methodsrewriter/Resolver.cs index fb48bf3f..718acd29 100644 --- a/AssemblyData/methodsrewriter/Resolver.cs +++ b/AssemblyData/methodsrewriter/Resolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/ResolverUtils.cs b/AssemblyData/methodsrewriter/ResolverUtils.cs index cff21337..b1402769 100644 --- a/AssemblyData/methodsrewriter/ResolverUtils.cs +++ b/AssemblyData/methodsrewriter/ResolverUtils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/TypeInstanceResolver.cs b/AssemblyData/methodsrewriter/TypeInstanceResolver.cs index a9e2de13..b2fe6d6c 100644 --- a/AssemblyData/methodsrewriter/TypeInstanceResolver.cs +++ b/AssemblyData/methodsrewriter/TypeInstanceResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyData/methodsrewriter/TypeResolver.cs b/AssemblyData/methodsrewriter/TypeResolver.cs index f209a028..552bef01 100644 --- a/AssemblyData/methodsrewriter/TypeResolver.cs +++ b/AssemblyData/methodsrewriter/TypeResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyServer-CLR20-x64/Program.cs b/AssemblyServer-CLR20-x64/Program.cs index b3ede556..1775605d 100644 --- a/AssemblyServer-CLR20-x64/Program.cs +++ b/AssemblyServer-CLR20-x64/Program.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyServer-CLR20-x64/Properties/AssemblyInfo.cs b/AssemblyServer-CLR20-x64/Properties/AssemblyInfo.cs index 511f465c..885556ce 100644 --- a/AssemblyServer-CLR20-x64/Properties/AssemblyInfo.cs +++ b/AssemblyServer-CLR20-x64/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AssemblyServer-CLR20-x64")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/AssemblyServer-CLR20/Program.cs b/AssemblyServer-CLR20/Program.cs index 535460d5..958d2e5f 100644 --- a/AssemblyServer-CLR20/Program.cs +++ b/AssemblyServer-CLR20/Program.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyServer-CLR20/Properties/AssemblyInfo.cs b/AssemblyServer-CLR20/Properties/AssemblyInfo.cs index ca5d1428..ad310d96 100644 --- a/AssemblyServer-CLR20/Properties/AssemblyInfo.cs +++ b/AssemblyServer-CLR20/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AssemblyServer-CLR20")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/AssemblyServer-CLR40-x64/Program.cs b/AssemblyServer-CLR40-x64/Program.cs index 60d617fc..0ad2396a 100644 --- a/AssemblyServer-CLR40-x64/Program.cs +++ b/AssemblyServer-CLR40-x64/Program.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyServer-CLR40-x64/Properties/AssemblyInfo.cs b/AssemblyServer-CLR40-x64/Properties/AssemblyInfo.cs index b9c2bdd1..655bdd3a 100644 --- a/AssemblyServer-CLR40-x64/Properties/AssemblyInfo.cs +++ b/AssemblyServer-CLR40-x64/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AssemblyServer-CLR40-x64")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/AssemblyServer-CLR40/Program.cs b/AssemblyServer-CLR40/Program.cs index bcaa220c..905b4aee 100644 --- a/AssemblyServer-CLR40/Program.cs +++ b/AssemblyServer-CLR40/Program.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyServer-CLR40/Properties/AssemblyInfo.cs b/AssemblyServer-CLR40/Properties/AssemblyInfo.cs index e5f696ab..953e469f 100644 --- a/AssemblyServer-CLR40/Properties/AssemblyInfo.cs +++ b/AssemblyServer-CLR40/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AssemblyServer-CLR40")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/AssemblyServer-x64/Program.cs b/AssemblyServer-x64/Program.cs index 0ee64169..36611703 100644 --- a/AssemblyServer-x64/Program.cs +++ b/AssemblyServer-x64/Program.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyServer-x64/Properties/AssemblyInfo.cs b/AssemblyServer-x64/Properties/AssemblyInfo.cs index 3c2025df..76ca6b81 100644 --- a/AssemblyServer-x64/Properties/AssemblyInfo.cs +++ b/AssemblyServer-x64/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AssemblyServer-x64")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/AssemblyServer/Program.cs b/AssemblyServer/Program.cs index 13075930..bb22fd7a 100644 --- a/AssemblyServer/Program.cs +++ b/AssemblyServer/Program.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/AssemblyServer/Properties/AssemblyInfo.cs b/AssemblyServer/Properties/AssemblyInfo.cs index 9572e6f1..f3040761 100644 --- a/AssemblyServer/Properties/AssemblyInfo.cs +++ b/AssemblyServer/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AssemblyServer")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/LICENSE.de4dot.txt b/LICENSE.de4dot.txt index 84079eda..7f5a9468 100644 --- a/LICENSE.de4dot.txt +++ b/LICENSE.de4dot.txt @@ -1,5 +1,5 @@ - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/LICENSE.dnlib.txt b/LICENSE.dnlib.txt index 870ec190..aafeb7bc 100644 --- a/LICENSE.dnlib.txt +++ b/LICENSE.dnlib.txt @@ -1,5 +1,5 @@ - Copyright (C) 2012-2013 de4dot@gmail.com + Copyright (C) 2012-2014 de4dot@gmail.com Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/Test.Rename.Dll/Properties/AssemblyInfo.cs b/Test.Rename.Dll/Properties/AssemblyInfo.cs index 1b9b01cc..c469fe85 100644 --- a/Test.Rename.Dll/Properties/AssemblyInfo.cs +++ b/Test.Rename.Dll/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Test.Rename.Dll")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/Test.Rename.Dll/Tests.cs b/Test.Rename.Dll/Tests.cs index aaf45d3b..c7761300 100644 --- a/Test.Rename.Dll/Tests.cs +++ b/Test.Rename.Dll/Tests.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/Test.Rename/Program.cs b/Test.Rename/Program.cs index 0dd6eb15..4e3417e1 100644 --- a/Test.Rename/Program.cs +++ b/Test.Rename/Program.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/Test.Rename/Properties/AssemblyInfo.cs b/Test.Rename/Properties/AssemblyInfo.cs index 18b1b812..0b60d049 100644 --- a/Test.Rename/Properties/AssemblyInfo.cs +++ b/Test.Rename/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Test.Rename")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/de4dot-x64/Program.cs b/de4dot-x64/Program.cs index c94d19d2..445a281c 100644 --- a/de4dot-x64/Program.cs +++ b/de4dot-x64/Program.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot-x64/Properties/AssemblyInfo.cs b/de4dot-x64/Properties/AssemblyInfo.cs index 7a684000..13667790 100644 --- a/de4dot-x64/Properties/AssemblyInfo.cs +++ b/de4dot-x64/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("de4dot-x64")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/de4dot.blocks/BaseBlock.cs b/de4dot.blocks/BaseBlock.cs index 9f06eb47..8974750d 100644 --- a/de4dot.blocks/BaseBlock.cs +++ b/de4dot.blocks/BaseBlock.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/Block.cs b/de4dot.blocks/Block.cs index 7abf41f9..e7a3a67a 100644 --- a/de4dot.blocks/Block.cs +++ b/de4dot.blocks/Block.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/Blocks.cs b/de4dot.blocks/Blocks.cs index 3f507636..1e9583c2 100644 --- a/de4dot.blocks/Blocks.cs +++ b/de4dot.blocks/Blocks.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/BlocksSorter.cs b/de4dot.blocks/BlocksSorter.cs index 484f8f1c..a70a7b10 100644 --- a/de4dot.blocks/BlocksSorter.cs +++ b/de4dot.blocks/BlocksSorter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/CodeGenerator.cs b/de4dot.blocks/CodeGenerator.cs index 09a822b4..7c8a96b3 100644 --- a/de4dot.blocks/CodeGenerator.cs +++ b/de4dot.blocks/CodeGenerator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/DeadBlocksRemover.cs b/de4dot.blocks/DeadBlocksRemover.cs index b89836b4..bf9718bb 100644 --- a/de4dot.blocks/DeadBlocksRemover.cs +++ b/de4dot.blocks/DeadBlocksRemover.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/DotNetUtils.cs b/de4dot.blocks/DotNetUtils.cs index 55ba7276..89bd176d 100644 --- a/de4dot.blocks/DotNetUtils.cs +++ b/de4dot.blocks/DotNetUtils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/DumpedMethod.cs b/de4dot.blocks/DumpedMethod.cs index d04f934e..b6aa81b4 100644 --- a/de4dot.blocks/DumpedMethod.cs +++ b/de4dot.blocks/DumpedMethod.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/DumpedMethods.cs b/de4dot.blocks/DumpedMethods.cs index 60a1e025..e6dd88ae 100644 --- a/de4dot.blocks/DumpedMethods.cs +++ b/de4dot.blocks/DumpedMethods.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/FilterHandlerBlock.cs b/de4dot.blocks/FilterHandlerBlock.cs index b2a3cfaf..8c1f1493 100644 --- a/de4dot.blocks/FilterHandlerBlock.cs +++ b/de4dot.blocks/FilterHandlerBlock.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/ForwardScanOrder.cs b/de4dot.blocks/ForwardScanOrder.cs index a2029955..20de9c41 100644 --- a/de4dot.blocks/ForwardScanOrder.cs +++ b/de4dot.blocks/ForwardScanOrder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/GenericArgsSubstitutor.cs b/de4dot.blocks/GenericArgsSubstitutor.cs index c3eb01a2..17d83e66 100644 --- a/de4dot.blocks/GenericArgsSubstitutor.cs +++ b/de4dot.blocks/GenericArgsSubstitutor.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/HandlerBlock.cs b/de4dot.blocks/HandlerBlock.cs index 51534d8c..9cbce2ff 100644 --- a/de4dot.blocks/HandlerBlock.cs +++ b/de4dot.blocks/HandlerBlock.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/Instr.cs b/de4dot.blocks/Instr.cs index 6e166945..7b8444ac 100644 --- a/de4dot.blocks/Instr.cs +++ b/de4dot.blocks/Instr.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/InstructionListParser.cs b/de4dot.blocks/InstructionListParser.cs index b0f5ac6c..1d1bdc5f 100644 --- a/de4dot.blocks/InstructionListParser.cs +++ b/de4dot.blocks/InstructionListParser.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/MemberDefDict.cs b/de4dot.blocks/MemberDefDict.cs index ce02d4be..85c4f273 100644 --- a/de4dot.blocks/MemberDefDict.cs +++ b/de4dot.blocks/MemberDefDict.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/MethodBlocks.cs b/de4dot.blocks/MethodBlocks.cs index a58e1a08..761a8c25 100644 --- a/de4dot.blocks/MethodBlocks.cs +++ b/de4dot.blocks/MethodBlocks.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/Properties/AssemblyInfo.cs b/de4dot.blocks/Properties/AssemblyInfo.cs index e8e8d298..b05b48f5 100644 --- a/de4dot.blocks/Properties/AssemblyInfo.cs +++ b/de4dot.blocks/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("de4dot.blocks")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/de4dot.blocks/ScopeBlock.cs b/de4dot.blocks/ScopeBlock.cs index 952cc155..dbaaa058 100644 --- a/de4dot.blocks/ScopeBlock.cs +++ b/de4dot.blocks/ScopeBlock.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/StackTracePatcher.cs b/de4dot.blocks/StackTracePatcher.cs index 1d4334f7..932a905a 100644 --- a/de4dot.blocks/StackTracePatcher.cs +++ b/de4dot.blocks/StackTracePatcher.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/TryBlock.cs b/de4dot.blocks/TryBlock.cs index a1ac3246..f9fae54a 100644 --- a/de4dot.blocks/TryBlock.cs +++ b/de4dot.blocks/TryBlock.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/TryHandlerBlock.cs b/de4dot.blocks/TryHandlerBlock.cs index 906ceaf5..588beae2 100644 --- a/de4dot.blocks/TryHandlerBlock.cs +++ b/de4dot.blocks/TryHandlerBlock.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/Utils.cs b/de4dot.blocks/Utils.cs index 80cb953d..e8bb49fa 100644 --- a/de4dot.blocks/Utils.cs +++ b/de4dot.blocks/Utils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/BlockCflowDeobfuscator.cs b/de4dot.blocks/cflow/BlockCflowDeobfuscator.cs index 3bc44f1f..50bb9489 100644 --- a/de4dot.blocks/cflow/BlockCflowDeobfuscator.cs +++ b/de4dot.blocks/cflow/BlockCflowDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/BlockDeobfuscator.cs b/de4dot.blocks/cflow/BlockDeobfuscator.cs index 777f2d33..0ad0f995 100644 --- a/de4dot.blocks/cflow/BlockDeobfuscator.cs +++ b/de4dot.blocks/cflow/BlockDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/BlocksCflowDeobfuscator.cs b/de4dot.blocks/cflow/BlocksCflowDeobfuscator.cs index c2a6cd99..61f008c4 100644 --- a/de4dot.blocks/cflow/BlocksCflowDeobfuscator.cs +++ b/de4dot.blocks/cflow/BlocksCflowDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/BranchEmulator.cs b/de4dot.blocks/cflow/BranchEmulator.cs index f71e1d2d..3e3f71a1 100644 --- a/de4dot.blocks/cflow/BranchEmulator.cs +++ b/de4dot.blocks/cflow/BranchEmulator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/CachedCflowDeobfuscator.cs b/de4dot.blocks/cflow/CachedCflowDeobfuscator.cs index 4cb373a2..2100ed2f 100644 --- a/de4dot.blocks/cflow/CachedCflowDeobfuscator.cs +++ b/de4dot.blocks/cflow/CachedCflowDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/CflowDeobfuscator.cs b/de4dot.blocks/cflow/CflowDeobfuscator.cs index de24048a..630ac654 100644 --- a/de4dot.blocks/cflow/CflowDeobfuscator.cs +++ b/de4dot.blocks/cflow/CflowDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/CflowUtils.cs b/de4dot.blocks/cflow/CflowUtils.cs index 401f75d1..4957bd1a 100644 --- a/de4dot.blocks/cflow/CflowUtils.cs +++ b/de4dot.blocks/cflow/CflowUtils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/ConstantsFolder.cs b/de4dot.blocks/cflow/ConstantsFolder.cs index 9a600dfa..a740fa45 100644 --- a/de4dot.blocks/cflow/ConstantsFolder.cs +++ b/de4dot.blocks/cflow/ConstantsFolder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/DeadCodeRemover.cs b/de4dot.blocks/cflow/DeadCodeRemover.cs index e882b679..0b2fd742 100644 --- a/de4dot.blocks/cflow/DeadCodeRemover.cs +++ b/de4dot.blocks/cflow/DeadCodeRemover.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/DeadStoreRemover.cs b/de4dot.blocks/cflow/DeadStoreRemover.cs index d0886837..beb43c00 100644 --- a/de4dot.blocks/cflow/DeadStoreRemover.cs +++ b/de4dot.blocks/cflow/DeadStoreRemover.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/DupBlockDeobfuscator.cs b/de4dot.blocks/cflow/DupBlockDeobfuscator.cs index 7060ea2e..eee0d3f1 100644 --- a/de4dot.blocks/cflow/DupBlockDeobfuscator.cs +++ b/de4dot.blocks/cflow/DupBlockDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/IBlocksDeobfuscator.cs b/de4dot.blocks/cflow/IBlocksDeobfuscator.cs index 5d08607a..0a0b5860 100644 --- a/de4dot.blocks/cflow/IBlocksDeobfuscator.cs +++ b/de4dot.blocks/cflow/IBlocksDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/ICflowDeobfuscator.cs b/de4dot.blocks/cflow/ICflowDeobfuscator.cs index 9f2358de..b4f06437 100644 --- a/de4dot.blocks/cflow/ICflowDeobfuscator.cs +++ b/de4dot.blocks/cflow/ICflowDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/InstructionEmulator.cs b/de4dot.blocks/cflow/InstructionEmulator.cs index a829d02a..f42bdff6 100644 --- a/de4dot.blocks/cflow/InstructionEmulator.cs +++ b/de4dot.blocks/cflow/InstructionEmulator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/Int32Value.cs b/de4dot.blocks/cflow/Int32Value.cs index bb838288..0fb8d400 100644 --- a/de4dot.blocks/cflow/Int32Value.cs +++ b/de4dot.blocks/cflow/Int32Value.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/Int64Value.cs b/de4dot.blocks/cflow/Int64Value.cs index 48a236e3..2ead373c 100644 --- a/de4dot.blocks/cflow/Int64Value.cs +++ b/de4dot.blocks/cflow/Int64Value.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/MethodCallInliner.cs b/de4dot.blocks/cflow/MethodCallInliner.cs index 4265e706..effe991a 100644 --- a/de4dot.blocks/cflow/MethodCallInliner.cs +++ b/de4dot.blocks/cflow/MethodCallInliner.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/MethodCallInlinerBase.cs b/de4dot.blocks/cflow/MethodCallInlinerBase.cs index d8ed9247..25224048 100644 --- a/de4dot.blocks/cflow/MethodCallInlinerBase.cs +++ b/de4dot.blocks/cflow/MethodCallInlinerBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/Real8Value.cs b/de4dot.blocks/cflow/Real8Value.cs index 5087046d..77206e5a 100644 --- a/de4dot.blocks/cflow/Real8Value.cs +++ b/de4dot.blocks/cflow/Real8Value.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/StLdlocFixer.cs b/de4dot.blocks/cflow/StLdlocFixer.cs index 2476b13f..9496ba6a 100644 --- a/de4dot.blocks/cflow/StLdlocFixer.cs +++ b/de4dot.blocks/cflow/StLdlocFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/SwitchCflowDeobfuscator.cs b/de4dot.blocks/cflow/SwitchCflowDeobfuscator.cs index abec82b8..2bc3f166 100644 --- a/de4dot.blocks/cflow/SwitchCflowDeobfuscator.cs +++ b/de4dot.blocks/cflow/SwitchCflowDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/Value.cs b/de4dot.blocks/cflow/Value.cs index bbb54a8c..455b46ad 100644 --- a/de4dot.blocks/cflow/Value.cs +++ b/de4dot.blocks/cflow/Value.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.blocks/cflow/ValueStack.cs b/de4dot.blocks/cflow/ValueStack.cs index d301d043..b8f7362d 100644 --- a/de4dot.blocks/cflow/ValueStack.cs +++ b/de4dot.blocks/cflow/ValueStack.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/AssemblyClient/AssemblyClient.cs b/de4dot.code/AssemblyClient/AssemblyClient.cs index b6a01103..83e7a3c5 100644 --- a/de4dot.code/AssemblyClient/AssemblyClient.cs +++ b/de4dot.code/AssemblyClient/AssemblyClient.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/AssemblyClient/AssemblyClientFactory.cs b/de4dot.code/AssemblyClient/AssemblyClientFactory.cs index 83a1967b..fcc4b60c 100644 --- a/de4dot.code/AssemblyClient/AssemblyClientFactory.cs +++ b/de4dot.code/AssemblyClient/AssemblyClientFactory.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/AssemblyClient/IAssemblyClient.cs b/de4dot.code/AssemblyClient/IAssemblyClient.cs index 1b7a2547..926e0109 100644 --- a/de4dot.code/AssemblyClient/IAssemblyClient.cs +++ b/de4dot.code/AssemblyClient/IAssemblyClient.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/AssemblyClient/IAssemblyServerLoader.cs b/de4dot.code/AssemblyClient/IAssemblyServerLoader.cs index 958c8f1e..72dff479 100644 --- a/de4dot.code/AssemblyClient/IAssemblyServerLoader.cs +++ b/de4dot.code/AssemblyClient/IAssemblyServerLoader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/AssemblyClient/IpcAssemblyServerLoader.cs b/de4dot.code/AssemblyClient/IpcAssemblyServerLoader.cs index f2af1232..d1388330 100644 --- a/de4dot.code/AssemblyClient/IpcAssemblyServerLoader.cs +++ b/de4dot.code/AssemblyClient/IpcAssemblyServerLoader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/AssemblyClient/NewAppDomainAssemblyServerLoader.cs b/de4dot.code/AssemblyClient/NewAppDomainAssemblyServerLoader.cs index f7521663..ffdbff3b 100644 --- a/de4dot.code/AssemblyClient/NewAppDomainAssemblyServerLoader.cs +++ b/de4dot.code/AssemblyClient/NewAppDomainAssemblyServerLoader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/AssemblyClient/NewProcessAssemblyServerLoader.cs b/de4dot.code/AssemblyClient/NewProcessAssemblyServerLoader.cs index 9aa00537..9cc22b03 100644 --- a/de4dot.code/AssemblyClient/NewProcessAssemblyServerLoader.cs +++ b/de4dot.code/AssemblyClient/NewProcessAssemblyServerLoader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/AssemblyClient/SameAppDomainAssemblyServerLoader.cs b/de4dot.code/AssemblyClient/SameAppDomainAssemblyServerLoader.cs index 8cd8096b..f999309c 100644 --- a/de4dot.code/AssemblyClient/SameAppDomainAssemblyServerLoader.cs +++ b/de4dot.code/AssemblyClient/SameAppDomainAssemblyServerLoader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/AssemblyModule.cs b/de4dot.code/AssemblyModule.cs index e303a0c7..62c4f2a7 100644 --- a/de4dot.code/AssemblyModule.cs +++ b/de4dot.code/AssemblyModule.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/AssemblyResolver.cs b/de4dot.code/AssemblyResolver.cs index 717f6601..6f7656fc 100644 --- a/de4dot.code/AssemblyResolver.cs +++ b/de4dot.code/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/DeobfuscatorContext.cs b/de4dot.code/DeobfuscatorContext.cs index 2d7e85a2..352d049e 100644 --- a/de4dot.code/DeobfuscatorContext.cs +++ b/de4dot.code/DeobfuscatorContext.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/DumpedMethodsRestorer.cs b/de4dot.code/DumpedMethodsRestorer.cs index a1cb5bfa..ffd17f25 100644 --- a/de4dot.code/DumpedMethodsRestorer.cs +++ b/de4dot.code/DumpedMethodsRestorer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/HandleProcessCorruptedStateExceptionsAttribute.cs b/de4dot.code/HandleProcessCorruptedStateExceptionsAttribute.cs index 35fa3230..08f278be 100644 --- a/de4dot.code/HandleProcessCorruptedStateExceptionsAttribute.cs +++ b/de4dot.code/HandleProcessCorruptedStateExceptionsAttribute.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/IDeobfuscatorContext.cs b/de4dot.code/IDeobfuscatorContext.cs index ceb4d96b..d0dad4af 100644 --- a/de4dot.code/IDeobfuscatorContext.cs +++ b/de4dot.code/IDeobfuscatorContext.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/IObfuscatedFile.cs b/de4dot.code/IObfuscatedFile.cs index 5d070dc7..cb66bce6 100644 --- a/de4dot.code/IObfuscatedFile.cs +++ b/de4dot.code/IObfuscatedFile.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/Logger.cs b/de4dot.code/Logger.cs index d6260709..098d21ff 100644 --- a/de4dot.code/Logger.cs +++ b/de4dot.code/Logger.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/MethodPrinter.cs b/de4dot.code/MethodPrinter.cs index 98b54777..5fb7a41d 100644 --- a/de4dot.code/MethodPrinter.cs +++ b/de4dot.code/MethodPrinter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/MethodReturnValueInliner.cs b/de4dot.code/MethodReturnValueInliner.cs index 20b2079d..e955fa26 100644 --- a/de4dot.code/MethodReturnValueInliner.cs +++ b/de4dot.code/MethodReturnValueInliner.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/NameRegexes.cs b/de4dot.code/NameRegexes.cs index d98572d6..f1e5035b 100644 --- a/de4dot.code/NameRegexes.cs +++ b/de4dot.code/NameRegexes.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/ObfuscatedFile.cs b/de4dot.code/ObfuscatedFile.cs index 9ca0057b..817fee3f 100644 --- a/de4dot.code/ObfuscatedFile.cs +++ b/de4dot.code/ObfuscatedFile.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/Option.cs b/de4dot.code/Option.cs index 5ee4e6fd..085881e8 100644 --- a/de4dot.code/Option.cs +++ b/de4dot.code/Option.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/PrintNewTokens.cs b/de4dot.code/PrintNewTokens.cs index 0ff4308a..060901c7 100644 --- a/de4dot.code/PrintNewTokens.cs +++ b/de4dot.code/PrintNewTokens.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/Properties/AssemblyInfo.cs b/de4dot.code/Properties/AssemblyInfo.cs index e7238177..84584d69 100644 --- a/de4dot.code/Properties/AssemblyInfo.cs +++ b/de4dot.code/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("de4dot.code")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/de4dot.code/StringInliner.cs b/de4dot.code/StringInliner.cs index ac77dc02..d280203f 100644 --- a/de4dot.code/StringInliner.cs +++ b/de4dot.code/StringInliner.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/UserException.cs b/de4dot.code/UserException.cs index 4f8910a0..9c3e7c77 100644 --- a/de4dot.code/UserException.cs +++ b/de4dot.code/UserException.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/Utils.cs b/de4dot.code/Utils.cs index d0a44dbe..b7b65400 100644 --- a/de4dot.code/Utils.cs +++ b/de4dot.code/Utils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/Win32Path.cs b/de4dot.code/Win32Path.cs index a2514b40..e0bc30b0 100644 --- a/de4dot.code/Win32Path.cs +++ b/de4dot.code/Win32Path.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/CliSecureRtType.cs b/de4dot.code/deobfuscators/Agile_NET/CliSecureRtType.cs index 3eb06f57..391869e3 100644 --- a/de4dot.code/deobfuscators/Agile_NET/CliSecureRtType.cs +++ b/de4dot.code/deobfuscators/Agile_NET/CliSecureRtType.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/CsBlowfish.cs b/de4dot.code/deobfuscators/Agile_NET/CsBlowfish.cs index e44cf195..891b50b4 100644 --- a/de4dot.code/deobfuscators/Agile_NET/CsBlowfish.cs +++ b/de4dot.code/deobfuscators/Agile_NET/CsBlowfish.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/Deobfuscator.cs b/de4dot.code/deobfuscators/Agile_NET/Deobfuscator.cs index 7c7df3fd..fd577753 100644 --- a/de4dot.code/deobfuscators/Agile_NET/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Agile_NET/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/MethodsDecrypter.cs b/de4dot.code/deobfuscators/Agile_NET/MethodsDecrypter.cs index b431aeff..3f0891e0 100644 --- a/de4dot.code/deobfuscators/Agile_NET/MethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/Agile_NET/MethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/ProxyCallFixer.cs b/de4dot.code/deobfuscators/Agile_NET/ProxyCallFixer.cs index d3de46d9..a3a7d8c9 100644 --- a/de4dot.code/deobfuscators/Agile_NET/ProxyCallFixer.cs +++ b/de4dot.code/deobfuscators/Agile_NET/ProxyCallFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/ResourceDecrypter.cs b/de4dot.code/deobfuscators/Agile_NET/ResourceDecrypter.cs index 53f5a9b2..c696f508 100644 --- a/de4dot.code/deobfuscators/Agile_NET/ResourceDecrypter.cs +++ b/de4dot.code/deobfuscators/Agile_NET/ResourceDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/StackFrameHelper.cs b/de4dot.code/deobfuscators/Agile_NET/StackFrameHelper.cs index a40d4290..03f8bd1e 100644 --- a/de4dot.code/deobfuscators/Agile_NET/StackFrameHelper.cs +++ b/de4dot.code/deobfuscators/Agile_NET/StackFrameHelper.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/StringDecrypter.cs b/de4dot.code/deobfuscators/Agile_NET/StringDecrypter.cs index b13cbea0..91bf919f 100644 --- a/de4dot.code/deobfuscators/Agile_NET/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Agile_NET/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs b/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs index 43a26c69..2843cd09 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/CilOperandInstructionRestorer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/CsvmDataReader.cs b/de4dot.code/deobfuscators/Agile_NET/vm/CsvmDataReader.cs index 60e810f5..5d844cdc 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/CsvmDataReader.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/CsvmDataReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/CsvmMethodData.cs b/de4dot.code/deobfuscators/Agile_NET/vm/CsvmMethodData.cs index 0e67d178..11a376ca 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/CsvmMethodData.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/CsvmMethodData.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/CsvmToCilMethodConverterBase.cs b/de4dot.code/deobfuscators/Agile_NET/vm/CsvmToCilMethodConverterBase.cs index 00757dab..b9726049 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/CsvmToCilMethodConverterBase.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/CsvmToCilMethodConverterBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/VmOperand.cs b/de4dot.code/deobfuscators/Agile_NET/vm/VmOperand.cs index 03cde6c4..5163cbd3 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/VmOperand.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/VmOperand.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v1/Csvm.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v1/Csvm.cs index 60860204..46f52f30 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v1/Csvm.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v1/Csvm.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v1/CsvmToCilMethodConverter.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v1/CsvmToCilMethodConverter.cs index 93516c18..ac039506 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v1/CsvmToCilMethodConverter.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v1/CsvmToCilMethodConverter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v1/FieldsInfo.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v1/FieldsInfo.cs index 875d349d..7cb6ed27 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v1/FieldsInfo.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v1/FieldsInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v1/OpCodeHandler.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v1/OpCodeHandler.cs index 9c572780..81475049 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v1/OpCodeHandler.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v1/OpCodeHandler.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v1/OpCodeHandlers.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v1/OpCodeHandlers.cs index aa8419a3..b81da437 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v1/OpCodeHandlers.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v1/OpCodeHandlers.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v1/UnknownHandlerInfo.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v1/UnknownHandlerInfo.cs index b2a08276..bb5c295b 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v1/UnknownHandlerInfo.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v1/UnknownHandlerInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v1/VmOpCodeHandlerDetector.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v1/VmOpCodeHandlerDetector.cs index b06ca9c8..34daadb0 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v1/VmOpCodeHandlerDetector.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v1/VmOpCodeHandlerDetector.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeHandlerDetector.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeHandlerDetector.cs index fc0452e6..56900000 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeHandlerDetector.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeHandlerDetector.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeOpCodeHandler.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeOpCodeHandler.cs index cc6afe0e..c3fff699 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeOpCodeHandler.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CompositeOpCodeHandler.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/Csvm.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/Csvm.cs index 9b6f0c10..2669502f 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/Csvm.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/Csvm.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmInfo.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmInfo.cs index a5d1c557..11ebea38 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmInfo.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmToCilMethodConverter.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmToCilMethodConverter.cs index 7d76cf59..9c25af10 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmToCilMethodConverter.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/CsvmToCilMethodConverter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/HandlerTypeCode.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/HandlerTypeCode.cs index d679c54d..07382b9e 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/HandlerTypeCode.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/HandlerTypeCode.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfo.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfo.cs index 1d07cf95..71f8d327 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfo.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfoReader.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfoReader.cs index 96721152..dd92c2bc 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfoReader.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfoReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfos.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfos.cs index a78753b8..f70dc4aa 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfos.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/OpCodeHandlerInfos.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/SigCreator.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/SigCreator.cs index 0206b16f..e9261a4a 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/SigCreator.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/SigCreator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCode.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCode.cs index 10bc1beb..81d98ecb 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCode.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCode.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCodeHandlerDetector.cs b/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCodeHandlerDetector.cs index c5e56d55..a6431820 100644 --- a/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCodeHandlerDetector.cs +++ b/de4dot.code/deobfuscators/Agile_NET/vm/v2/VmOpCodeHandlerDetector.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ArrayFinder.cs b/de4dot.code/deobfuscators/ArrayFinder.cs index af7ccc1b..f23f631b 100644 --- a/de4dot.code/deobfuscators/ArrayFinder.cs +++ b/de4dot.code/deobfuscators/ArrayFinder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/AssemblyResolver.cs b/de4dot.code/deobfuscators/Babel_NET/AssemblyResolver.cs index 86c9a7d3..e66a2ec9 100644 --- a/de4dot.code/deobfuscators/Babel_NET/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/Babel_NET/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/BabelInflater.cs b/de4dot.code/deobfuscators/Babel_NET/BabelInflater.cs index 2bc82b0d..130d5507 100644 --- a/de4dot.code/deobfuscators/Babel_NET/BabelInflater.cs +++ b/de4dot.code/deobfuscators/Babel_NET/BabelInflater.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/BabelMethodCallInliner.cs b/de4dot.code/deobfuscators/Babel_NET/BabelMethodCallInliner.cs index 88623545..b55150ce 100644 --- a/de4dot.code/deobfuscators/Babel_NET/BabelMethodCallInliner.cs +++ b/de4dot.code/deobfuscators/Babel_NET/BabelMethodCallInliner.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/BabelUtils.cs b/de4dot.code/deobfuscators/Babel_NET/BabelUtils.cs index 9f6f2da0..9c1adf5c 100644 --- a/de4dot.code/deobfuscators/Babel_NET/BabelUtils.cs +++ b/de4dot.code/deobfuscators/Babel_NET/BabelUtils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/ConstantsDecrypter.cs b/de4dot.code/deobfuscators/Babel_NET/ConstantsDecrypter.cs index eb22001f..642e826e 100644 --- a/de4dot.code/deobfuscators/Babel_NET/ConstantsDecrypter.cs +++ b/de4dot.code/deobfuscators/Babel_NET/ConstantsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/Deobfuscator.cs b/de4dot.code/deobfuscators/Babel_NET/Deobfuscator.cs index 1874a634..32dd7aef 100644 --- a/de4dot.code/deobfuscators/Babel_NET/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Babel_NET/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/ImageReader.cs b/de4dot.code/deobfuscators/Babel_NET/ImageReader.cs index 4051a703..a8f44ba1 100644 --- a/de4dot.code/deobfuscators/Babel_NET/ImageReader.cs +++ b/de4dot.code/deobfuscators/Babel_NET/ImageReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/InflaterCreator.cs b/de4dot.code/deobfuscators/Babel_NET/InflaterCreator.cs index be9e0a6f..d70f2b80 100644 --- a/de4dot.code/deobfuscators/Babel_NET/InflaterCreator.cs +++ b/de4dot.code/deobfuscators/Babel_NET/InflaterCreator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/MemberReferenceConverter.cs b/de4dot.code/deobfuscators/Babel_NET/MemberReferenceConverter.cs index 90e02215..3709d977 100644 --- a/de4dot.code/deobfuscators/Babel_NET/MemberReferenceConverter.cs +++ b/de4dot.code/deobfuscators/Babel_NET/MemberReferenceConverter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/MethodBodyReader.cs b/de4dot.code/deobfuscators/Babel_NET/MethodBodyReader.cs index 6f0a9d19..2a570a18 100644 --- a/de4dot.code/deobfuscators/Babel_NET/MethodBodyReader.cs +++ b/de4dot.code/deobfuscators/Babel_NET/MethodBodyReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/MethodReferenceReader.cs b/de4dot.code/deobfuscators/Babel_NET/MethodReferenceReader.cs index e2dfd417..7ee8410b 100644 --- a/de4dot.code/deobfuscators/Babel_NET/MethodReferenceReader.cs +++ b/de4dot.code/deobfuscators/Babel_NET/MethodReferenceReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/MethodsDecrypter.cs b/de4dot.code/deobfuscators/Babel_NET/MethodsDecrypter.cs index 72fdf49f..b90bf488 100644 --- a/de4dot.code/deobfuscators/Babel_NET/MethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/Babel_NET/MethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/ProxyCallFixer.cs b/de4dot.code/deobfuscators/Babel_NET/ProxyCallFixer.cs index 12b5625e..7f0896f1 100644 --- a/de4dot.code/deobfuscators/Babel_NET/ProxyCallFixer.cs +++ b/de4dot.code/deobfuscators/Babel_NET/ProxyCallFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/ResourceDecrypter.cs b/de4dot.code/deobfuscators/Babel_NET/ResourceDecrypter.cs index 6aad0fc2..bd48330c 100644 --- a/de4dot.code/deobfuscators/Babel_NET/ResourceDecrypter.cs +++ b/de4dot.code/deobfuscators/Babel_NET/ResourceDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/ResourceResolver.cs b/de4dot.code/deobfuscators/Babel_NET/ResourceResolver.cs index c5cc11ef..38dc72ea 100644 --- a/de4dot.code/deobfuscators/Babel_NET/ResourceResolver.cs +++ b/de4dot.code/deobfuscators/Babel_NET/ResourceResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Babel_NET/StringDecrypter.cs b/de4dot.code/deobfuscators/Babel_NET/StringDecrypter.cs index 77b4f663..196539d8 100644 --- a/de4dot.code/deobfuscators/Babel_NET/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Babel_NET/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Blowfish.cs b/de4dot.code/deobfuscators/Blowfish.cs index 13a8161b..55d35715 100644 --- a/de4dot.code/deobfuscators/Blowfish.cs +++ b/de4dot.code/deobfuscators/Blowfish.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CRC32.cs b/de4dot.code/deobfuscators/CRC32.cs index f9e706fd..c3f094a1 100644 --- a/de4dot.code/deobfuscators/CRC32.cs +++ b/de4dot.code/deobfuscators/CRC32.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeFort/AssemblyData.cs b/de4dot.code/deobfuscators/CodeFort/AssemblyData.cs index 2c3c5556..a69cb952 100644 --- a/de4dot.code/deobfuscators/CodeFort/AssemblyData.cs +++ b/de4dot.code/deobfuscators/CodeFort/AssemblyData.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeFort/AssemblyDecrypter.cs b/de4dot.code/deobfuscators/CodeFort/AssemblyDecrypter.cs index d60b3b72..82c3b559 100644 --- a/de4dot.code/deobfuscators/CodeFort/AssemblyDecrypter.cs +++ b/de4dot.code/deobfuscators/CodeFort/AssemblyDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeFort/CfMethodCallInliner.cs b/de4dot.code/deobfuscators/CodeFort/CfMethodCallInliner.cs index b4a0d307..7a10c926 100644 --- a/de4dot.code/deobfuscators/CodeFort/CfMethodCallInliner.cs +++ b/de4dot.code/deobfuscators/CodeFort/CfMethodCallInliner.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeFort/Deobfuscator.cs b/de4dot.code/deobfuscators/CodeFort/Deobfuscator.cs index d4638e73..d8a5b879 100644 --- a/de4dot.code/deobfuscators/CodeFort/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/CodeFort/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeFort/PasswordFinder.cs b/de4dot.code/deobfuscators/CodeFort/PasswordFinder.cs index ab2e624d..3b8bfeba 100644 --- a/de4dot.code/deobfuscators/CodeFort/PasswordFinder.cs +++ b/de4dot.code/deobfuscators/CodeFort/PasswordFinder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeFort/ProxyCallFixer.cs b/de4dot.code/deobfuscators/CodeFort/ProxyCallFixer.cs index 352beac0..2f270d37 100644 --- a/de4dot.code/deobfuscators/CodeFort/ProxyCallFixer.cs +++ b/de4dot.code/deobfuscators/CodeFort/ProxyCallFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeFort/StringDecrypter.cs b/de4dot.code/deobfuscators/CodeFort/StringDecrypter.cs index ed9641b2..14ac8f1a 100644 --- a/de4dot.code/deobfuscators/CodeFort/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/CodeFort/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/AssemblyResolver.cs b/de4dot.code/deobfuscators/CodeVeil/AssemblyResolver.cs index ed2bc9f7..5f380bce 100644 --- a/de4dot.code/deobfuscators/CodeVeil/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/CodeVeil/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/Deobfuscator.cs b/de4dot.code/deobfuscators/CodeVeil/Deobfuscator.cs index 0b57c0ee..7e7e7bc3 100644 --- a/de4dot.code/deobfuscators/CodeVeil/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/CodeVeil/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/ErexResourceReader.cs b/de4dot.code/deobfuscators/CodeVeil/ErexResourceReader.cs index e2ce48cf..c59427b2 100644 --- a/de4dot.code/deobfuscators/CodeVeil/ErexResourceReader.cs +++ b/de4dot.code/deobfuscators/CodeVeil/ErexResourceReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/InvalidDataException.cs b/de4dot.code/deobfuscators/CodeVeil/InvalidDataException.cs index b2b8e993..2eb05b7e 100644 --- a/de4dot.code/deobfuscators/CodeVeil/InvalidDataException.cs +++ b/de4dot.code/deobfuscators/CodeVeil/InvalidDataException.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/InvalidMethodsFinder.cs b/de4dot.code/deobfuscators/CodeVeil/InvalidMethodsFinder.cs index fba61b40..3f95a7f0 100644 --- a/de4dot.code/deobfuscators/CodeVeil/InvalidMethodsFinder.cs +++ b/de4dot.code/deobfuscators/CodeVeil/InvalidMethodsFinder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/MainType.cs b/de4dot.code/deobfuscators/CodeVeil/MainType.cs index 870a7155..d2797cac 100644 --- a/de4dot.code/deobfuscators/CodeVeil/MainType.cs +++ b/de4dot.code/deobfuscators/CodeVeil/MainType.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/MethodsDecrypter.cs b/de4dot.code/deobfuscators/CodeVeil/MethodsDecrypter.cs index 58df9d4f..8beefbfd 100644 --- a/de4dot.code/deobfuscators/CodeVeil/MethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/CodeVeil/MethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/ObfuscatorVersion.cs b/de4dot.code/deobfuscators/CodeVeil/ObfuscatorVersion.cs index 93be510b..775901c4 100644 --- a/de4dot.code/deobfuscators/CodeVeil/ObfuscatorVersion.cs +++ b/de4dot.code/deobfuscators/CodeVeil/ObfuscatorVersion.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/ProxyCallFixer.cs b/de4dot.code/deobfuscators/CodeVeil/ProxyCallFixer.cs index 2725afe9..0e2fd077 100644 --- a/de4dot.code/deobfuscators/CodeVeil/ProxyCallFixer.cs +++ b/de4dot.code/deobfuscators/CodeVeil/ProxyCallFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/ResourceConverter.cs b/de4dot.code/deobfuscators/CodeVeil/ResourceConverter.cs index ca0fd414..a5db07a5 100644 --- a/de4dot.code/deobfuscators/CodeVeil/ResourceConverter.cs +++ b/de4dot.code/deobfuscators/CodeVeil/ResourceConverter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/ResourceDecrypter.cs b/de4dot.code/deobfuscators/CodeVeil/ResourceDecrypter.cs index 4a9bc10e..41f6de1b 100644 --- a/de4dot.code/deobfuscators/CodeVeil/ResourceDecrypter.cs +++ b/de4dot.code/deobfuscators/CodeVeil/ResourceDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/ResourceInfo.cs b/de4dot.code/deobfuscators/CodeVeil/ResourceInfo.cs index 9b9c2d14..df73cac3 100644 --- a/de4dot.code/deobfuscators/CodeVeil/ResourceInfo.cs +++ b/de4dot.code/deobfuscators/CodeVeil/ResourceInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/ResourceReader.cs b/de4dot.code/deobfuscators/CodeVeil/ResourceReader.cs index c06f3c07..48f8f6b8 100644 --- a/de4dot.code/deobfuscators/CodeVeil/ResourceReader.cs +++ b/de4dot.code/deobfuscators/CodeVeil/ResourceReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/StringDecrypter.cs b/de4dot.code/deobfuscators/CodeVeil/StringDecrypter.cs index 28be23b4..c714e573 100644 --- a/de4dot.code/deobfuscators/CodeVeil/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/CodeVeil/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeVeil/TamperDetection.cs b/de4dot.code/deobfuscators/CodeVeil/TamperDetection.cs index d80c1589..d008e351 100644 --- a/de4dot.code/deobfuscators/CodeVeil/TamperDetection.cs +++ b/de4dot.code/deobfuscators/CodeVeil/TamperDetection.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeWall/AssemblyDecrypter.cs b/de4dot.code/deobfuscators/CodeWall/AssemblyDecrypter.cs index 970d28a5..72fac6c3 100644 --- a/de4dot.code/deobfuscators/CodeWall/AssemblyDecrypter.cs +++ b/de4dot.code/deobfuscators/CodeWall/AssemblyDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeWall/Deobfuscator.cs b/de4dot.code/deobfuscators/CodeWall/Deobfuscator.cs index 6954c380..0407175b 100644 --- a/de4dot.code/deobfuscators/CodeWall/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/CodeWall/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeWall/KeyGenerator.cs b/de4dot.code/deobfuscators/CodeWall/KeyGenerator.cs index 7db36dbb..5c2764af 100644 --- a/de4dot.code/deobfuscators/CodeWall/KeyGenerator.cs +++ b/de4dot.code/deobfuscators/CodeWall/KeyGenerator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeWall/MethodsDecrypter.cs b/de4dot.code/deobfuscators/CodeWall/MethodsDecrypter.cs index 025fc0eb..1658b307 100644 --- a/de4dot.code/deobfuscators/CodeWall/MethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/CodeWall/MethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CodeWall/StringDecrypter.cs b/de4dot.code/deobfuscators/CodeWall/StringDecrypter.cs index ff1dea7e..be76e3d3 100644 --- a/de4dot.code/deobfuscators/CodeWall/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/CodeWall/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ConstantsReader.cs b/de4dot.code/deobfuscators/ConstantsReader.cs index ab5f97f6..ed4f1ef2 100644 --- a/de4dot.code/deobfuscators/ConstantsReader.cs +++ b/de4dot.code/deobfuscators/ConstantsReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs b/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs index b611aac3..c77115c0 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/AntiDebugger.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/AssemblyResolver.cs b/de4dot.code/deobfuscators/CryptoObfuscator/AssemblyResolver.cs index cd13f7f5..2475d268 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/CoMethodCallInliner.cs b/de4dot.code/deobfuscators/CryptoObfuscator/CoMethodCallInliner.cs index d632ff43..bfc8f1f7 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/CoMethodCallInliner.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/CoMethodCallInliner.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/CoUtils.cs b/de4dot.code/deobfuscators/CryptoObfuscator/CoUtils.cs index 96fb28c2..adab868e 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/CoUtils.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/CoUtils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ConstantsDecrypter.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ConstantsDecrypter.cs index 18ff0ee0..9021aeed 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/ConstantsDecrypter.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/ConstantsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs b/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs index d0bb765f..4115c9d5 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/InlinedMethodTypes.cs b/de4dot.code/deobfuscators/CryptoObfuscator/InlinedMethodTypes.cs index 929c80f9..e40a4118 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/InlinedMethodTypes.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/InlinedMethodTypes.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/LdnullFixer.cs b/de4dot.code/deobfuscators/CryptoObfuscator/LdnullFixer.cs index 3337153b..74478f52 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/LdnullFixer.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/LdnullFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/MethodBodyReader.cs b/de4dot.code/deobfuscators/CryptoObfuscator/MethodBodyReader.cs index 72c4e377..760ffcd3 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/MethodBodyReader.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/MethodBodyReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/MethodsDecrypter.cs b/de4dot.code/deobfuscators/CryptoObfuscator/MethodsDecrypter.cs index 18f32d0a..b91981a6 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/MethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/MethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ProxyCallFixer.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ProxyCallFixer.cs index 320b1f26..b296ff6c 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/ProxyCallFixer.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/ProxyCallFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs index 314ba0b8..b4288131 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs index 67c3eaa7..e452cee3 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/ResourceResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/StringDecrypter.cs b/de4dot.code/deobfuscators/CryptoObfuscator/StringDecrypter.cs index 994fc845..6ce41a34 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs b/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs index 22cc18e1..1a44a36a 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/TamperDetection.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/ArrayBlockDeobfuscator.cs b/de4dot.code/deobfuscators/DeepSea/ArrayBlockDeobfuscator.cs index 32bbeb7e..610eec2e 100644 --- a/de4dot.code/deobfuscators/DeepSea/ArrayBlockDeobfuscator.cs +++ b/de4dot.code/deobfuscators/DeepSea/ArrayBlockDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/ArrayBlockState.cs b/de4dot.code/deobfuscators/DeepSea/ArrayBlockState.cs index 3ce602dd..a3fda1ff 100644 --- a/de4dot.code/deobfuscators/DeepSea/ArrayBlockState.cs +++ b/de4dot.code/deobfuscators/DeepSea/ArrayBlockState.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/AssemblyResolver.cs b/de4dot.code/deobfuscators/DeepSea/AssemblyResolver.cs index d42752b4..f7c5348f 100644 --- a/de4dot.code/deobfuscators/DeepSea/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/DeepSea/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/CastDeobfuscator.cs b/de4dot.code/deobfuscators/DeepSea/CastDeobfuscator.cs index 635a59ff..b26fe8f8 100644 --- a/de4dot.code/deobfuscators/DeepSea/CastDeobfuscator.cs +++ b/de4dot.code/deobfuscators/DeepSea/CastDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/Deobfuscator.cs b/de4dot.code/deobfuscators/DeepSea/Deobfuscator.cs index 27aed66c..09f76bcd 100644 --- a/de4dot.code/deobfuscators/DeepSea/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/DeepSea/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/DsConstantsReader.cs b/de4dot.code/deobfuscators/DeepSea/DsConstantsReader.cs index f184ecb3..aa918bb9 100644 --- a/de4dot.code/deobfuscators/DeepSea/DsConstantsReader.cs +++ b/de4dot.code/deobfuscators/DeepSea/DsConstantsReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/DsInlinedMethodsFinder.cs b/de4dot.code/deobfuscators/DeepSea/DsInlinedMethodsFinder.cs index 4df877eb..36442260 100644 --- a/de4dot.code/deobfuscators/DeepSea/DsInlinedMethodsFinder.cs +++ b/de4dot.code/deobfuscators/DeepSea/DsInlinedMethodsFinder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/DsMethodCallInliner.cs b/de4dot.code/deobfuscators/DeepSea/DsMethodCallInliner.cs index 7da4cc1d..27b50509 100644 --- a/de4dot.code/deobfuscators/DeepSea/DsMethodCallInliner.cs +++ b/de4dot.code/deobfuscators/DeepSea/DsMethodCallInliner.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/DsUtils.cs b/de4dot.code/deobfuscators/DeepSea/DsUtils.cs index 0392d8b0..cf9ca030 100644 --- a/de4dot.code/deobfuscators/DeepSea/DsUtils.cs +++ b/de4dot.code/deobfuscators/DeepSea/DsUtils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/FieldsRestorer.cs b/de4dot.code/deobfuscators/DeepSea/FieldsRestorer.cs index 603e2a9d..f2e6b753 100644 --- a/de4dot.code/deobfuscators/DeepSea/FieldsRestorer.cs +++ b/de4dot.code/deobfuscators/DeepSea/FieldsRestorer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/ResolverBase.cs b/de4dot.code/deobfuscators/DeepSea/ResolverBase.cs index a4c291e0..b7ce18c3 100644 --- a/de4dot.code/deobfuscators/DeepSea/ResolverBase.cs +++ b/de4dot.code/deobfuscators/DeepSea/ResolverBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/ResourceResolver.cs b/de4dot.code/deobfuscators/DeepSea/ResourceResolver.cs index 5301f666..eaabb0f3 100644 --- a/de4dot.code/deobfuscators/DeepSea/ResourceResolver.cs +++ b/de4dot.code/deobfuscators/DeepSea/ResourceResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeepSea/StringDecrypter.cs b/de4dot.code/deobfuscators/DeepSea/StringDecrypter.cs index 13c241d4..2ef1f269 100644 --- a/de4dot.code/deobfuscators/DeepSea/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/DeepSea/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeobUtils.cs b/de4dot.code/deobfuscators/DeobUtils.cs index fbb999dc..63ce733e 100644 --- a/de4dot.code/deobfuscators/DeobUtils.cs +++ b/de4dot.code/deobfuscators/DeobUtils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeobfuscatorBase.cs b/de4dot.code/deobfuscators/DeobfuscatorBase.cs index cd9c5a29..e3541f89 100644 --- a/de4dot.code/deobfuscators/DeobfuscatorBase.cs +++ b/de4dot.code/deobfuscators/DeobfuscatorBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs b/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs index 337d9225..2ef5981a 100644 --- a/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs +++ b/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs b/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs index 9b88edb7..c5f3c319 100644 --- a/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Dotfuscator/StringDecrypter.cs b/de4dot.code/deobfuscators/Dotfuscator/StringDecrypter.cs index 5576b00f..611dc5f4 100644 --- a/de4dot.code/deobfuscators/Dotfuscator/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Dotfuscator/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs index 5569d247..c2db6b1d 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/CodeCompilerMethodCallRestorer.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/CodeCompilerMethodCallRestorer.cs index 35e5b3eb..b1450ec2 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/CodeCompilerMethodCallRestorer.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/CodeCompilerMethodCallRestorer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/DecrypterType.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/DecrypterType.cs index c9b7f940..63fd1c9f 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/DecrypterType.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/DecrypterType.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/Deobfuscator.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/Deobfuscator.cs index 09f34441..80f81442 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/DynamicDynocodeIterator.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/DynamicDynocodeIterator.cs index 1d60eed1..61afb07d 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/DynamicDynocodeIterator.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/DynamicDynocodeIterator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/DynocodeService.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/DynocodeService.cs index 4c98d3d5..06371ab5 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/DynocodeService.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/DynocodeService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/EfConstantsReader.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/EfConstantsReader.cs index adbc7378..7b095928 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/EfConstantsReader.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/EfConstantsReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/EfUtils.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/EfUtils.cs index 201c6e1b..ccd1c8c2 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/EfUtils.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/EfUtils.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/ResourceMethodsRestorer.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/ResourceMethodsRestorer.cs index 96db8fe4..127e35e6 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/ResourceMethodsRestorer.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/ResourceMethodsRestorer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/ResourceResolver.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/ResourceResolver.cs index d32e25d6..3ff0482b 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/ResourceResolver.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/ResourceResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/StringDecrypter.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/StringDecrypter.cs index a4620bbb..da60a999 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Eazfuscator_NET/VersionDetector.cs b/de4dot.code/deobfuscators/Eazfuscator_NET/VersionDetector.cs index eb920ecb..980d9d03 100644 --- a/de4dot.code/deobfuscators/Eazfuscator_NET/VersionDetector.cs +++ b/de4dot.code/deobfuscators/Eazfuscator_NET/VersionDetector.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ExceptionLoggerRemover.cs b/de4dot.code/deobfuscators/ExceptionLoggerRemover.cs index 692d8b4e..24f64335 100644 --- a/de4dot.code/deobfuscators/ExceptionLoggerRemover.cs +++ b/de4dot.code/deobfuscators/ExceptionLoggerRemover.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Goliath_NET/ArrayDecrypter.cs b/de4dot.code/deobfuscators/Goliath_NET/ArrayDecrypter.cs index e61e6e41..1d13559c 100644 --- a/de4dot.code/deobfuscators/Goliath_NET/ArrayDecrypter.cs +++ b/de4dot.code/deobfuscators/Goliath_NET/ArrayDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Goliath_NET/ArrayValueInliner.cs b/de4dot.code/deobfuscators/Goliath_NET/ArrayValueInliner.cs index 456c29e6..4c5ca79a 100644 --- a/de4dot.code/deobfuscators/Goliath_NET/ArrayValueInliner.cs +++ b/de4dot.code/deobfuscators/Goliath_NET/ArrayValueInliner.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Goliath_NET/DecrypterBase.cs b/de4dot.code/deobfuscators/Goliath_NET/DecrypterBase.cs index 70d3983a..a63d5078 100644 --- a/de4dot.code/deobfuscators/Goliath_NET/DecrypterBase.cs +++ b/de4dot.code/deobfuscators/Goliath_NET/DecrypterBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Goliath_NET/Deobfuscator.cs b/de4dot.code/deobfuscators/Goliath_NET/Deobfuscator.cs index 8d55f183..13090fa2 100644 --- a/de4dot.code/deobfuscators/Goliath_NET/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Goliath_NET/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Goliath_NET/IntegerDecrypter.cs b/de4dot.code/deobfuscators/Goliath_NET/IntegerDecrypter.cs index f41c3d75..97d14883 100644 --- a/de4dot.code/deobfuscators/Goliath_NET/IntegerDecrypter.cs +++ b/de4dot.code/deobfuscators/Goliath_NET/IntegerDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Goliath_NET/LocalsRestorer.cs b/de4dot.code/deobfuscators/Goliath_NET/LocalsRestorer.cs index 26593045..c0070d7c 100644 --- a/de4dot.code/deobfuscators/Goliath_NET/LocalsRestorer.cs +++ b/de4dot.code/deobfuscators/Goliath_NET/LocalsRestorer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Goliath_NET/LogicalExpressionFixer.cs b/de4dot.code/deobfuscators/Goliath_NET/LogicalExpressionFixer.cs index fb894547..4ebf1568 100644 --- a/de4dot.code/deobfuscators/Goliath_NET/LogicalExpressionFixer.cs +++ b/de4dot.code/deobfuscators/Goliath_NET/LogicalExpressionFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Goliath_NET/ProxyCallFixer.cs b/de4dot.code/deobfuscators/Goliath_NET/ProxyCallFixer.cs index 6308582d..52dea0e3 100644 --- a/de4dot.code/deobfuscators/Goliath_NET/ProxyCallFixer.cs +++ b/de4dot.code/deobfuscators/Goliath_NET/ProxyCallFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Goliath_NET/StringDecrypter.cs b/de4dot.code/deobfuscators/Goliath_NET/StringDecrypter.cs index e797a89f..be02c6cf 100644 --- a/de4dot.code/deobfuscators/Goliath_NET/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Goliath_NET/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Goliath_NET/StrongNameChecker.cs b/de4dot.code/deobfuscators/Goliath_NET/StrongNameChecker.cs index b9034cfc..402afab8 100644 --- a/de4dot.code/deobfuscators/Goliath_NET/StrongNameChecker.cs +++ b/de4dot.code/deobfuscators/Goliath_NET/StrongNameChecker.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/IDeobfuscatedFile.cs b/de4dot.code/deobfuscators/IDeobfuscatedFile.cs index 4381742b..26d763d3 100644 --- a/de4dot.code/deobfuscators/IDeobfuscatedFile.cs +++ b/de4dot.code/deobfuscators/IDeobfuscatedFile.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/IDeobfuscator.cs b/de4dot.code/deobfuscators/IDeobfuscator.cs index b98ff819..53c8b0d7 100644 --- a/de4dot.code/deobfuscators/IDeobfuscator.cs +++ b/de4dot.code/deobfuscators/IDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/IDeobfuscatorInfo.cs b/de4dot.code/deobfuscators/IDeobfuscatorInfo.cs index 8edec9df..dbc8568e 100644 --- a/de4dot.code/deobfuscators/IDeobfuscatorInfo.cs +++ b/de4dot.code/deobfuscators/IDeobfuscatorInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ILProtector/DecryptedMethodInfo.cs b/de4dot.code/deobfuscators/ILProtector/DecryptedMethodInfo.cs index 23080df2..d049d525 100644 --- a/de4dot.code/deobfuscators/ILProtector/DecryptedMethodInfo.cs +++ b/de4dot.code/deobfuscators/ILProtector/DecryptedMethodInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ILProtector/Deobfuscator.cs b/de4dot.code/deobfuscators/ILProtector/Deobfuscator.cs index a517e418..ca1cd63c 100644 --- a/de4dot.code/deobfuscators/ILProtector/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/ILProtector/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs index 1b352314..e6dec7b4 100644 --- a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypterService.cs b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypterService.cs index a4895cd1..7f8cf096 100644 --- a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypterService.cs +++ b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsDecrypterService.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsRestorer.cs b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsRestorer.cs index 8816eb36..7712eb3e 100644 --- a/de4dot.code/deobfuscators/ILProtector/DynamicMethodsRestorer.cs +++ b/de4dot.code/deobfuscators/ILProtector/DynamicMethodsRestorer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ILProtector/MainType.cs b/de4dot.code/deobfuscators/ILProtector/MainType.cs index bb026d4d..e7c31ff1 100644 --- a/de4dot.code/deobfuscators/ILProtector/MainType.cs +++ b/de4dot.code/deobfuscators/ILProtector/MainType.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ILProtector/MethodReader.cs b/de4dot.code/deobfuscators/ILProtector/MethodReader.cs index fe404d89..700cdaf5 100644 --- a/de4dot.code/deobfuscators/ILProtector/MethodReader.cs +++ b/de4dot.code/deobfuscators/ILProtector/MethodReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ILProtector/MethodsDecrypterBase.cs b/de4dot.code/deobfuscators/ILProtector/MethodsDecrypterBase.cs index 4b4e12e3..8b27224a 100644 --- a/de4dot.code/deobfuscators/ILProtector/MethodsDecrypterBase.cs +++ b/de4dot.code/deobfuscators/ILProtector/MethodsDecrypterBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs b/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs index 2ed5d050..2cef7981 100644 --- a/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs +++ b/de4dot.code/deobfuscators/ILProtector/RuntimeFileInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ILProtector/StaticMethodsDecrypter.cs b/de4dot.code/deobfuscators/ILProtector/StaticMethodsDecrypter.cs index 7bd1e9ee..83d90c08 100644 --- a/de4dot.code/deobfuscators/ILProtector/StaticMethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/ILProtector/StaticMethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ISimpleDeobfuscator.cs b/de4dot.code/deobfuscators/ISimpleDeobfuscator.cs index b549aea2..b39edc2f 100644 --- a/de4dot.code/deobfuscators/ISimpleDeobfuscator.cs +++ b/de4dot.code/deobfuscators/ISimpleDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/InitializedDataCreator.cs b/de4dot.code/deobfuscators/InitializedDataCreator.cs index ba0c0ebe..bf5dc9b3 100644 --- a/de4dot.code/deobfuscators/InitializedDataCreator.cs +++ b/de4dot.code/deobfuscators/InitializedDataCreator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/InlinedMethodsFinder.cs b/de4dot.code/deobfuscators/InlinedMethodsFinder.cs index 8daa6761..b4cb39fc 100644 --- a/de4dot.code/deobfuscators/InlinedMethodsFinder.cs +++ b/de4dot.code/deobfuscators/InlinedMethodsFinder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MPRESS/Deobfuscator.cs b/de4dot.code/deobfuscators/MPRESS/Deobfuscator.cs index 508951c3..4356b95c 100644 --- a/de4dot.code/deobfuscators/MPRESS/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/MPRESS/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MaxtoCode/CryptDecrypter.cs b/de4dot.code/deobfuscators/MaxtoCode/CryptDecrypter.cs index dcfb7fe2..e73c6227 100644 --- a/de4dot.code/deobfuscators/MaxtoCode/CryptDecrypter.cs +++ b/de4dot.code/deobfuscators/MaxtoCode/CryptDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MaxtoCode/Decrypter6.cs b/de4dot.code/deobfuscators/MaxtoCode/Decrypter6.cs index 64286ae1..a0f91677 100644 --- a/de4dot.code/deobfuscators/MaxtoCode/Decrypter6.cs +++ b/de4dot.code/deobfuscators/MaxtoCode/Decrypter6.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MaxtoCode/DecrypterInfo.cs b/de4dot.code/deobfuscators/MaxtoCode/DecrypterInfo.cs index 2767b93b..9f3e15c6 100644 --- a/de4dot.code/deobfuscators/MaxtoCode/DecrypterInfo.cs +++ b/de4dot.code/deobfuscators/MaxtoCode/DecrypterInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MaxtoCode/Deobfuscator.cs b/de4dot.code/deobfuscators/MaxtoCode/Deobfuscator.cs index 969e3473..fbda187f 100644 --- a/de4dot.code/deobfuscators/MaxtoCode/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/MaxtoCode/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MaxtoCode/EncryptionInfos.cs b/de4dot.code/deobfuscators/MaxtoCode/EncryptionInfos.cs index f5efc42e..d1f4808d 100644 --- a/de4dot.code/deobfuscators/MaxtoCode/EncryptionInfos.cs +++ b/de4dot.code/deobfuscators/MaxtoCode/EncryptionInfos.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MaxtoCode/MainType.cs b/de4dot.code/deobfuscators/MaxtoCode/MainType.cs index 93d0f420..fb32f232 100644 --- a/de4dot.code/deobfuscators/MaxtoCode/MainType.cs +++ b/de4dot.code/deobfuscators/MaxtoCode/MainType.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MaxtoCode/McKey.cs b/de4dot.code/deobfuscators/MaxtoCode/McKey.cs index 37b77e56..55339d52 100644 --- a/de4dot.code/deobfuscators/MaxtoCode/McKey.cs +++ b/de4dot.code/deobfuscators/MaxtoCode/McKey.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MaxtoCode/MethodsDecrypter.cs b/de4dot.code/deobfuscators/MaxtoCode/MethodsDecrypter.cs index af2489a7..92c01b54 100644 --- a/de4dot.code/deobfuscators/MaxtoCode/MethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/MaxtoCode/MethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MaxtoCode/PeHeader.cs b/de4dot.code/deobfuscators/MaxtoCode/PeHeader.cs index 5eeeb246..ab96efe4 100644 --- a/de4dot.code/deobfuscators/MaxtoCode/PeHeader.cs +++ b/de4dot.code/deobfuscators/MaxtoCode/PeHeader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MaxtoCode/StringDecrypter.cs b/de4dot.code/deobfuscators/MaxtoCode/StringDecrypter.cs index 7ad0f443..f68101dd 100644 --- a/de4dot.code/deobfuscators/MaxtoCode/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/MaxtoCode/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MemberReferenceBuilder.cs b/de4dot.code/deobfuscators/MemberReferenceBuilder.cs index 58bbb7eb..a76f61c9 100644 --- a/de4dot.code/deobfuscators/MemberReferenceBuilder.cs +++ b/de4dot.code/deobfuscators/MemberReferenceBuilder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MethodBodyParser.cs b/de4dot.code/deobfuscators/MethodBodyParser.cs index dad9b07c..49101dd3 100644 --- a/de4dot.code/deobfuscators/MethodBodyParser.cs +++ b/de4dot.code/deobfuscators/MethodBodyParser.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MethodCallRestorerBase.cs b/de4dot.code/deobfuscators/MethodCallRestorerBase.cs index 189549df..6dadfd02 100644 --- a/de4dot.code/deobfuscators/MethodCallRestorerBase.cs +++ b/de4dot.code/deobfuscators/MethodCallRestorerBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MethodCollection.cs b/de4dot.code/deobfuscators/MethodCollection.cs index 5f63b4ea..b31cc10e 100644 --- a/de4dot.code/deobfuscators/MethodCollection.cs +++ b/de4dot.code/deobfuscators/MethodCollection.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MethodStack.cs b/de4dot.code/deobfuscators/MethodStack.cs index 717bf510..093a8bd9 100644 --- a/de4dot.code/deobfuscators/MethodStack.cs +++ b/de4dot.code/deobfuscators/MethodStack.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/MethodsDecrypter.cs b/de4dot.code/deobfuscators/MethodsDecrypter.cs index 46e52442..fd5bdd11 100644 --- a/de4dot.code/deobfuscators/MethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/MethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/NullStream.cs b/de4dot.code/deobfuscators/NullStream.cs index a88b0728..9b5c0021 100644 --- a/de4dot.code/deobfuscators/NullStream.cs +++ b/de4dot.code/deobfuscators/NullStream.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Operations.cs b/de4dot.code/deobfuscators/Operations.cs index afac7f61..e1dc7f7f 100644 --- a/de4dot.code/deobfuscators/Operations.cs +++ b/de4dot.code/deobfuscators/Operations.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ProxyCallFixerBase.cs b/de4dot.code/deobfuscators/ProxyCallFixerBase.cs index 02be8fda..2a14920d 100644 --- a/de4dot.code/deobfuscators/ProxyCallFixerBase.cs +++ b/de4dot.code/deobfuscators/ProxyCallFixerBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/RandomNameChecker.cs b/de4dot.code/deobfuscators/RandomNameChecker.cs index a5b7e6a9..139ec9fb 100644 --- a/de4dot.code/deobfuscators/RandomNameChecker.cs +++ b/de4dot.code/deobfuscators/RandomNameChecker.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Rummage/Deobfuscator.cs b/de4dot.code/deobfuscators/Rummage/Deobfuscator.cs index 6a4088bd..510d7670 100644 --- a/de4dot.code/deobfuscators/Rummage/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Rummage/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Rummage/RummageVersion.cs b/de4dot.code/deobfuscators/Rummage/RummageVersion.cs index cddbd5b7..90ad76c9 100644 --- a/de4dot.code/deobfuscators/Rummage/RummageVersion.cs +++ b/de4dot.code/deobfuscators/Rummage/RummageVersion.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Rummage/StringDecrypter.cs b/de4dot.code/deobfuscators/Rummage/StringDecrypter.cs index a166be6f..4c3584ca 100644 --- a/de4dot.code/deobfuscators/Rummage/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Rummage/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Skater_NET/Deobfuscator.cs b/de4dot.code/deobfuscators/Skater_NET/Deobfuscator.cs index 46b11a80..9a462a4b 100644 --- a/de4dot.code/deobfuscators/Skater_NET/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Skater_NET/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Skater_NET/EnumClassFinder.cs b/de4dot.code/deobfuscators/Skater_NET/EnumClassFinder.cs index 1f895500..3ace2708 100644 --- a/de4dot.code/deobfuscators/Skater_NET/EnumClassFinder.cs +++ b/de4dot.code/deobfuscators/Skater_NET/EnumClassFinder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Skater_NET/StringDecrypter.cs b/de4dot.code/deobfuscators/Skater_NET/StringDecrypter.cs index 31f5f9d5..378812e9 100644 --- a/de4dot.code/deobfuscators/Skater_NET/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Skater_NET/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolver.cs b/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolver.cs index 0451e176..e55b0279 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolverInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolverInfo.cs index da322687..c2a8130b 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolverInfo.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/AssemblyResolverInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs b/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs index ff1c2f2c..8a2e784b 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/AutomatedErrorReportingFinder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs b/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs index 70632d60..b4c9b6b3 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/MemoryManagerInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/MemoryManagerInfo.cs index 260cd8ba..61459b11 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/MemoryManagerInfo.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/MemoryManagerInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/ProxyCallFixer.cs b/de4dot.code/deobfuscators/SmartAssembly/ProxyCallFixer.cs index 7a5f2d5d..429063c9 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/ProxyCallFixer.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/ProxyCallFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/ResolverInfoBase.cs b/de4dot.code/deobfuscators/SmartAssembly/ResolverInfoBase.cs index 222bfca3..23ae7342 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/ResolverInfoBase.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/ResolverInfoBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypter.cs b/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypter.cs index 140c9085..90908652 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypter.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypterInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypterInfo.cs index 9904c1e1..5b405da2 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypterInfo.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/ResourceDecrypterInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/ResourceResolver.cs b/de4dot.code/deobfuscators/SmartAssembly/ResourceResolver.cs index 4ca75e60..48cc0172 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/ResourceResolver.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/ResourceResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/ResourceResolverInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/ResourceResolverInfo.cs index 77d408ad..ee3ef79e 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/ResourceResolverInfo.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/ResourceResolverInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/SimpleZipInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/SimpleZipInfo.cs index bdfe1b1d..eff67fdc 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/SimpleZipInfo.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/SimpleZipInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/StringDecrypter.cs b/de4dot.code/deobfuscators/SmartAssembly/StringDecrypter.cs index 3fd66fbf..a00c9cdc 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/StringDecrypterInfo.cs b/de4dot.code/deobfuscators/SmartAssembly/StringDecrypterInfo.cs index d8bf8de3..63c83897 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/StringDecrypterInfo.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/StringDecrypterInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/StringEncoderClassFinder.cs b/de4dot.code/deobfuscators/SmartAssembly/StringEncoderClassFinder.cs index 48430aa3..6b5c2fb4 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/StringEncoderClassFinder.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/StringEncoderClassFinder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/SmartAssembly/TamperProtectionRemover.cs b/de4dot.code/deobfuscators/SmartAssembly/TamperProtectionRemover.cs index e314ba75..b3207567 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/TamperProtectionRemover.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/TamperProtectionRemover.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Spices_Net/Deobfuscator.cs b/de4dot.code/deobfuscators/Spices_Net/Deobfuscator.cs index d0a5f569..32719880 100644 --- a/de4dot.code/deobfuscators/Spices_Net/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Spices_Net/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Spices_Net/QclzDecompressor.cs b/de4dot.code/deobfuscators/Spices_Net/QclzDecompressor.cs index be9cf922..23250af2 100644 --- a/de4dot.code/deobfuscators/Spices_Net/QclzDecompressor.cs +++ b/de4dot.code/deobfuscators/Spices_Net/QclzDecompressor.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Spices_Net/ResourceNamesRestorer.cs b/de4dot.code/deobfuscators/Spices_Net/ResourceNamesRestorer.cs index 9457254d..37553866 100644 --- a/de4dot.code/deobfuscators/Spices_Net/ResourceNamesRestorer.cs +++ b/de4dot.code/deobfuscators/Spices_Net/ResourceNamesRestorer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Spices_Net/SpicesMethodCallInliner.cs b/de4dot.code/deobfuscators/Spices_Net/SpicesMethodCallInliner.cs index 863f093c..baca1e16 100644 --- a/de4dot.code/deobfuscators/Spices_Net/SpicesMethodCallInliner.cs +++ b/de4dot.code/deobfuscators/Spices_Net/SpicesMethodCallInliner.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Spices_Net/StringDecrypter.cs b/de4dot.code/deobfuscators/Spices_Net/StringDecrypter.cs index a73699c5..5a39f211 100644 --- a/de4dot.code/deobfuscators/Spices_Net/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Spices_Net/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/StringCounts.cs b/de4dot.code/deobfuscators/StringCounts.cs index 48b12660..bed73163 100644 --- a/de4dot.code/deobfuscators/StringCounts.cs +++ b/de4dot.code/deobfuscators/StringCounts.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/TypesRestorer.cs b/de4dot.code/deobfuscators/TypesRestorer.cs index dbac15d5..131ccf04 100644 --- a/de4dot.code/deobfuscators/TypesRestorer.cs +++ b/de4dot.code/deobfuscators/TypesRestorer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs b/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs index 119217a2..44dd0a26 100644 --- a/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/UnpackedFile.cs b/de4dot.code/deobfuscators/UnpackedFile.cs index f137f8d2..8d3a154e 100644 --- a/de4dot.code/deobfuscators/UnpackedFile.cs +++ b/de4dot.code/deobfuscators/UnpackedFile.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/UnusedMethodsFinder.cs b/de4dot.code/deobfuscators/UnusedMethodsFinder.cs index 4ce59d2b..c9157e83 100644 --- a/de4dot.code/deobfuscators/UnusedMethodsFinder.cs +++ b/de4dot.code/deobfuscators/UnusedMethodsFinder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/ValueInlinerBase.cs b/de4dot.code/deobfuscators/ValueInlinerBase.cs index a8163a3b..36b0aabe 100644 --- a/de4dot.code/deobfuscators/ValueInlinerBase.cs +++ b/de4dot.code/deobfuscators/ValueInlinerBase.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs b/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs index f42cb14d..83f6ae8f 100644 --- a/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/Xenocode/StringDecrypter.cs b/de4dot.code/deobfuscators/Xenocode/StringDecrypter.cs index 6142e2ae..84e0031d 100644 --- a/de4dot.code/deobfuscators/Xenocode/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/Xenocode/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v3/AntiStrongName.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v3/AntiStrongName.cs index 4359f7f4..4e30f9fc 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v3/AntiStrongName.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v3/AntiStrongName.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v3/ApplicationModeDecrypter.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v3/ApplicationModeDecrypter.cs index 5f10ccef..6986a777 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v3/ApplicationModeDecrypter.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v3/ApplicationModeDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v3/ApplicationModeUnpacker.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v3/ApplicationModeUnpacker.cs index e3111412..8df5f13b 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v3/ApplicationModeUnpacker.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v3/ApplicationModeUnpacker.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v3/AssemblyResolver.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v3/AssemblyResolver.cs index 4a1dbc69..7423c147 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v3/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v3/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v3/DecryptMethod.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v3/DecryptMethod.cs index 02ec1857..7ef8a169 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v3/DecryptMethod.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v3/DecryptMethod.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v3/DecrypterType.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v3/DecrypterType.cs index ba911b93..ef1718cb 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v3/DecrypterType.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v3/DecrypterType.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v3/Deobfuscator.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v3/Deobfuscator.cs index 070c1dd8..b45e69c6 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v3/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v3/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v3/LibAssemblyResolver.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v3/LibAssemblyResolver.cs index 262e6bdb..0def45f4 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v3/LibAssemblyResolver.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v3/LibAssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v3/MemoryPatcher.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v3/MemoryPatcher.cs index 08f592dc..79095035 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v3/MemoryPatcher.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v3/MemoryPatcher.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v3/NativeLibSaver.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v3/NativeLibSaver.cs index 82fc1653..2075999e 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v3/NativeLibSaver.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v3/NativeLibSaver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/AntiStrongname.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/AntiStrongname.cs index 987e5a82..e137dc53 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/AntiStrongname.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/AntiStrongname.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/AssemblyResolver.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/AssemblyResolver.cs index 8a4ce825..e5d2c220 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/AssemblyResolver.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/AssemblyResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/BooleanDecrypter.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/BooleanDecrypter.cs index f6f7f132..fb79048c 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/BooleanDecrypter.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/BooleanDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs index 0cbca43c..eccc159e 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/DnrMethodCallInliner.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/DnrMethodCallInliner.cs index 2a3324b6..1af3a573 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/DnrMethodCallInliner.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/DnrMethodCallInliner.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/EmptyClass.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/EmptyClass.cs index 61b23bf3..39d1a1a5 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/EmptyClass.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/EmptyClass.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/EncryptedResource.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/EncryptedResource.cs index 9660c66e..4ea0301a 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/EncryptedResource.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/EncryptedResource.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/MetadataTokenObfuscator.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/MetadataTokenObfuscator.cs index 4ee649ef..825580d2 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/MetadataTokenObfuscator.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/MetadataTokenObfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/MethodsDecrypter.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/MethodsDecrypter.cs index cc9a7dc3..fedb2f96 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/MethodsDecrypter.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/MethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/NativeFileDecrypter.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/NativeFileDecrypter.cs index d809b161..b422b4ee 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/NativeFileDecrypter.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/NativeFileDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/NativeImageUnpacker.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/NativeImageUnpacker.cs index 1edb590a..d6bbc3d5 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/NativeImageUnpacker.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/NativeImageUnpacker.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/ProxyCallFixer.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/ProxyCallFixer.cs index 88d9321c..31a40b5e 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/ProxyCallFixer.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/ProxyCallFixer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/ResourceResolver.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/ResourceResolver.cs index 11a03668..b4f83831 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/ResourceResolver.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/ResourceResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/StringDecrypter.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/StringDecrypter.cs index 0b53ff8b..9ca0ac58 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/StringDecrypter.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/StringDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/DerivedFrom.cs b/de4dot.code/renamer/DerivedFrom.cs index 177b40a8..fefc1b8e 100644 --- a/de4dot.code/renamer/DerivedFrom.cs +++ b/de4dot.code/renamer/DerivedFrom.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/ExistingNames.cs b/de4dot.code/renamer/ExistingNames.cs index 167a89e9..5f4e1287 100644 --- a/de4dot.code/renamer/ExistingNames.cs +++ b/de4dot.code/renamer/ExistingNames.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/INameChecker.cs b/de4dot.code/renamer/INameChecker.cs index 211c9a9f..a976cd33 100644 --- a/de4dot.code/renamer/INameChecker.cs +++ b/de4dot.code/renamer/INameChecker.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/MemberInfos.cs b/de4dot.code/renamer/MemberInfos.cs index fd052fe0..86910c61 100644 --- a/de4dot.code/renamer/MemberInfos.cs +++ b/de4dot.code/renamer/MemberInfos.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/NameCreators.cs b/de4dot.code/renamer/NameCreators.cs index 36186e4c..e326365d 100644 --- a/de4dot.code/renamer/NameCreators.cs +++ b/de4dot.code/renamer/NameCreators.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/Renamer.cs b/de4dot.code/renamer/Renamer.cs index 6737c748..28d1d7d9 100644 --- a/de4dot.code/renamer/Renamer.cs +++ b/de4dot.code/renamer/Renamer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/ResourceKeysRenamer.cs b/de4dot.code/renamer/ResourceKeysRenamer.cs index a01d2482..25ea4187 100644 --- a/de4dot.code/renamer/ResourceKeysRenamer.cs +++ b/de4dot.code/renamer/ResourceKeysRenamer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/ResourceRenamer.cs b/de4dot.code/renamer/ResourceRenamer.cs index e38b6795..9ba72644 100644 --- a/de4dot.code/renamer/ResourceRenamer.cs +++ b/de4dot.code/renamer/ResourceRenamer.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/TypeInfo.cs b/de4dot.code/renamer/TypeInfo.cs index 4f41f0f0..58f8dff9 100644 --- a/de4dot.code/renamer/TypeInfo.cs +++ b/de4dot.code/renamer/TypeInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/TypeNames.cs b/de4dot.code/renamer/TypeNames.cs index 82f84db4..05ab7a0d 100644 --- a/de4dot.code/renamer/TypeNames.cs +++ b/de4dot.code/renamer/TypeNames.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/TypeRenamerState.cs b/de4dot.code/renamer/TypeRenamerState.cs index 7eaeea75..03560bbe 100644 --- a/de4dot.code/renamer/TypeRenamerState.cs +++ b/de4dot.code/renamer/TypeRenamerState.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/VariableNameState.cs b/de4dot.code/renamer/VariableNameState.cs index 4e122028..4e2ea22d 100644 --- a/de4dot.code/renamer/VariableNameState.cs +++ b/de4dot.code/renamer/VariableNameState.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/EventDef.cs b/de4dot.code/renamer/asmmodules/EventDef.cs index 7908c197..8729d0f4 100644 --- a/de4dot.code/renamer/asmmodules/EventDef.cs +++ b/de4dot.code/renamer/asmmodules/EventDef.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/FieldDef.cs b/de4dot.code/renamer/asmmodules/FieldDef.cs index ade45a72..706cb560 100644 --- a/de4dot.code/renamer/asmmodules/FieldDef.cs +++ b/de4dot.code/renamer/asmmodules/FieldDef.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/GenericParamDef.cs b/de4dot.code/renamer/asmmodules/GenericParamDef.cs index c4498b74..b37f9848 100644 --- a/de4dot.code/renamer/asmmodules/GenericParamDef.cs +++ b/de4dot.code/renamer/asmmodules/GenericParamDef.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/IResolver.cs b/de4dot.code/renamer/asmmodules/IResolver.cs index 92ec0827..a4754ae6 100644 --- a/de4dot.code/renamer/asmmodules/IResolver.cs +++ b/de4dot.code/renamer/asmmodules/IResolver.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/MemberRefFinder.cs b/de4dot.code/renamer/asmmodules/MemberRefFinder.cs index da7b169f..3aeff2a9 100644 --- a/de4dot.code/renamer/asmmodules/MemberRefFinder.cs +++ b/de4dot.code/renamer/asmmodules/MemberRefFinder.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/MethodDef.cs b/de4dot.code/renamer/asmmodules/MethodDef.cs index b021dc63..7c9ae288 100644 --- a/de4dot.code/renamer/asmmodules/MethodDef.cs +++ b/de4dot.code/renamer/asmmodules/MethodDef.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/MethodNameGroups.cs b/de4dot.code/renamer/asmmodules/MethodNameGroups.cs index fea4e014..7b0fbf57 100644 --- a/de4dot.code/renamer/asmmodules/MethodNameGroups.cs +++ b/de4dot.code/renamer/asmmodules/MethodNameGroups.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/Module.cs b/de4dot.code/renamer/asmmodules/Module.cs index 9b20f423..e1031d5d 100644 --- a/de4dot.code/renamer/asmmodules/Module.cs +++ b/de4dot.code/renamer/asmmodules/Module.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/Modules.cs b/de4dot.code/renamer/asmmodules/Modules.cs index 83e4ec2a..b88e81a2 100644 --- a/de4dot.code/renamer/asmmodules/Modules.cs +++ b/de4dot.code/renamer/asmmodules/Modules.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/ParamDef.cs b/de4dot.code/renamer/asmmodules/ParamDef.cs index 1b555095..1c2c7ffe 100644 --- a/de4dot.code/renamer/asmmodules/ParamDef.cs +++ b/de4dot.code/renamer/asmmodules/ParamDef.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/PropertyDef.cs b/de4dot.code/renamer/asmmodules/PropertyDef.cs index 247af712..a848972e 100644 --- a/de4dot.code/renamer/asmmodules/PropertyDef.cs +++ b/de4dot.code/renamer/asmmodules/PropertyDef.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/Ref.cs b/de4dot.code/renamer/asmmodules/Ref.cs index 98343fbb..39c9e4e0 100644 --- a/de4dot.code/renamer/asmmodules/Ref.cs +++ b/de4dot.code/renamer/asmmodules/Ref.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/RefDict.cs b/de4dot.code/renamer/asmmodules/RefDict.cs index afd35442..60a583a9 100644 --- a/de4dot.code/renamer/asmmodules/RefDict.cs +++ b/de4dot.code/renamer/asmmodules/RefDict.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/renamer/asmmodules/TypeDef.cs b/de4dot.code/renamer/asmmodules/TypeDef.cs index 7d7990f3..24a62871 100644 --- a/de4dot.code/renamer/asmmodules/TypeDef.cs +++ b/de4dot.code/renamer/asmmodules/TypeDef.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/resources/BuiltInResourceData.cs b/de4dot.code/resources/BuiltInResourceData.cs index 66164eff..ce23a0dc 100644 --- a/de4dot.code/resources/BuiltInResourceData.cs +++ b/de4dot.code/resources/BuiltInResourceData.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/resources/IResourceData.cs b/de4dot.code/resources/IResourceData.cs index be3ab6a1..b8995e2f 100644 --- a/de4dot.code/resources/IResourceData.cs +++ b/de4dot.code/resources/IResourceData.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/resources/ResourceDataCreator.cs b/de4dot.code/resources/ResourceDataCreator.cs index 12b88e44..4ebd012b 100644 --- a/de4dot.code/resources/ResourceDataCreator.cs +++ b/de4dot.code/resources/ResourceDataCreator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/resources/ResourceElement.cs b/de4dot.code/resources/ResourceElement.cs index 7a81b5f3..8cf6ea95 100644 --- a/de4dot.code/resources/ResourceElement.cs +++ b/de4dot.code/resources/ResourceElement.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/resources/ResourceElementSet.cs b/de4dot.code/resources/ResourceElementSet.cs index fe0c8940..128414b8 100644 --- a/de4dot.code/resources/ResourceElementSet.cs +++ b/de4dot.code/resources/ResourceElementSet.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/resources/ResourceReader.cs b/de4dot.code/resources/ResourceReader.cs index 6c515123..3c4b5a68 100644 --- a/de4dot.code/resources/ResourceReader.cs +++ b/de4dot.code/resources/ResourceReader.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/resources/ResourceTypeCode.cs b/de4dot.code/resources/ResourceTypeCode.cs index cb20ab80..972f1dd6 100644 --- a/de4dot.code/resources/ResourceTypeCode.cs +++ b/de4dot.code/resources/ResourceTypeCode.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/resources/ResourceWriter.cs b/de4dot.code/resources/ResourceWriter.cs index c403571f..f9e0d7aa 100644 --- a/de4dot.code/resources/ResourceWriter.cs +++ b/de4dot.code/resources/ResourceWriter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/resources/UserResourceData.cs b/de4dot.code/resources/UserResourceData.cs index 04add74b..db515453 100644 --- a/de4dot.code/resources/UserResourceData.cs +++ b/de4dot.code/resources/UserResourceData.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.code/resources/UserResourceType.cs b/de4dot.code/resources/UserResourceType.cs index d5fe63c1..3b7489fc 100644 --- a/de4dot.code/resources/UserResourceType.cs +++ b/de4dot.code/resources/UserResourceType.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.cui/CommandLineParser.cs b/de4dot.cui/CommandLineParser.cs index d7c2efb7..c86125c4 100644 --- a/de4dot.cui/CommandLineParser.cs +++ b/de4dot.cui/CommandLineParser.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.cui/FilesDeobfuscator.cs b/de4dot.cui/FilesDeobfuscator.cs index e16a2d35..40677985 100644 --- a/de4dot.cui/FilesDeobfuscator.cs +++ b/de4dot.cui/FilesDeobfuscator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.cui/Program.cs b/de4dot.cui/Program.cs index 654e9029..ec4ec759 100644 --- a/de4dot.cui/Program.cs +++ b/de4dot.cui/Program.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -72,7 +72,7 @@ namespace de4dot.cui { Logger.Instance.CanIgnoreMessages = !HasEnv(showAllMessagesEnvName); Logger.n(""); - Logger.n("de4dot v{0} Copyright (C) 2011-2013 de4dot@gmail.com", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version); + Logger.n("de4dot v{0} Copyright (C) 2011-2014 de4dot@gmail.com", System.Reflection.Assembly.GetExecutingAssembly().GetName().Version); Logger.n("Latest version and source code: https://bitbucket.org/0xd4d/de4dot"); Logger.n(""); diff --git a/de4dot.cui/Properties/AssemblyInfo.cs b/de4dot.cui/Properties/AssemblyInfo.cs index b01f9076..b208b36e 100644 --- a/de4dot.cui/Properties/AssemblyInfo.cs +++ b/de4dot.cui/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -26,7 +26,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("de4dot.cui")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/de4dot.mdecrypt/DecryptMethodsInfo.cs b/de4dot.mdecrypt/DecryptMethodsInfo.cs index d5deda76..ba45efa4 100644 --- a/de4dot.mdecrypt/DecryptMethodsInfo.cs +++ b/de4dot.mdecrypt/DecryptMethodsInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.mdecrypt/DynamicMethodsDecrypter.cs b/de4dot.mdecrypt/DynamicMethodsDecrypter.cs index 8e41c1b6..24fa5816 100644 --- a/de4dot.mdecrypt/DynamicMethodsDecrypter.cs +++ b/de4dot.mdecrypt/DynamicMethodsDecrypter.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.mdecrypt/NativeCodeGenerator.cs b/de4dot.mdecrypt/NativeCodeGenerator.cs index a77028c1..e302055c 100644 --- a/de4dot.mdecrypt/NativeCodeGenerator.cs +++ b/de4dot.mdecrypt/NativeCodeGenerator.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot.mdecrypt/Properties/AssemblyInfo.cs b/de4dot.mdecrypt/Properties/AssemblyInfo.cs index 77f9d38d..a148ef31 100644 --- a/de4dot.mdecrypt/Properties/AssemblyInfo.cs +++ b/de4dot.mdecrypt/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("de4dot.mdecrypt")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/de4dot/Program.cs b/de4dot/Program.cs index e03518cf..fb0b31bd 100644 --- a/de4dot/Program.cs +++ b/de4dot/Program.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. diff --git a/de4dot/Properties/AssemblyInfo.cs b/de4dot/Properties/AssemblyInfo.cs index 56a761ef..aea00aa1 100644 --- a/de4dot/Properties/AssemblyInfo.cs +++ b/de4dot/Properties/AssemblyInfo.cs @@ -1,5 +1,5 @@ /* - Copyright (C) 2011-2013 de4dot@gmail.com + Copyright (C) 2011-2014 de4dot@gmail.com This file is part of de4dot. @@ -25,7 +25,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("de4dot")] -[assembly: AssemblyCopyright("Copyright (C) 2011-2013 de4dot@gmail.com")] +[assembly: AssemblyCopyright("Copyright (C) 2011-2014 de4dot@gmail.com")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] From ef628fcb64bf53d19ca3275b2889f9a5a8d33895 Mon Sep 17 00:00:00 2001 From: de4dot Date: Tue, 11 Mar 2014 22:16:03 +0100 Subject: [PATCH 22/22] Add updated dnlib submodule --- dnlib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dnlib b/dnlib index 08030682..d854e20b 160000 --- a/dnlib +++ b/dnlib @@ -1 +1 @@ -Subproject commit 080306826f27fc4205f79a64b56247a04073991a +Subproject commit d854e20b2d4245245efc19e676e6862cdbd162f6