Ich schreibe grade einen Obfuscator. Hab schon einiges gelöst aber leider nicht so wie ich es mir vorstelle. Gibt es eine möglichkeit mit Mono.Cecil alle referenzen (Abhängigkeiten) eines Types zu bekommen.
Hallo Ayke,
ich kann dir das so aus dem Stehgreif nicht sagen. Hier das Projekt baut auch auf Mono.Cecil auf. Das wird die bestimmt weiterhelfen. Es ist ein fertiger Obfuscator, da kannst du bestimmt den ein oder anderen Code-Snippet verwenden.
zero_x
zero_x | <span style="font-size: 10;">my</span><span style="font-size: 10;">CSharp</span><span style="font-size: 10;">.de</span> - gemeinsam mehr erreichen
Für längere Zeit inaktiv.
danke erstmal, aber leider habe ich mir das schon angeschaut. Das programm benutzt eine alte version von Cecil und ist nicht grade elegant geschrieben.
private void GetAllReferences()
{
foreach (TypeDefinition td in _Assembly_ExecDefinition.MainModule.Types)
{
foreach (MethodDefinition md in td.Methods)
{
if (md.HasBody)
foreach (Instruction instruction in md.Body.Instructions)
{
switch (instruction.OpCode.Name)
{
case "call":
case "callvirt":
case "newobj":
_list_MethodeReferences.Add ((MethodReference)instruction.Operand);
break;
case "stfld":
case "ldfld":
_list_FieldReferences.Add ((FieldReference)instruction.Operand);
break;
}
}
}
}
}
Damit bekomme ich z.b calls innerhalb einer Methode. Danach gehe ich die liste nochmal durch und vergleiche alle anweisungen mit Methoden- Definitionen. Leider crasht das Programm wenn ich auch alle Unterklassen einbeziehe. Warum weiss ich nicht und ich weiss auch nicht wie ich das zurück verfolgen kann.