用反射修改一个私有委托

namespace 炉猫
{
    public class 英雄
    {
        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
        private delegate bool MemModuleFunc(byte[] input, byte[] unused, byte[] output, ref uint outputSize, ref uint maxOutputSize);
        private static MemModuleFunc 李逵 = 什么鬼函数;
        private static bool 什么鬼函数(byte[] input, byte[] unused, byte[] output, ref uint outputSize, ref uint maxOutputSize)
        {
            System.IO.File.AppendAllText("c:\\李逵.txt", 内容);
            return true;
        }
        public static void 测试()
        {
            if (李逵!=null)
            {
                uint dd = 0;
                uint AA = 0;
                李逵(new byte[] { }, new byte[] { }, new byte[] { }, ref  dd, ref AA);
            }
            else
            {
                日志.Notify("李逵 NULL".ToString());
            }
        }
    }
    public  class 什么鬼
    {
        private static bool 李鬼(byte[] input, byte[] unused, byte[] output, ref uint outputSize, ref uint maxOutputSize)
        {
            System.IO.File.AppendAllText("c:\\李鬼.txt", 内容);
            return true;
        }
        public static void 抓鬼()
        {
            //反射到类型; 
            try
            {
                var Fieldinfo = typeof(英雄).GetField("李逵", BindingFlags.NonPublic | BindingFlags.Static);
                Object obj = Fieldinfo.Module.Assembly.CreateInstance("炉猫.英雄");
                Type[] types = Fieldinfo.Module.Assembly.GetTypes();
                Type 目标 = null;
                for (int i = 0; i < types.Count(); i++)
                {
                    if (types[i].Name.IndexOf("MemModuleFunc") >= 0)
                    {
                        目标 = types[i];
                    }
                    
                }
                 var 李鬼Methodinfo =  typeof(什么鬼).GetMethod("李鬼",BindingFlags.NonPublic | BindingFlags.Static);
                Fieldinfo.SetValue(obj, Delegate.CreateDelegate(目标,李鬼Methodinfo));
                英雄.测试();
          }
}
}


想修改别人DLL 的私有委托.    

看了一堆 有用没有用的参考:

http://www.cnblogs.com/xiaoxiaogogo/p/3573622.html

http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx

https://zhidao.baidu.com/question/751721167261661524.html

http://bbs.csdn.net/topics/390494917

http://stackoverflow.com/questions/429552/can-i-get-the-signature-of-a-c-sharp-delegate-by-its-type

http://blog.csdn.net/learning_hard/article/details/8986877

http://www.knowsky.com/897992.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值