static List<MethodNameGroup> getSorted(MethodNameGroups groups) { var allGroups = new List<MethodNameGroup>(groups.getAllGroups()); allGroups.Sort((a, b) => Utils.compareInt32(b.Count, a.Count)); return allGroups; }
void restorePropertiesAndEvents(MethodNameGroups groups) { var allGroups = groups.getAllGroups(); restoreVirtualProperties(allGroups); restorePropertiesFromNames(allGroups); resetVirtualPropertyNames(allGroups); restoreVirtualEvents(allGroups); restoreEventsFromNames(allGroups); resetVirtualEventNames(allGroups); }
void removeUselessOverrides(MethodNameGroups groups) { foreach (var group in groups.getAllGroups()) { foreach (var method in group.Methods) { if (!method.Owner.HasModule) continue; if (!method.isPublic()) continue; var overrides = method.MethodDefinition.Overrides; for (int i = 0; i < overrides.Count; i++) { var overrideMethod = overrides[i]; if (method.MethodDefinition.Name != overrideMethod.Name) continue; Log.v("Removed useless override from method {0} ({1:X8}), override: {2:X8}", Utils.removeNewlines(method.MethodDefinition), method.MethodDefinition.MetadataToken.ToInt32(), overrideMethod.MetadataToken.ToInt32()); overrides.RemoveAt(i); i--; } } } }
void restoreMethodArgs(MethodNameGroups groups) { foreach (var group in groups.getAllGroups()) { if (group.Methods[0].ParamDefs.Count == 0) continue; var argNames = getValidArgNames(group); foreach (var method in group.Methods) { if (!method.Owner.HasModule) continue; var nameChecker = method.Owner.Module.ObfuscatedFile.NameChecker; for (int i = 0; i < argNames.Length; i++) { var argName = argNames[i]; if (argName == null || !nameChecker.isValidMethodArgName(argName)) continue; var info = memberInfos.param(method.ParamDefs[i]); if (nameChecker.isValidMethodArgName(info.oldName)) continue; info.newName = argName; } } } }
static List<MethodNameGroup> getSorted(MethodNameGroups groups) { var allGroups = new List<MethodNameGroup>(groups.getAllGroups()); allGroups.Sort((a, b) => b.Count.CompareTo(a.Count)); return allGroups; }