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

發佈了141 篇原創文章 · 獲贊 1 · 訪問量 50萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章