diff --git a/AssemblyServer-x64/AssemblyServer-x64.csproj b/AssemblyServer-x64/AssemblyServer-x64.csproj
index ec8b78ec..5037e636 100644
--- a/AssemblyServer-x64/AssemblyServer-x64.csproj
+++ b/AssemblyServer-x64/AssemblyServer-x64.csproj
@@ -24,6 +24,7 @@
DEBUG;TRACE
prompt
4
+ true
x64
@@ -34,6 +35,7 @@
prompt
4
true
+ true
diff --git a/blocks/DotNetUtils.cs b/blocks/DotNetUtils.cs
index 03462a8b..4d136dd9 100644
--- a/blocks/DotNetUtils.cs
+++ b/blocks/DotNetUtils.cs
@@ -362,7 +362,11 @@ namespace de4dot.blocks {
return null;
}
- public static IEnumerable findMethods(IEnumerable methods, string returnType, string[] argsTypes, bool isStatic = true) {
+ public static IEnumerable findMethods(IEnumerable methods, string returnType, string[] argsTypes) {
+ return findMethods(methods, returnType, argsTypes, true);
+ }
+
+ public static IEnumerable findMethods(IEnumerable methods, string returnType, string[] argsTypes, bool isStatic) {
foreach (var method in methods) {
if (!method.HasBody || method.CallingConvention != MethodCallingConvention.Default)
continue;
diff --git a/blocks/MemberRefInstance.cs b/blocks/MemberRefInstance.cs
index f459ec54..751ff272 100644
--- a/blocks/MemberRefInstance.cs
+++ b/blocks/MemberRefInstance.cs
@@ -31,7 +31,11 @@ namespace de4dot.blocks {
IGenericInstance gim;
bool modified;
- public static TypeReference make(TypeReference typeReference, GenericInstanceType git, IGenericInstance gim = null) {
+ public static TypeReference make(TypeReference typeReference, GenericInstanceType git) {
+ return make(typeReference, git, null);
+ }
+
+ public static TypeReference make(TypeReference typeReference, GenericInstanceType git, IGenericInstance gim) {
if (git == null && gim == null)
return typeReference;
return new TypeReferenceInstance(typeReference, git, gim).makeInstance();
@@ -88,7 +92,11 @@ namespace de4dot.blocks {
IGenericInstance gim;
bool modified;
- public MultiTypeRefInstance(GenericInstanceType git, IGenericInstance gim = null) {
+ public MultiTypeRefInstance(GenericInstanceType git)
+ : this(git, null) {
+ }
+
+ public MultiTypeRefInstance(GenericInstanceType git, IGenericInstance gim) {
this.git = git;
this.gim = gim;
}
@@ -112,7 +120,11 @@ namespace de4dot.blocks {
public class MethodReferenceInstance : MultiTypeRefInstance {
MethodReference methodReference;
- public static MethodReference make(MethodReference methodReference, GenericInstanceType git, IGenericInstance gim = null) {
+ public static MethodReference make(MethodReference methodReference, GenericInstanceType git) {
+ return make(methodReference, git, null);
+ }
+
+ public static MethodReference make(MethodReference methodReference, GenericInstanceType git, IGenericInstance gim) {
if (git == null && gim == null)
return methodReference;
return new MethodReferenceInstance(methodReference, git, gim).makeInstance();
diff --git a/blocks/MemberReferenceHelper.cs b/blocks/MemberReferenceHelper.cs
index 794a41c7..7a33691a 100644
--- a/blocks/MemberReferenceHelper.cs
+++ b/blocks/MemberReferenceHelper.cs
@@ -815,7 +815,11 @@ namespace de4dot.blocks {
throw new ApplicationException(string.Format("Unknown MemberReference type: {0}", type));
}
- public static bool verifyType(TypeReference typeReference, string assembly, string type, string extra = "") {
+ public static bool verifyType(TypeReference typeReference, string assembly, string type) {
+ return verifyType(typeReference, assembly, type, "");
+ }
+
+ public static bool verifyType(TypeReference typeReference, string assembly, string type, string extra) {
return typeReference != null &&
MemberReferenceHelper.getCanonicalizedTypeRefName(typeReference.GetElementType()) == "[" + assembly + "]" + type &&
typeReference.FullName == type + extra;
diff --git a/blocks/ScopeBlock.cs b/blocks/ScopeBlock.cs
index 3f00f31f..af30eedc 100644
--- a/blocks/ScopeBlock.cs
+++ b/blocks/ScopeBlock.cs
@@ -71,7 +71,11 @@ namespace de4dot.blocks {
}
}
- List findBlocks(Func blockChecker = null) {
+ List findBlocks() {
+ return findBlocks(null);
+ }
+
+ List findBlocks(Func blockChecker) {
var blocks = new List();
foreach (var bb in getBaseBlocks()) {
Block block = bb as Block;
diff --git a/blocks/cflow/MethodCallInlinerBase.cs b/blocks/cflow/MethodCallInlinerBase.cs
index 17f5de53..b8d20296 100644
--- a/blocks/cflow/MethodCallInlinerBase.cs
+++ b/blocks/cflow/MethodCallInlinerBase.cs
@@ -80,7 +80,11 @@ namespace de4dot.blocks.cflow {
return true;
}
- protected bool inlineOtherMethod(int patchIndex, MethodDefinition methodToInline, Instruction instr, int instrIndex, int popLastArgs = 0) {
+ protected bool inlineOtherMethod(int patchIndex, MethodDefinition methodToInline, Instruction instr, int instrIndex) {
+ return inlineOtherMethod(patchIndex, methodToInline, instr, instrIndex, 0);
+ }
+
+ protected bool inlineOtherMethod(int patchIndex, MethodDefinition methodToInline, Instruction instr, int instrIndex, int popLastArgs) {
return patchMethod(methodToInline, tryInlineOtherMethod(patchIndex, methodToInline, instr, instrIndex, popLastArgs));
}
@@ -95,7 +99,11 @@ namespace de4dot.blocks.cflow {
return true;
}
- protected InstructionPatcher tryInlineOtherMethod(int patchIndex, MethodDefinition methodToInline, Instruction instr, int instrIndex, int popLastArgs = 0) {
+ protected InstructionPatcher tryInlineOtherMethod(int patchIndex, MethodDefinition methodToInline, Instruction instr, int instrIndex) {
+ return tryInlineOtherMethod(patchIndex, methodToInline, instr, instrIndex, 0);
+ }
+
+ protected InstructionPatcher tryInlineOtherMethod(int patchIndex, MethodDefinition methodToInline, Instruction instr, int instrIndex, int popLastArgs) {
int loadIndex = 0;
int methodArgsCount = DotNetUtils.getArgsCount(methodToInline);
bool foundLdarga = false;
@@ -183,7 +191,11 @@ namespace de4dot.blocks.cflow {
return instr != null && instr.OpCode.Code == Code.Ret;
}
- protected bool checkSameMethods(MethodReference method, MethodDefinition methodToInline, int ignoreLastMethodToInlineArgs = 0) {
+ protected bool checkSameMethods(MethodReference method, MethodDefinition methodToInline) {
+ return checkSameMethods(method, methodToInline, 0);
+ }
+
+ protected bool checkSameMethods(MethodReference method, MethodDefinition methodToInline, int ignoreLastMethodToInlineArgs) {
var methodToInlineArgs = DotNetUtils.getArgs(methodToInline);
var methodArgs = DotNetUtils.getArgs(method);
if (methodToInlineArgs.Count - ignoreLastMethodToInlineArgs != methodArgs.Count)
diff --git a/de4dot-x64/de4dot-x64.csproj b/de4dot-x64/de4dot-x64.csproj
index 59053ba9..3d2b4e02 100644
--- a/de4dot-x64/de4dot-x64.csproj
+++ b/de4dot-x64/de4dot-x64.csproj
@@ -24,6 +24,7 @@
DEBUG;TRACE
prompt
4
+ true
x64
@@ -34,6 +35,7 @@
prompt
4
true
+ true
diff --git a/de4dot.code/NameRegexes.cs b/de4dot.code/NameRegexes.cs
index eb72641e..f5526586 100644
--- a/de4dot.code/NameRegexes.cs
+++ b/de4dot.code/NameRegexes.cs
@@ -55,7 +55,11 @@ namespace de4dot.code {
public bool DefaultValue { get; set; }
public const char regexSeparatorChar = '&';
- public NameRegexes(string regex = "") {
+ public NameRegexes()
+ : this("") {
+ }
+
+ public NameRegexes(string regex) {
set(regex);
}
diff --git a/de4dot.code/Option.cs b/de4dot.code/Option.cs
index 09c472e2..81654ce1 100644
--- a/de4dot.code/Option.cs
+++ b/de4dot.code/Option.cs
@@ -214,7 +214,11 @@ namespace de4dot.code {
get { return false; }
}
- public NoArgOption(string shortName, string longName, string description, Action action = null)
+ public NoArgOption(string shortName, string longName, string description)
+ : this(shortName, longName, description, null) {
+ }
+
+ public NoArgOption(string shortName, string longName, string description, Action action)
: base(shortName, longName, description) {
this.action = action;
}
diff --git a/de4dot.code/deobfuscators/ArrayFinder.cs b/de4dot.code/deobfuscators/ArrayFinder.cs
index 2d413143..e15ddbc0 100644
--- a/de4dot.code/deobfuscators/ArrayFinder.cs
+++ b/de4dot.code/deobfuscators/ArrayFinder.cs
@@ -25,7 +25,11 @@ using de4dot.blocks.cflow;
namespace de4dot.code.deobfuscators {
static class ArrayFinder {
- public static List getArrays(MethodDefinition method, TypeReference arrayElemntType = null) {
+ public static List getArrays(MethodDefinition method) {
+ return getArrays(method, null);
+ }
+
+ public static List getArrays(MethodDefinition method, TypeReference arrayElemntType) {
var arrays = new List();
var instrs = method.Body.Instructions;
for (int i = 0; i < instrs.Count; i++) {
diff --git a/de4dot.code/deobfuscators/Babel_NET/InflaterCreator.cs b/de4dot.code/deobfuscators/Babel_NET/InflaterCreator.cs
index c4cb9a9d..704f8b89 100644
--- a/de4dot.code/deobfuscators/Babel_NET/InflaterCreator.cs
+++ b/de4dot.code/deobfuscators/Babel_NET/InflaterCreator.cs
@@ -40,7 +40,11 @@ namespace de4dot.code.deobfuscators.Babel_NET {
return new BabelInflater(noHeader, magic.Value);
}
- static Inflater createNormal(bool noHeader, string errorMessage = null) {
+ static Inflater createNormal(bool noHeader) {
+ return createNormal(noHeader, null);
+ }
+
+ static Inflater createNormal(bool noHeader, string errorMessage) {
if (errorMessage != null)
Log.w("{0}", errorMessage);
return new Inflater(noHeader);
diff --git a/de4dot.code/deobfuscators/DeobfuscatorBase.cs b/de4dot.code/deobfuscators/DeobfuscatorBase.cs
index 8358a16b..888b92ce 100644
--- a/de4dot.code/deobfuscators/DeobfuscatorBase.cs
+++ b/de4dot.code/deobfuscators/DeobfuscatorBase.cs
@@ -663,7 +663,11 @@ namespace de4dot.code.deobfuscators {
}
}
- protected void removeProxyDelegates(ProxyCallFixerBase proxyCallFixer, bool removeCreators = true) {
+ protected void removeProxyDelegates(ProxyCallFixerBase proxyCallFixer) {
+ removeProxyDelegates(proxyCallFixer, true);
+ }
+
+ protected void removeProxyDelegates(ProxyCallFixerBase proxyCallFixer, bool removeCreators) {
if (proxyCallFixer.Errors != 0) {
Log.v("Not removing proxy delegates and creator type since errors were detected.");
return;
diff --git a/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs b/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs
index 710901b0..dba23b54 100644
--- a/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs
+++ b/de4dot.code/deobfuscators/DeobfuscatorInfoBase.cs
@@ -23,7 +23,11 @@ namespace de4dot.code.deobfuscators {
public abstract class DeobfuscatorInfoBase : IDeobfuscatorInfo {
protected NameRegexOption validNameRegex;
- public DeobfuscatorInfoBase(string nameRegex = null) {
+ public DeobfuscatorInfoBase()
+ : this(null) {
+ }
+
+ public DeobfuscatorInfoBase(string nameRegex) {
validNameRegex = new NameRegexOption(null, makeArgName("name"), "Valid name regex pattern", nameRegex ?? DeobfuscatorBase.DEFAULT_VALID_NAME_REGEX);
}
diff --git a/de4dot.code/deobfuscators/IDeobfuscatedFile.cs b/de4dot.code/deobfuscators/IDeobfuscatedFile.cs
index 60b34c52..61a14197 100644
--- a/de4dot.code/deobfuscators/IDeobfuscatedFile.cs
+++ b/de4dot.code/deobfuscators/IDeobfuscatedFile.cs
@@ -20,7 +20,7 @@
namespace de4dot.code.deobfuscators {
public interface IDeobfuscatedFile : ISimpleDeobfuscator {
IDeobfuscatorContext DeobfuscatorContext { get; }
- void createAssemblyFile(byte[] data, string assemblyName, string extension = null);
+ void createAssemblyFile(byte[] data, string assemblyName, string extension);
void stringDecryptersAdded();
}
}
diff --git a/de4dot.code/deobfuscators/MPRESS/Deobfuscator.cs b/de4dot.code/deobfuscators/MPRESS/Deobfuscator.cs
index 5311149b..bab02faf 100644
--- a/de4dot.code/deobfuscators/MPRESS/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/MPRESS/Deobfuscator.cs
@@ -109,7 +109,11 @@ namespace de4dot.code.deobfuscators.MPRESS {
public readonly string parameters;
public readonly string name;
- public MethodInfo(string returnType, string parameters, string name = null) {
+ public MethodInfo(string returnType, string parameters)
+ : this(returnType, parameters, null) {
+ }
+
+ public MethodInfo(string returnType, string parameters, string name) {
this.returnType = returnType;
this.parameters = parameters;
this.name = name;
diff --git a/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs b/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs
index bc9e49dd..eae3ff19 100644
--- a/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/SmartAssembly/Deobfuscator.cs
@@ -336,7 +336,7 @@ namespace de4dot.code.deobfuscators.SmartAssembly {
void dumpEmbeddedAssemblies() {
assemblyResolver.resolveResources();
foreach (var tuple in assemblyResolver.getDecryptedResources()) {
- DeobfuscatedFile.createAssemblyFile(tuple.Item2, tuple.Item1.simpleName);
+ DeobfuscatedFile.createAssemblyFile(tuple.Item2, tuple.Item1.simpleName, null);
addResourceToBeRemoved(tuple.Item1.resource, string.Format("Embedded assembly: {0}", tuple.Item1.assemblyName));
}
}
diff --git a/de4dot.code/deobfuscators/TypesRestorer.cs b/de4dot.code/deobfuscators/TypesRestorer.cs
index db7525f0..64025368 100644
--- a/de4dot.code/deobfuscators/TypesRestorer.cs
+++ b/de4dot.code/deobfuscators/TypesRestorer.cs
@@ -71,7 +71,11 @@ namespace de4dot.code.deobfuscators {
this.arg = arg;
}
- public void add(TypeReference type, bool wasNewobj = false) {
+ public void add(TypeReference type) {
+ add(type, false);
+ }
+
+ public void add(TypeReference type, bool wasNewobj) {
if (wasNewobj) {
if (!newobjTypes)
clear();
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs
index 89857983..a12a0154 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/Deobfuscator.cs
@@ -521,7 +521,7 @@ namespace de4dot.code.deobfuscators.dotNET_Reactor.v4 {
return;
foreach (var info in assemblyResolver.getEmbeddedAssemblies(DeobfuscatedFile, this)) {
var simpleName = Utils.getAssemblySimpleName(info.name);
- DeobfuscatedFile.createAssemblyFile(info.resource.GetResourceData(), simpleName);
+ DeobfuscatedFile.createAssemblyFile(info.resource.GetResourceData(), simpleName, null);
addResourceToBeRemoved(info.resource, string.Format("Embedded assembly: {0}", info.name));
}
}
diff --git a/de4dot.code/deobfuscators/dotNET_Reactor/v4/EncryptedResource.cs b/de4dot.code/deobfuscators/dotNET_Reactor/v4/EncryptedResource.cs
index ee7daa7f..42b155e3 100644
--- a/de4dot.code/deobfuscators/dotNET_Reactor/v4/EncryptedResource.cs
+++ b/de4dot.code/deobfuscators/dotNET_Reactor/v4/EncryptedResource.cs
@@ -69,7 +69,11 @@ namespace de4dot.code.deobfuscators.dotNET_Reactor.v4 {
return DeobUtils.lookup(module, def, errorMessage);
}
- public bool couldBeResourceDecrypter(MethodDefinition method, IEnumerable additionalTypes, bool checkResource = true) {
+ public bool couldBeResourceDecrypter(MethodDefinition method, IEnumerable additionalTypes) {
+ return couldBeResourceDecrypter(method, additionalTypes, true);
+ }
+
+ public bool couldBeResourceDecrypter(MethodDefinition method, IEnumerable additionalTypes, bool checkResource) {
if (!method.IsStatic)
return false;
if (method.Body == null)
diff --git a/de4dot.code/renamer/NameCreators.cs b/de4dot.code/renamer/NameCreators.cs
index ce8de387..73e49caf 100644
--- a/de4dot.code/renamer/NameCreators.cs
+++ b/de4dot.code/renamer/NameCreators.cs
@@ -63,7 +63,11 @@ namespace de4dot.code.renamer {
class NameCreator : NameCreatorCounter {
string prefix;
- public NameCreator(string prefix, int num = 0) {
+ public NameCreator(string prefix)
+ : this(prefix, 0) {
+ }
+
+ public NameCreator(string prefix, int num) {
this.prefix = prefix;
this.num = num;
}
@@ -82,7 +86,11 @@ namespace de4dot.code.renamer {
string prefix;
const string separator = "_";
- public NameCreator2(string prefix, int num = 0) {
+ public NameCreator2(string prefix)
+ : this(prefix, 0) {
+ }
+
+ public NameCreator2(string prefix, int num) {
this.prefix = prefix;
this.num = num;
}
@@ -99,7 +107,7 @@ namespace de4dot.code.renamer {
}
interface ITypeNameCreator {
- string create(TypeDefinition typeDefinition, string newBaseTypeName = null);
+ string create(TypeDefinition typeDefinition, string newBaseTypeName);
}
class NameInfos {
@@ -164,7 +172,7 @@ namespace de4dot.code.renamer {
return new NameCreator(prefix);
}
- public string create(TypeDefinition typeDefinition, string newBaseTypeName = null) {
+ public string create(TypeDefinition typeDefinition, string newBaseTypeName) {
var nameCreator = getNameCreator(typeDefinition, newBaseTypeName);
return existingNames.getName(typeDefinition.Name, nameCreator);
}
diff --git a/de4dot.code/renamer/TypeInfo.cs b/de4dot.code/renamer/TypeInfo.cs
index 858715ee..ff0d1b19 100644
--- a/de4dot.code/renamer/TypeInfo.cs
+++ b/de4dot.code/renamer/TypeInfo.cs
@@ -405,7 +405,11 @@ namespace de4dot.code.renamer {
return true;
}
- void prepareRenameGenericParams(IEnumerable genericParams, INameChecker checker, IEnumerable otherGenericParams = null) {
+ void prepareRenameGenericParams(IEnumerable genericParams, INameChecker checker) {
+ prepareRenameGenericParams(genericParams, checker, null);
+ }
+
+ void prepareRenameGenericParams(IEnumerable genericParams, INameChecker checker, IEnumerable otherGenericParams) {
var usedNames = new Dictionary(StringComparer.Ordinal);
var nameCreator = new GenericParamNameCreator();
diff --git a/de4dot.cui/FilesDeobfuscator.cs b/de4dot.cui/FilesDeobfuscator.cs
index dbbae9a9..29077397 100644
--- a/de4dot.cui/FilesDeobfuscator.cs
+++ b/de4dot.cui/FilesDeobfuscator.cs
@@ -120,7 +120,11 @@ namespace de4dot.cui {
saveAllFiles(allFiles);
}
- IEnumerable loadAllFiles(bool onlyScan = false) {
+ IEnumerable loadAllFiles() {
+ return loadAllFiles(false);
+ }
+
+ IEnumerable loadAllFiles(bool onlyScan) {
var loader = new DotNetFileLoader(new DotNetFileLoader.Options {
PossibleFiles = options.Files,
SearchDirs = options.SearchDirs,
@@ -172,7 +176,7 @@ namespace de4dot.cui {
}
}
- bool add(IObfuscatedFile file, bool skipUnknownObfuscator = false, bool isFromPossibleFiles = false) {
+ bool add(IObfuscatedFile file, bool skipUnknownObfuscator, bool isFromPossibleFiles) {
var key = Utils.getFullPath(file.Filename);
if (allFiles.ContainsKey(key)) {
Log.w("Ingoring duplicate file: {0}", file.Filename);
@@ -301,7 +305,7 @@ namespace de4dot.cui {
}
var obfuscatedFile = new ObfuscatedFile(fileOptions, options.AssemblyClientFactory);
- if (add(obfuscatedFile, searchDir.SkipUnknownObfuscators))
+ if (add(obfuscatedFile, searchDir.SkipUnknownObfuscators, false))
return obfuscatedFile;
return null;
}
diff --git a/de4dot.cui/Program.cs b/de4dot.cui/Program.cs
index e4b96435..5a0a6c70 100644
--- a/de4dot.cui/Program.cs
+++ b/de4dot.cui/Program.cs
@@ -138,7 +138,11 @@ namespace de4dot.cui {
return hasEnv("windir") && !hasEnv("PROMPT");
}
- public static void printStackTrace(Exception ex, Log.LogLevel logLevel = Log.LogLevel.error) {
+ public static void printStackTrace(Exception ex) {
+ printStackTrace(ex, Log.LogLevel.error);
+ }
+
+ public static void printStackTrace(Exception ex, Log.LogLevel logLevel) {
var line = new string('-', 78);
Log.log(logLevel, "\n\n");
Log.log(logLevel, line);