public static void Main(string[] args) { var inspector = new AssemblyInspector("../../../HelloWorld/bin/Debug/HelloWorld.exe"); inspector.Method(x => x.FindMethod("HelloWorld.Program", "Main")).Replace("System.Console.WriteLine(\"This is a patched Hello World!\");"); inspector.SaveAs("HelloWorld.Patched.exe"); }
public void Run() { try { Console.WriteLine("____________Task Reflection____________"); AssemblyInspector assemblyInspector = new AssemblyInspector(new ConsolePrinter()); assemblyInspector.DisplayAssemblyInfo(); } catch (Exception e) { Console.WriteLine(e.Message); Logger.Log(e.Message); } }
public void Should_Replace_Method_Body_With_Method_Call_And_Method_Call_To_Class_Member() { // patch the assembly var typeLoader = new TypeLoader(); var inspector = new AssemblyInspector(SourceFile, typeLoader); inspector.Method(x => x.FindMethod("HelloWorld.Program", "Main")).Replace("System.Console.WriteLine(GenerateHelloWorld());"); inspector.SaveAs(PatchedFile); // execute the patched assembly var output = RunExecutable(PatchedFile); // validate std out Assert.AreEqual("Hello World\r\n", output); }
public void Should_Replace_Property_Getter_Body() { // patch the assembly var typeLoader = new TypeLoader(); var inspector = new AssemblyInspector(SourceFile, typeLoader); inspector.Property(x => x.FindProperty("HelloWorld.Program", "HelloWorldProperty")).ReplaceGet("return \"This is a Test\";"); inspector.Method(x => x.FindMethod("HelloWorld.Program", "Main")).Replace("System.Console.WriteLine(HelloWorldProperty);"); inspector.SaveAs(PatchedFile); // execute the patched assembly var output = RunExecutable(PatchedFile); // validate std out Assert.AreEqual("This is a Test\r\n", output); }