Red Gate之延长使用研究

Red Gate的系列产品真是相当出色,从ANTS Profiler到现在正在用得不易乐乎的SQL Toolbelt工具集都是开发者手中不可多得的利器,但近日工作繁忙,都没有什么时间研究它,但眼看试用期即将过去,一时间又提不出不能让公司购买的理由,所以只好先延长它的试用期吧,只是暂时延长作研究,大家不要做非法用途哦 ^_^
到网上查了一些大大的文章,很多早期的方法是修改RedGate.Licensing.Client.dll中的get_Activated()方法来达到,但经过部分大大的试验有些组件用这个方法会导致某些功能缺损,所以只可以用比较迂回的方法,直接改试用期的期限。

方法是修改两个属性,DaysLeftInTrial和TrialStatus,主要是让DaysLeftInTrial的返回值永远大于0。


1.DaysLeftInTrial


修改后的代码:

 

对应的IL:

 

.method public hidebysig specialname instance int32 
          get_DaysLeftInTrial() cil managed
  {
    // 代码大小       95 (0x5f)
    .maxstack  12
    .locals init (int32 V_0,
             valuetype [mscorlib]System.TimeSpan V_1,
             valuetype [mscorlib]System.DateTime V_2,
             valuetype [mscorlib]System.TimeSpan V_3)
    IL_0000:  ldarg.0
    IL_0001:  call       instance valuetype RedGate.Licensing.Client.TrialStatus RedGate.Licensing.Client.Licence::get_TrialStatus()
    IL_0006:  ldc.i4.1
    IL_0007:  beq.s      IL_000b

    IL_0009:  ldc.i4.0
    IL_000a:  ret

    IL_000b:  ldarg.0
    IL_000c:  ldfld      valuetype [mscorlib]System.DateTime RedGate.Licensing.Client.Licence::d
    IL_0011:  ldsfld     valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::MinValue
    IL_0016:  call       bool [mscorlib]System.DateTime::op_Equality(valuetype [mscorlib]System.DateTime,
                                                                     valuetype [mscorlib]System.DateTime)
    IL_001b:  brfalse.s  IL_003e

    IL_001d:  call       valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_UtcNow()
    IL_0022:  stloc.2
    IL_0023:  ldloca.s   V_2
    IL_0025:  ldarg.0
    IL_0026:  ldfld      valuetype [mscorlib]System.DateTime RedGate.Licensing.Client.Licence::b
    IL_002b:  call       instance valuetype [mscorlib]System.TimeSpan [mscorlib]System.DateTime::Subtract(valuetype [mscorlib]System.DateTime)
    IL_0030:  stloc.1
    IL_0031:  ldc.i4.s   14
    IL_0033:  ldloca.s   V_1
    IL_0035:  call       instance int32 [mscorlib]System.TimeSpan::get_Days()
    IL_003a:  sub
    IL_003b:  stloc.0
    IL_003c:  br.s       IL_0057

    IL_003e:  ldarg.0
    IL_003f:  ldflda     valuetype [mscorlib]System.DateTime RedGate.Licensing.Client.Licence::d
    IL_0044:  call       valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_UtcNow()
    IL_0049:  call       instance valuetype [mscorlib]System.TimeSpan [mscorlib]System.DateTime::Subtract(valuetype [mscorlib]System.DateTime)
    IL_004e:  stloc.3
    IL_004f:  ldloca.s   V_3
    IL_0051:  call       instance int32 [mscorlib]System.TimeSpan::get_Days()
    IL_0056:  stloc.0
    IL_0057:  ldloc.0
    IL_0058:  ldc.i4     0x457
    IL_0059:  bge.s      IL_005d

    IL_005b:  ldc.i4.8
    IL_005c:  stloc.0
    IL_005d:  ldloc.0
    IL_005e:  ret
  } // end of method Licence::get_DaysLeftInTrial

 
2.TrialStatus


修改后的代码:

 

对应的IL:

.method public hidebysig specialname instance valuetype RedGate.Licensing.Client.TrialStatus 
          get_TrialStatus() cil managed
  {
    // 代码大小       6 (0x6)
    .maxstack  1
    .locals (valuetype RedGate.Licensing.Client.TrialStatus V_0)
    IL_0000:  ldc.i4.1
    IL_0001:  stloc.0
    IL_0002:  br.s       IL_0004

    IL_0004:  ldloc.0
    IL_0005:  ret
  } // end of method Licence::get_TrialStat

 
修改完成后记得去掉强命名哦 ^_^
运行脚本如:
path C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/Bin
sn -Vr RedGate.Licensing.Client.dll

 

看,这样就可以延长使用时间来做研究了,再次申明不要用于非法用途哦 o(∩_∩)o

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值