zoukankan      html  css  js  c++  java
  • C# 使用reflector与reflexil实现代码注入

    需求

    1.         双击窗体,弹出无标题的messageBox

    1.bmp

    源码

    using System;

    using System.Windows.Forms;

     

    namespace ReflexilDemo

    {

        public class DemoForm : Form

        {

            public DemoForm()

            {

                //InitializeComponent();

                this.Click+=DisplayResultButton_Click;

            }

     

            private void ComputeAndDisplay(decimal x, decimal y)

            {

                MessageBox.Show(String.Format("{0}+{1}={2}", x, y, x + y));

            }

     

            private void DisplayResultButton_Click(object sender, EventArgs e)

            {

                decimal a=3.0M;

                decimal b=6.0M;

                ComputeAndDisplay(a, b);

            }

           

            static void Main()

       

            {

                DemoForm df=new DemoForm();

                df.ShowDialog();

               

                Console.Read ();

            }

        }

    }

    2.         注入代码后,双击窗体,弹出有标题的messageBox

    2.bmp

     

    实现

    使用.NET ReflectorReflexil ,修改il代码实现。

    由源码可知,messagebox的调用是在ComputeAndDisplay方法中完成的,所以我们需要修改此方法的il

    实现步骤:

    Reflexil打开 ComputeAndDisplay

     

     

    1.jpg

     

     

    插入字符串

    2.jpg

    修改MessageBoxShowstring----àMessageBox.Show(string,string)

    3.jpg

    4.jpg

    5.jpg

     

     

     

    选择Show(string,string),双击

    6.jpg

     

    然后保存修改后的结果

    7.jpg

    再次运行

    8.jpg

  • 相关阅读:
    while循环
    赋值运算符、逻辑运算符补充
    布尔类型 基本运算符 if判断
    输入 格式化输出
    计算机基础
    python介绍 编程语言分类及对比 python解释器安装(多版本共存) 变量 数据类型(三种)
    UDP套接字协议
    软件工程个人作业01
    网页版增加信息---添加
    javaWeb项目技术
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1579307.html
Copyright © 2011-2022 走看看