Skip to content

Commit

Permalink
Add options to disable renaming types, fields, etc
Browse files Browse the repository at this point in the history
wtfsck committed Dec 1, 2012

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
1 parent 99c7cf8 commit b3e06c4
Showing 2 changed files with 39 additions and 0 deletions.
15 changes: 15 additions & 0 deletions de4dot.cui/CommandLineParser.cs
Original file line number Diff line number Diff line change
@@ -120,6 +120,21 @@ void addAllOptions() {
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;
}));
24 changes: 24 additions & 0 deletions de4dot.cui/FilesDeobfuscator.cs
Original file line number Diff line number Diff line change
@@ -38,6 +38,14 @@ public class Options {
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 @@ public Options() {
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 @@ void rename(IEnumerable<IObfuscatedFile> theFiles) {
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,
};

0 comments on commit b3e06c4

Please sign in to comment.