再次发布SQL Prompt 3.8的新的patch,解决了不能格式化T-SQL的问题
上一篇关于推荐SQL Prompt 3.8的随笔,园子里几位朋友回复反应不能使用格式化功能,并强烈要求再次解决该问题,
所以昨天晚上弄到凌晨2点,最终的SQL Prompt补丁:
下载地址:/Files/jintan/Sql_Prompt_RedGate.Licensing.Client.rar
支持格式化SQL
其实破解过程很简单,没有涉及到脱壳,跟踪等。
大致的思路是这样的:
public int DaysLeftInTrial 这个属性返回值大于0,我这里是14,
为了保险起见,我又修改了TrialStatus ,
这样已经可以保证永远都是试用并且不过期。
最后修改IL代码,我用的是http://www.codeproject.com/KB/dotnet/NetDasm.aspx这个工具修改IL,配合Reflector使用
当然你也可以直接用SDK里面的ildasm+ilasm工具修改。
这次不用做去掉强命名的操作了,直接copy到目录覆盖原来的就行了。
注意:经测试,一定要去掉强命名才能使用,请自己去掉RedGate.Licensing.Client.dll的强命名。
对于Red-Gate的其他产品,同样可以使用上面的方法,应该没有问题的。
注:
上个版本修改的地方是:
对应的IL:
但是不知道什么原因,格式化的菜单一直是灰色。所以才有现在的这个Patch
所以昨天晚上弄到凌晨2点,最终的SQL Prompt补丁:
下载地址:/Files/jintan/Sql_Prompt_RedGate.Licensing.Client.rar
支持格式化SQL
其实破解过程很简单,没有涉及到脱壳,跟踪等。
大致的思路是这样的:
public int DaysLeftInTrial 这个属性返回值大于0,我这里是14,
public int DaysLeftInTrial
{
get
{
int days;
if (this.TrialStatus != TrialStatus.InTrial)
{
return 0;
}
if (this.d == DateTime.MinValue)
{
TimeSpan span = DateTime.UtcNow.Subtract(this.b);
days = 14 - span.Days;
}
else
{
days = this.d.Subtract(DateTime.UtcNow).Days;
}
if (days < 0)
{
days = 14;
}
return days;
}
}
{
get
{
int days;
if (this.TrialStatus != TrialStatus.InTrial)
{
return 0;
}
if (this.d == DateTime.MinValue)
{
TimeSpan span = DateTime.UtcNow.Subtract(this.b);
days = 14 - span.Days;
}
else
{
days = this.d.Subtract(DateTime.UtcNow).Days;
}
if (days < 0)
{
days = 14;
}
return days;
}
}
为了保险起见,我又修改了TrialStatus ,
public TrialStatus TrialStatus
{
get{return TrialStatus.InTrain; }
set{.}
}
{
get{return TrialStatus.InTrain; }
set{.}
}
这样已经可以保证永远都是试用并且不过期。
最后修改IL代码,我用的是http://www.codeproject.com/KB/dotnet/NetDasm.aspx这个工具修改IL,配合Reflector使用
当然你也可以直接用SDK里面的ildasm+ilasm工具修改。
注意:经测试,一定要去掉强命名才能使用,请自己去掉RedGate.Licensing.Client.dll的强命名。
对于Red-Gate的其他产品,同样可以使用上面的方法,应该没有问题的。
注:
上个版本修改的地方是:
public bool get_Activated()
{
return true;
}
{
return true;
}
Code:
method public hidebysig specialname instance bool get_Activated() cil managed { .maxstack 8 L_0000: ldc.i4.1 L_0001: ret }