From 5f6841e317347223a85a3d270f6af75ea5eb7379 Mon Sep 17 00:00:00 2001 From: de4dot Date: Sat, 14 Jan 2012 12:34:42 +0100 Subject: [PATCH] Add HasHandlers property to base class --- de4dot.code/MethodReturnValueInliner.cs | 4 ++++ de4dot.code/StringDecrypter.cs | 6 +++++- de4dot.code/deobfuscators/DeobfuscatorBase.cs | 3 +-- de4dot.code/deobfuscators/ValueInlinerBase.cs | 2 +- de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs | 4 +--- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/de4dot.code/MethodReturnValueInliner.cs b/de4dot.code/MethodReturnValueInliner.cs index 8ee2086f..c9265696 100644 --- a/de4dot.code/MethodReturnValueInliner.cs +++ b/de4dot.code/MethodReturnValueInliner.cs @@ -163,6 +163,8 @@ namespace de4dot.code { } } + public abstract bool HasHandlers { get; } + protected MethodDefinition Method { get { return blocks.Method; } } @@ -173,6 +175,8 @@ namespace de4dot.code { protected abstract CallResult createCallResult(MethodReference method, Block block, int callInstrIndex); public int decrypt(Blocks theBlocks) { + if (!HasHandlers) + return 0; try { blocks = theBlocks; callResults = new List(); diff --git a/de4dot.code/StringDecrypter.cs b/de4dot.code/StringDecrypter.cs index da4f062d..cdd1dac4 100644 --- a/de4dot.code/StringDecrypter.cs +++ b/de4dot.code/StringDecrypter.cs @@ -74,6 +74,10 @@ namespace de4dot.code { } } + public override bool HasHandlers { + get { return methodTokenToId.Count != 0; } + } + public DynamicStringDecrypter(IAssemblyClient assemblyClient) { this.assemblyClient = assemblyClient; } @@ -128,7 +132,7 @@ namespace de4dot.code { class StaticStringDecrypter : StringDecrypter { MethodDefinitionAndDeclaringTypeDict> stringDecrypters = new MethodDefinitionAndDeclaringTypeDict>(); - public bool HasHandlers { + public override bool HasHandlers { get { return stringDecrypters.Count != 0; } } diff --git a/de4dot.code/deobfuscators/DeobfuscatorBase.cs b/de4dot.code/deobfuscators/DeobfuscatorBase.cs index 888a635e..72a0d1a6 100644 --- a/de4dot.code/deobfuscators/DeobfuscatorBase.cs +++ b/de4dot.code/deobfuscators/DeobfuscatorBase.cs @@ -153,8 +153,7 @@ namespace de4dot.code.deobfuscators { } public virtual void deobfuscateStrings(Blocks blocks) { - if (staticStringDecrypter.HasHandlers) - staticStringDecrypter.decrypt(blocks); + staticStringDecrypter.decrypt(blocks); } public virtual bool deobfuscateOther(Blocks blocks) { diff --git a/de4dot.code/deobfuscators/ValueInlinerBase.cs b/de4dot.code/deobfuscators/ValueInlinerBase.cs index e9494c5d..31dff48d 100644 --- a/de4dot.code/deobfuscators/ValueInlinerBase.cs +++ b/de4dot.code/deobfuscators/ValueInlinerBase.cs @@ -35,7 +35,7 @@ namespace de4dot.code.deobfuscators { } } - public bool HasHandlers { + public override bool HasHandlers { get { return decrypterMethods.Count != 0; } } diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs index 359cb360..a3ae81c0 100644 --- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs +++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs @@ -518,9 +518,7 @@ namespace de4dot.code.deobfuscators.dotNET_Reactor.v4 { } public override bool deobfuscateOther(Blocks blocks) { - if (booleanValueInliner.HasHandlers) - return booleanValueInliner.decrypt(blocks) > 0; - return false; + return booleanValueInliner.decrypt(blocks) > 0; } public override void deobfuscateMethodEnd(Blocks blocks) {