Add an option to not rename delegate fields

This commit is contained in:
de4dot 2012-12-01 04:35:39 +01:00
parent 6be080ca59
commit 8a36c8eea6
3 changed files with 8 additions and 1 deletions

View File

@ -40,6 +40,7 @@ namespace de4dot.code.renamer {
public bool RestoreEvents { get; set; }
public bool RestoreEventsFromNames { get; set; }
public bool DontCreateNewParamDefs { get; set; }
public bool DontRenameDelegateFields { get; set; }
Modules modules;
MemberInfos memberInfos = new MemberInfos();
@ -255,10 +256,13 @@ namespace de4dot.code.renamer {
void renameFields(TypeInfo info) {
if (!RenameFields)
return;
bool isDelegateType = isDelegateClass.check(info.type);
foreach (var fieldDef in info.type.AllFieldsSorted) {
var fieldInfo = memberInfos.field(fieldDef);
if (!fieldInfo.gotNewName())
continue;
if (isDelegateType && DontRenameDelegateFields)
continue;
fieldDef.FieldDef.Name = new UTF8String(fieldInfo.newName);
if (isVerbose)
Logger.v("Field: {0} ({1:X8}) => {2}",

View File

@ -121,7 +121,7 @@ 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) => {
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), d(elegate fields). Can be combined, eg. efm", "flags", (val) => {
foreach (var c in val) {
switch (c) {
case 'n': filesOptions.RenameNamespaces = false; break;
@ -132,6 +132,7 @@ namespace de4dot.cui {
case 'm': filesOptions.RenameMethods = false; break;
case 'a': filesOptions.RenameMethodArgs = false; break;
case 'g': filesOptions.RenameGenericParams = false; break;
case 'd': filesOptions.DontRenameDelegateFields = true; break;
default: throw new UserException(string.Format("Unrecognized --keep-names char: '{0}'", c));
}
}

View File

@ -49,6 +49,7 @@ namespace de4dot.cui {
public bool RenameMethods { get; set; }
public bool RenameMethodArgs { get; set; }
public bool RenameGenericParams { get; set; }
public bool DontRenameDelegateFields { get; set; }
public bool RenameSymbols { get; set; }
public bool RestorePropsEvents { get; set; }
public bool ControlFlowDeobfuscation { get; set; }
@ -400,6 +401,7 @@ namespace de4dot.cui {
RenameMethods = options.RenameMethods,
RenameMethodArgs = options.RenameMethodArgs,
RenameGenericParams = options.RenameGenericParams,
DontRenameDelegateFields = options.DontRenameDelegateFields,
RestorePropertiesFromNames = options.RestorePropsEvents,
RestoreEventsFromNames = options.RestorePropsEvents,
};