Add options to disable renaming types, fields, etc

This commit is contained in:
de4dot 2012-12-01 02:12:13 +01:00
parent 99c7cf8eb5
commit b3e06c4ce6
2 changed files with 39 additions and 0 deletions

View File

@ -120,6 +120,21 @@ namespace de4dot.cui {
miscOptions.Add(new NoArgOption(null, "dont-rename", "Don't rename classes, methods, etc.", () => {
filesOptions.RenameSymbols = false;
}));
miscOptions.Add(new OneArgOption(null, "keep-names", "Don't rename n(amespaces), t(ypes), p(rops), e(vents), f(ields), m(ethods), a(rgs), g(enericparams). Can be combined, eg. efm", "flags", (val) => {
foreach (var c in val) {
switch (c) {
case 'n': filesOptions.RenameNamespaces = false; break;
case 't': filesOptions.RenameTypes = false; break;
case 'p': filesOptions.RenameProperties = false; break;
case 'e': filesOptions.RenameEvents = false; break;
case 'f': filesOptions.RenameFields = false; break;
case 'm': filesOptions.RenameMethods = false; break;
case 'a': filesOptions.RenameMethodArgs = false; break;
case 'g': filesOptions.RenameGenericParams = false; break;
default: throw new UserException(string.Format("Unrecognized --keep-names char: '{0}'", c));
}
}
}));
miscOptions.Add(new NoArgOption(null, "dont-restore-props", "Don't restore properties/events", () => {
filesOptions.RestorePropsEvents = false;
}));

View File

@ -38,6 +38,14 @@ namespace de4dot.cui {
public IList<IObfuscatedFile> Files { get; set; }
public IList<SearchDir> SearchDirs { get; set; }
public bool DetectObfuscators { get; set; }
public bool RenameNamespaces { get; set; }
public bool RenameTypes { get; set; }
public bool RenameProperties { get; set; }
public bool RenameEvents { get; set; }
public bool RenameFields { get; set; }
public bool RenameMethods { get; set; }
public bool RenameMethodArgs { get; set; }
public bool RenameGenericParams { get; set; }
public bool RenameSymbols { get; set; }
public bool RestorePropsEvents { get; set; }
public bool ControlFlowDeobfuscation { get; set; }
@ -53,6 +61,14 @@ namespace de4dot.cui {
Files = new List<IObfuscatedFile>();
SearchDirs = new List<SearchDir>();
DefaultStringDecrypterMethods = new List<string>();
RenameNamespaces = true;
RenameTypes = true;
RenameProperties = true;
RenameEvents = true;
RenameFields = true;
RenameMethods = true;
RenameMethodArgs = true;
RenameGenericParams = true;
RenameSymbols = true;
RestorePropsEvents = true;
ControlFlowDeobfuscation = true;
@ -369,6 +385,14 @@ namespace de4dot.cui {
if (!options.RenameSymbols)
return;
var renamer = new Renamer(deobfuscatorContext, theFiles) {
RenameNamespaces = options.RenameNamespaces,
RenameTypes = options.RenameTypes,
RenameProperties = options.RenameProperties,
RenameEvents = options.RenameEvents,
RenameFields = options.RenameFields,
RenameMethods = options.RenameMethods,
RenameMethodArgs = options.RenameMethodArgs,
RenameGenericParams = options.RenameGenericParams,
RestorePropertiesFromNames = options.RestorePropsEvents,
RestoreEventsFromNames = options.RestorePropsEvents,
};