以前学过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";
}
}
}