From dcdbe25a0f6763be4471f88227f9b0952501050c Mon Sep 17 00:00:00 2001 From: de4dot Date: Sat, 1 Dec 2012 02:22:59 +0100 Subject: [PATCH] Add option to disable creating new ParamDefs when renaming --- de4dot.code/renamer/Renamer.cs | 7 ++++++- de4dot.cui/CommandLineParser.cs | 3 +++ de4dot.cui/FilesDeobfuscator.cs | 2 ++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/de4dot.code/renamer/Renamer.cs b/de4dot.code/renamer/Renamer.cs index a26c1945..753138a2 100644 --- a/de4dot.code/renamer/Renamer.cs +++ b/de4dot.code/renamer/Renamer.cs @@ -39,6 +39,7 @@ namespace de4dot.code.renamer { public bool RestorePropertiesFromNames { get; set; } public bool RestoreEvents { get; set; } public bool RestoreEventsFromNames { get; set; } + public bool DontCreateNewParamDefs { get; set; } Modules modules; MemberInfos memberInfos = new MemberInfos(); @@ -321,7 +322,11 @@ namespace de4dot.code.renamer { var paramInfo = memberInfos.param(param); if (!paramInfo.gotNewName()) continue; - param.ParameterDef.CreateParamDef(); + if (!param.ParameterDef.HasParamDef) { + if (DontCreateNewParamDefs) + continue; + param.ParameterDef.CreateParamDef(); + } param.ParameterDef.Name = paramInfo.newName; if (isVerbose) { if (param.IsReturnParameter) diff --git a/de4dot.cui/CommandLineParser.cs b/de4dot.cui/CommandLineParser.cs index a5134dce..493cf8eb 100644 --- a/de4dot.cui/CommandLineParser.cs +++ b/de4dot.cui/CommandLineParser.cs @@ -135,6 +135,9 @@ namespace de4dot.cui { } } })); + miscOptions.Add(new NoArgOption(null, "dont-create-params", "Don't create method params when renaming", () => { + filesOptions.DontCreateNewParamDefs = true; + })); miscOptions.Add(new NoArgOption(null, "dont-restore-props", "Don't restore properties/events", () => { filesOptions.RestorePropsEvents = false; })); diff --git a/de4dot.cui/FilesDeobfuscator.cs b/de4dot.cui/FilesDeobfuscator.cs index 972a60a9..03a511c3 100644 --- a/de4dot.cui/FilesDeobfuscator.cs +++ b/de4dot.cui/FilesDeobfuscator.cs @@ -38,6 +38,7 @@ namespace de4dot.cui { public IList Files { get; set; } public IList SearchDirs { get; set; } public bool DetectObfuscators { get; set; } + public bool DontCreateNewParamDefs { get; set; } public bool RenameNamespaces { get; set; } public bool RenameTypes { get; set; } public bool RenameProperties { get; set; } @@ -385,6 +386,7 @@ namespace de4dot.cui { if (!options.RenameSymbols) return; var renamer = new Renamer(deobfuscatorContext, theFiles) { + DontCreateNewParamDefs = options.DontCreateNewParamDefs, RenameNamespaces = options.RenameNamespaces, RenameTypes = options.RenameTypes, RenameProperties = options.RenameProperties,