Whats wrong with my code. Its change only the name of MethodReferences
(i get the methodreferences from all instructions of all methodbodys
of all assemblys) in the assembly where the MethodDefinition is.
Why ???
private void Obfuscate_Methods(IEnumerable<MethodDefinition>
methodDefinitions, IEnumerable<MethodReference> methodReferences)
{
foreach (MethodDefinition methodDefinition in
methodDefinitions)
{
_double_ProgressCounter++;
if (methodDefinition.IsRuntime
|| methodDefinition.IsConstructor
|| methodDefinition.IsAbstract
|| methodDefinition.IsVirtual)
continue;
string sChangeName =
GetObfuscateName(methodDefinition);
foreach (MethodReference methodReference in
methodReferences)
{
if (!Object.ReferenceEquals(methodDefinition,
methodReference)
&& methodDefinition.Name == methodReference.Name
&& methodDefinition.Parameters.Count ==
methodReference.Parameters.Count
&& methodDefinition.GenericParameters.Count ==
methodReference.GenericParameters.Count
&& methodReference.ReturnType ==
methodReference.ReturnType
&& methodReference.Name != sChangeName
&& methodDefinition.FullName ==
methodReference.Resolve().FullName)
{
try { methodReference.Name =
sChangeName; }
catch { }
}
}
methodDefinition.Name = sChangeName;
}
}
--
--
mono-cecil