C# Hook 学习使用强大的工具DetnetDetour,处理强签名问题,实现不修改代码破解软件

以前学过Hook不过没有实战,忘得一干二净。今天需要使用一款软件,有反调试,有请签名,但是没有加壳,所以反编译调试很快破解。由于有强签名,所以需要找去除强签名工具,不想以后还这样,所以希望从不修改代码的角度破解试试:找到了一款强大的Hook工具库:

https://github.com/bigbaldy1128/DotNetDetour

几行代码实现了不修改代码完美破解软件,下面贴上官网给的例子,以后复习用:

using DotNetDetour;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
    //我们自行实现一个类来修改Run方法的行为,此类用IMethodHook接口修饰
    public class MyClass : IMethodHook
    {
        //我们实现一个新Run方法,并标记为HookMethod,覆盖SolidClass中的Run方法
        [HookMethod("ConsoleApp1.SolidClass")]
        public string Run(string msg)
        {
            return "Hook " + Run_Original(msg);
        }

        //实现一个占位方法,此方法代表被Hook覆盖的原始方法
        [OriginalMethod]
        public string Run_Original(string msg)
        {
            return null; //这里写什么无所谓,能编译过即可
        }
    }
}

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            MethodHook.Install();
            var msg = new SolidClass().Run("Hello World!");
            Console.WriteLine(msg);
            Console.Read();
        }
    }

    public class SolidClass
    {
        public string Run(string msg)
        {
            return "modified msg";
        }
    }

}
posted @ 2020-01-20 01:30  星空天宇  阅读(455)  评论(0编辑  收藏  举报