Rename method return parameters
This commit is contained in:
parent
7ba4905cc7
commit
9376aa0de5
|
@ -704,6 +704,10 @@ namespace de4dot.code.deobfuscators {
|
||||||
return name != null && checkValidName(name);
|
return name != null && checkValidName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual bool isValidMethodReturnArgName(string name) {
|
||||||
|
return string.IsNullOrEmpty(name) || checkValidName(name);
|
||||||
|
}
|
||||||
|
|
||||||
public virtual bool isValidResourceKeyName(string name) {
|
public virtual bool isValidResourceKeyName(string name) {
|
||||||
return name != null && checkValidName(name);
|
return name != null && checkValidName(name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -218,6 +218,10 @@ namespace de4dot.code.deobfuscators.dotNET_Reactor.v3 {
|
||||||
return name != null && checkValidName(name, isRandomNameMembers);
|
return name != null && checkValidName(name, isRandomNameMembers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool isValidMethodReturnArgName(string name) {
|
||||||
|
return string.IsNullOrEmpty(name) || checkValidName(name, isRandomNameMembers);
|
||||||
|
}
|
||||||
|
|
||||||
public override bool isValidResourceKeyName(string name) {
|
public override bool isValidResourceKeyName(string name) {
|
||||||
return name != null && checkValidName(name, isRandomNameMembers);
|
return name != null && checkValidName(name, isRandomNameMembers);
|
||||||
}
|
}
|
||||||
|
|
|
@ -223,6 +223,10 @@ namespace de4dot.code.deobfuscators.dotNET_Reactor.v4 {
|
||||||
return name != null && checkValidName(name, isRandomNameMembers);
|
return name != null && checkValidName(name, isRandomNameMembers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool isValidMethodReturnArgName(string name) {
|
||||||
|
return string.IsNullOrEmpty(name) || checkValidName(name, isRandomNameMembers);
|
||||||
|
}
|
||||||
|
|
||||||
public override bool isValidResourceKeyName(string name) {
|
public override bool isValidResourceKeyName(string name) {
|
||||||
return name != null && checkValidName(name, isRandomNameMembers);
|
return name != null && checkValidName(name, isRandomNameMembers);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ namespace de4dot.code.renamer {
|
||||||
bool isValidFieldName(string name);
|
bool isValidFieldName(string name);
|
||||||
bool isValidGenericParamName(string name);
|
bool isValidGenericParamName(string name);
|
||||||
bool isValidMethodArgName(string name);
|
bool isValidMethodArgName(string name);
|
||||||
|
bool isValidMethodReturnArgName(string name);
|
||||||
bool isValidResourceKeyName(string name);
|
bool isValidResourceKeyName(string name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -282,7 +282,7 @@ namespace de4dot.code.renamer {
|
||||||
allMethodInfos[method] = new MethodInfo(method);
|
allMethodInfos[method] = new MethodInfo(method);
|
||||||
foreach (var gp in method.GenericParams)
|
foreach (var gp in method.GenericParams)
|
||||||
allGenericParamInfos[gp] = new GenericParamInfo(gp);
|
allGenericParamInfos[gp] = new GenericParamInfo(gp);
|
||||||
foreach (var param in method.ParamDefs)
|
foreach (var param in method.AllParamDefs)
|
||||||
allParamInfos[param] = new ParamInfo(param);
|
allParamInfos[param] = new ParamInfo(param);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -303,12 +303,16 @@ namespace de4dot.code.renamer {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RenameMethodArgs) {
|
if (RenameMethodArgs) {
|
||||||
foreach (var param in methodDef.ParamDefs) {
|
foreach (var param in methodDef.AllParamDefs) {
|
||||||
var paramInfo = memberInfos.param(param);
|
var paramInfo = memberInfos.param(param);
|
||||||
if (!paramInfo.gotNewName())
|
if (!paramInfo.gotNewName())
|
||||||
continue;
|
continue;
|
||||||
|
param.ParameterDefinition.CreateParamDef();
|
||||||
param.ParameterDefinition.Name = paramInfo.newName;
|
param.ParameterDefinition.Name = paramInfo.newName;
|
||||||
Log.v("Param ({0}/{1}): {2} => {3}", param.Index + 1, methodDef.ParamDefs.Count, Utils.removeNewlines(paramInfo.oldName), Utils.removeNewlines(paramInfo.newName));
|
if (param.IsReturnParameter)
|
||||||
|
Log.v("RetParam: {0} => {1}", Utils.removeNewlines(paramInfo.oldName), Utils.removeNewlines(paramInfo.newName));
|
||||||
|
else
|
||||||
|
Log.v("Param ({0}/{1}): {2} => {3}", param.Index + 1, methodDef.ParamDefs.Count, Utils.removeNewlines(paramInfo.oldName), Utils.removeNewlines(paramInfo.newName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -293,10 +293,10 @@ namespace de4dot.code.renamer {
|
||||||
}
|
}
|
||||||
|
|
||||||
void prepareRenameMethodArgs(MMethodDef methodDef) {
|
void prepareRenameMethodArgs(MMethodDef methodDef) {
|
||||||
|
VariableNameState newVariableNameState = null;
|
||||||
|
ParamInfo info;
|
||||||
if (methodDef.ParamDefs.Count > 0) {
|
if (methodDef.ParamDefs.Count > 0) {
|
||||||
if (isEventHandler(methodDef)) {
|
if (isEventHandler(methodDef)) {
|
||||||
ParamInfo info;
|
|
||||||
|
|
||||||
info = param(methodDef.ParamDefs[0]);
|
info = param(methodDef.ParamDefs[0]);
|
||||||
if (!info.gotNewName())
|
if (!info.gotNewName())
|
||||||
info.newName = "sender";
|
info.newName = "sender";
|
||||||
|
@ -306,10 +306,10 @@ namespace de4dot.code.renamer {
|
||||||
info.newName = "e";
|
info.newName = "e";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var newVariableNameState = variableNameState.cloneParamsOnly();
|
newVariableNameState = variableNameState.cloneParamsOnly();
|
||||||
var checker = NameChecker;
|
var checker = NameChecker;
|
||||||
foreach (var paramDef in methodDef.ParamDefs) {
|
foreach (var paramDef in methodDef.ParamDefs) {
|
||||||
var info = param(paramDef);
|
info = param(paramDef);
|
||||||
if (info.gotNewName())
|
if (info.gotNewName())
|
||||||
continue;
|
continue;
|
||||||
if (!checker.isValidMethodArgName(info.oldName))
|
if (!checker.isValidMethodArgName(info.oldName))
|
||||||
|
@ -318,6 +318,15 @@ namespace de4dot.code.renamer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
info = param(methodDef.ReturnParamDef);
|
||||||
|
if (!info.gotNewName()) {
|
||||||
|
if (!NameChecker.isValidMethodReturnArgName(info.oldName)) {
|
||||||
|
if (newVariableNameState == null)
|
||||||
|
newVariableNameState = variableNameState.cloneParamsOnly();
|
||||||
|
info.newName = newVariableNameState.getNewParamName(info.oldName, methodDef.ReturnParamDef.ParameterDefinition);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((methodDef.Property != null && methodDef == methodDef.Property.SetMethod) ||
|
if ((methodDef.Property != null && methodDef == methodDef.Property.SetMethod) ||
|
||||||
(methodDef.Event != null && (methodDef == methodDef.Event.AddMethod || methodDef == methodDef.Event.RemoveMethod))) {
|
(methodDef.Event != null && (methodDef == methodDef.Event.AddMethod || methodDef == methodDef.Event.RemoveMethod))) {
|
||||||
if (methodDef.ParamDefs.Count > 0) {
|
if (methodDef.ParamDefs.Count > 0) {
|
||||||
|
|
|
@ -24,6 +24,7 @@ namespace de4dot.code.renamer.asmmodules {
|
||||||
class MMethodDef : Ref {
|
class MMethodDef : Ref {
|
||||||
IList<MGenericParamDef> genericParams;
|
IList<MGenericParamDef> genericParams;
|
||||||
IList<MParamDef> paramDefs = new List<MParamDef>();
|
IList<MParamDef> paramDefs = new List<MParamDef>();
|
||||||
|
MParamDef returnParamDef;
|
||||||
|
|
||||||
public MPropertyDef Property { get; set; }
|
public MPropertyDef Property { get; set; }
|
||||||
public MEventDef Event { get; set; }
|
public MEventDef Event { get; set; }
|
||||||
|
@ -32,6 +33,18 @@ namespace de4dot.code.renamer.asmmodules {
|
||||||
get { return paramDefs; }
|
get { return paramDefs; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<MParamDef> AllParamDefs {
|
||||||
|
get {
|
||||||
|
yield return returnParamDef;
|
||||||
|
foreach (var paramDef in paramDefs)
|
||||||
|
yield return paramDef;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public MParamDef ReturnParamDef {
|
||||||
|
get { return returnParamDef; }
|
||||||
|
}
|
||||||
|
|
||||||
public IList<MGenericParamDef> GenericParams {
|
public IList<MGenericParamDef> GenericParams {
|
||||||
get { return genericParams; }
|
get { return genericParams; }
|
||||||
}
|
}
|
||||||
|
@ -47,6 +60,7 @@ namespace de4dot.code.renamer.asmmodules {
|
||||||
var param = methodDefinition.Parameters[i];
|
var param = methodDefinition.Parameters[i];
|
||||||
paramDefs.Add(new MParamDef(param, i));
|
paramDefs.Add(new MParamDef(param, i));
|
||||||
}
|
}
|
||||||
|
returnParamDef = new MParamDef(methodDefinition.Parameters.ReturnParameter, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool isPublic() {
|
public bool isPublic() {
|
||||||
|
|
|
@ -23,6 +23,9 @@ namespace de4dot.code.renamer.asmmodules {
|
||||||
class MParamDef {
|
class MParamDef {
|
||||||
public Parameter ParameterDefinition { get; set; }
|
public Parameter ParameterDefinition { get; set; }
|
||||||
public int Index { get; private set; }
|
public int Index { get; private set; }
|
||||||
|
public bool IsReturnParameter {
|
||||||
|
get { return Index < 0; }
|
||||||
|
}
|
||||||
|
|
||||||
public MParamDef(Parameter parameterDefinition, int index) {
|
public MParamDef(Parameter parameterDefinition, int index) {
|
||||||
this.ParameterDefinition = parameterDefinition;
|
this.ParameterDefinition = parameterDefinition;
|
||||||
|
|
2
dot10
2
dot10
|
@ -1 +1 @@
|
||||||
Subproject commit e203b3f5b67d7c0e737cb953c62ae99dde1340e7
|
Subproject commit 9386800adc7057e8b90e7ac6af7d5725794d23d3
|
Loading…
Reference in New Issue
Block a user