PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C#] Code Injection



Mayday171
16.06.2012, 00:34
Hey,

ich probiere mich seit einiger Zeit an Code Injection in C#. Leider komme ich nicht so wirklich weiter. Ich habe mir mal Cecil angeschaut, bin mir aber nicht sicher ob ich da auf dem richtigen Weg bin.

Wie genau muss ich vorgehen, um z.B. meinen Code / Programm in eine laufende Assemly zu injecten.

Danke !!

Easysurfer
16.06.2012, 19:07
Eine managed Injection in eine laufende Assembly ist mit einem nativen CLRHost möglich, wie z.B. in diesem Blogpost von mir beschrieben:
Managed FASM, CLRHosting durch C# und natives Detouring (http://easysurfer.me/wordpress/?p=350)

Allerdings wirst Du in einer laufenden Assembly nicht wirklich spass am Injecten des Codes haben.
Mit Mono.Cecil kannst Du "vor dem Ausführen" des Programms Modifikationen vornehmen, danach erst die Assembly starten. Das ist der gänige Weg bei managed Applikationen.

Mono.Cecil ist relativ selbsterklärend. Wenn Du Code in eine Funktion injecten willst, so holst Du dir die dazugehörige MethodDefinition und ändest den Code in MSIL. Dazu hab ich auch mal ein kleinen Blogpost geschrieben, viel Erfolg:
Deobfuscation mit Mono.Cecil (http://easysurfer.me/wordpress/?p=471)