From 4b335f948927c665fdad13018cddd7565e76bed3 Mon Sep 17 00:00:00 2001 From: de4dot Date: Sat, 12 Nov 2011 11:31:07 +0100 Subject: [PATCH] Add a TypeLong property --- de4dot.code/ObfuscatedFile.cs | 6 +++--- de4dot.code/deobfuscators/CliSecure/Deobfuscator.cs | 9 +++++++-- .../deobfuscators/CryptoObfuscator/Deobfuscator.cs | 7 ++++++- de4dot.code/deobfuscators/DeobfuscatorBase.cs | 1 + de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs | 7 ++++++- de4dot.code/deobfuscators/Eazfuscator/Deobfuscator.cs | 7 ++++++- de4dot.code/deobfuscators/IDeobfuscator.cs | 1 + de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs | 9 +++++++-- de4dot.code/deobfuscators/Unknown/Deobfuscator.cs | 7 ++++++- de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs | 9 +++++++-- de4dot.code/deobfuscators/dotNET_Reactor/Deobfuscator.cs | 7 ++++++- 11 files changed, 56 insertions(+), 14 deletions(-) diff --git a/de4dot.code/ObfuscatedFile.cs b/de4dot.code/ObfuscatedFile.cs index 1fb81bdd..590a2be3 100644 --- a/de4dot.code/ObfuscatedFile.cs +++ b/de4dot.code/ObfuscatedFile.cs @@ -234,7 +234,7 @@ namespace de4dot { foreach (var deob in deobfuscators) { int val = deob.earlyDetect(); if (val > 0) - Log.v("{0,3}: {1}", val, deob.Type); + Log.v("{0,3}: {1}", val, deob.TypeLong); if (val > detectVal) { detectVal = val; detected = deob; @@ -249,7 +249,7 @@ namespace de4dot { foreach (var deob in deobfuscators) { this.deob = deob; // So we can call deob.CanInlineMethods in deobfuscate() int val = deob.detect(); - Log.v("{0,3}: {1}", val, deob.Type); + Log.v("{0,3}: {1}", val, deob.TypeLong); if (val > detectVal) { detectVal = val; detected = deob; @@ -300,7 +300,7 @@ namespace de4dot { public void checkSupportedStringDecrypter(StringFeatures feature) { if ((deob.StringFeatures & feature) == feature) return; - throw new UserException(string.Format("Deobfuscator {0} does not support this string decryption type", deob.Type)); + throw new UserException(string.Format("Deobfuscator {0} does not support this string decryption type", deob.TypeLong)); } public void deobfuscate() { diff --git a/de4dot.code/deobfuscators/CliSecure/Deobfuscator.cs b/de4dot.code/deobfuscators/CliSecure/Deobfuscator.cs index a24f78e3..1a042e80 100644 --- a/de4dot.code/deobfuscators/CliSecure/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/CliSecure/Deobfuscator.cs @@ -25,6 +25,7 @@ using de4dot.blocks; namespace de4dot.deobfuscators.CliSecure { class DeobfuscatorInfo : DeobfuscatorInfoBase { public const string THE_NAME = "CliSecure"; + public const string THE_TYPE = "cs"; const string DEFAULT_REGEX = @"[a-zA-Z_0-9>}$]$"; BoolOption decryptMethods; BoolOption decryptResources; @@ -42,7 +43,7 @@ namespace de4dot.deobfuscators.CliSecure { } public override string Type { - get { return "cs"; } + get { return THE_TYPE; } } public override IDeobfuscator createDeobfuscator() { @@ -81,11 +82,15 @@ namespace de4dot.deobfuscators.CliSecure { } public override string Type { + get { return DeobfuscatorInfo.THE_TYPE; } + } + + public override string TypeLong { get { return DeobfuscatorInfo.THE_NAME; } } public override string Name { - get { return Type; } + get { return TypeLong; } } public Deobfuscator(Options options) diff --git a/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs b/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs index 0bc38dea..be914a69 100644 --- a/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/CryptoObfuscator/Deobfuscator.cs @@ -25,6 +25,7 @@ using de4dot.blocks; namespace de4dot.deobfuscators.CryptoObfuscator { class DeobfuscatorInfo : DeobfuscatorInfoBase { public const string THE_NAME = "Crypto Obfuscator"; + public const string THE_TYPE = "co"; const string DEFAULT_REGEX = @"!^[A-Z]{1,3}(?:`\d+)?$&!^c[0-9a-f]{32}(?:`\d+)?$&" + DeobfuscatorBase.DEFAULT_VALID_NAME_REGEX; BoolOption removeTamperProtection; @@ -38,7 +39,7 @@ namespace de4dot.deobfuscators.CryptoObfuscator { } public override string Type { - get { return "co"; } + get { return THE_TYPE; } } public override IDeobfuscator createDeobfuscator() { @@ -74,6 +75,10 @@ namespace de4dot.deobfuscators.CryptoObfuscator { } public override string Type { + get { return DeobfuscatorInfo.THE_TYPE; } + } + + public override string TypeLong { get { return DeobfuscatorInfo.THE_NAME; } } diff --git a/de4dot.code/deobfuscators/DeobfuscatorBase.cs b/de4dot.code/deobfuscators/DeobfuscatorBase.cs index 69288f19..2723b450 100644 --- a/de4dot.code/deobfuscators/DeobfuscatorBase.cs +++ b/de4dot.code/deobfuscators/DeobfuscatorBase.cs @@ -70,6 +70,7 @@ namespace de4dot.deobfuscators { public DecrypterType DefaultDecrypterType { get; set; } public abstract string Type { get; } + public abstract string TypeLong { get; } public abstract string Name { get; } public virtual bool CanInlineMethods { diff --git a/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs b/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs index 3db6354b..0580176b 100644 --- a/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Dotfuscator/Deobfuscator.cs @@ -25,6 +25,7 @@ using de4dot.blocks; namespace de4dot.deobfuscators.Dotfuscator { class DeobfuscatorInfo : DeobfuscatorInfoBase { public const string THE_NAME = "Dotfuscator"; + public const string THE_TYPE = "df"; const string DEFAULT_REGEX = @"!^[a-z][a-z0-9]{0,2}$&!^A_[0-9]+$&" + DeobfuscatorBase.DEFAULT_VALID_NAME_REGEX; public DeobfuscatorInfo() : base(DEFAULT_REGEX) { @@ -35,7 +36,7 @@ namespace de4dot.deobfuscators.Dotfuscator { } public override string Type { - get { return "df"; } + get { return THE_TYPE; } } public override IDeobfuscator createDeobfuscator() { @@ -65,6 +66,10 @@ namespace de4dot.deobfuscators.Dotfuscator { } public override string Type { + get { return DeobfuscatorInfo.THE_TYPE; } + } + + public override string TypeLong { get { return DeobfuscatorInfo.THE_NAME; } } diff --git a/de4dot.code/deobfuscators/Eazfuscator/Deobfuscator.cs b/de4dot.code/deobfuscators/Eazfuscator/Deobfuscator.cs index 1b9c86ef..50ee55aa 100644 --- a/de4dot.code/deobfuscators/Eazfuscator/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Eazfuscator/Deobfuscator.cs @@ -25,6 +25,7 @@ using de4dot.blocks; namespace de4dot.deobfuscators.Eazfuscator { class DeobfuscatorInfo : DeobfuscatorInfoBase { public const string THE_NAME = "Eazfuscator.NET"; + public const string THE_TYPE = "ez"; public DeobfuscatorInfo() : base() { } @@ -34,7 +35,7 @@ namespace de4dot.deobfuscators.Eazfuscator { } public override string Type { - get { return "ez"; } + get { return THE_TYPE; } } public override IDeobfuscator createDeobfuscator() { @@ -53,6 +54,10 @@ namespace de4dot.deobfuscators.Eazfuscator { } public override string Type { + get { return DeobfuscatorInfo.THE_TYPE; } + } + + public override string TypeLong { get { return DeobfuscatorInfo.THE_NAME; } } diff --git a/de4dot.code/deobfuscators/IDeobfuscator.cs b/de4dot.code/deobfuscators/IDeobfuscator.cs index 4c475e1a..857ae52d 100644 --- a/de4dot.code/deobfuscators/IDeobfuscator.cs +++ b/de4dot.code/deobfuscators/IDeobfuscator.cs @@ -51,6 +51,7 @@ namespace de4dot.deobfuscators { interface IDeobfuscator { string Type { get; } + string TypeLong { get; } string Name { get; } Func IsValidName { get; } IDeobfuscatorOptions TheOptions { get; } diff --git a/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs b/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs index 4201730b..040063e7 100644 --- a/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs @@ -31,6 +31,7 @@ using de4dot.blocks; namespace de4dot.deobfuscators.SmartAssembly { class DeobfuscatorInfo : DeobfuscatorInfoBase { public const string THE_NAME = "SmartAssembly"; + public const string THE_TYPE = "sa"; BoolOption removeAutomatedErrorReporting; BoolOption removeTamperProtection; BoolOption removeMemoryManager; @@ -47,7 +48,7 @@ namespace de4dot.deobfuscators.SmartAssembly { } public override string Type { - get { return "sa"; } + get { return THE_TYPE; } } public override IDeobfuscator createDeobfuscator() { @@ -72,7 +73,7 @@ namespace de4dot.deobfuscators.SmartAssembly { Options options; bool foundVersion = false; string poweredByAttributeString = null; - string obfuscatorName = "SmartAssembly"; + string obfuscatorName = DeobfuscatorInfo.THE_NAME; bool foundSmartAssemblyAttribute = false; IList stringDecrypterInfos = new List(); @@ -96,6 +97,10 @@ namespace de4dot.deobfuscators.SmartAssembly { } public override string Type { + get { return DeobfuscatorInfo.THE_TYPE; } + } + + public override string TypeLong { get { return DeobfuscatorInfo.THE_NAME; } } diff --git a/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs b/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs index 3b586cf3..44cd5770 100644 --- a/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Unknown/Deobfuscator.cs @@ -22,6 +22,7 @@ using System.Text.RegularExpressions; namespace de4dot.deobfuscators.Unknown { class DeobfuscatorInfo : DeobfuscatorInfoBase { public const string THE_NAME = "Unknown"; + public const string THE_TYPE = "un"; public DeobfuscatorInfo() : base() { } @@ -31,7 +32,7 @@ namespace de4dot.deobfuscators.Unknown { } public override string Type { - get { return "un"; } + get { return THE_TYPE; } } public override IDeobfuscator createDeobfuscator() { @@ -49,6 +50,10 @@ namespace de4dot.deobfuscators.Unknown { } public override string Type { + get { return DeobfuscatorInfo.THE_TYPE; } + } + + public override string TypeLong { get { return DeobfuscatorInfo.THE_NAME; } } diff --git a/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs b/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs index 25620124..d19f6ccb 100644 --- a/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/Xenocode/Deobfuscator.cs @@ -23,6 +23,7 @@ using Mono.Cecil; namespace de4dot.deobfuscators.Xenocode { class DeobfuscatorInfo : DeobfuscatorInfoBase { public const string THE_NAME = "Xenocode"; + public const string THE_TYPE = "xc"; const string DEFAULT_REGEX = @"!^[oO01l]{4,}$&!^_?x[a-f0-9]{16,}$&" + DeobfuscatorBase.DEFAULT_VALID_NAME_REGEX; public DeobfuscatorInfo() : base(DEFAULT_REGEX) { @@ -33,7 +34,7 @@ namespace de4dot.deobfuscators.Xenocode { } public override string Type { - get { return "xc"; } + get { return THE_TYPE; } } public override IDeobfuscator createDeobfuscator() { @@ -51,11 +52,15 @@ namespace de4dot.deobfuscators.Xenocode { } public override string Type { + get { return DeobfuscatorInfo.THE_TYPE; } + } + + public override string TypeLong { get { return DeobfuscatorInfo.THE_NAME; } } public override string Name { - get { return Type; } + get { return TypeLong; } } public Deobfuscator(Options options) diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/Deobfuscator.cs b/de4dot.code/deobfuscators/dotNET_Reactor/Deobfuscator.cs index a016e6b1..fabd7016 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/Deobfuscator.cs @@ -28,6 +28,7 @@ using de4dot.blocks; namespace de4dot.deobfuscators.dotNET_Reactor { class DeobfuscatorInfo : DeobfuscatorInfoBase { public const string THE_NAME = ".NET Reactor"; + public const string THE_TYPE = "dr"; const string DEFAULT_REGEX = DeobfuscatorBase.DEFAULT_VALID_NAME_REGEX; BoolOption decryptMethods; BoolOption decryptBools; @@ -55,7 +56,7 @@ namespace de4dot.deobfuscators.dotNET_Reactor { } public override string Type { - get { return "dr"; } + get { return THE_TYPE; } } public override IDeobfuscator createDeobfuscator() { @@ -115,6 +116,10 @@ namespace de4dot.deobfuscators.dotNET_Reactor { } public override string Type { + get { return DeobfuscatorInfo.THE_TYPE; } + } + + public override string TypeLong { get { return DeobfuscatorInfo.THE_NAME; } }