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