YZL的研究室一切都是幻觉吧?

破解SQL Prompt3(一)

前几天在博客园上发布了第一个破解作品,然后有人要求我再破解一下SQL Prompt3,他其实不知道我在这方面菜得很…呵呵…没办法,既然人家开口了,我也只能硬着头皮看一看咯…首先安装好Red Gate全系列工具,进入SQL Prompt 3文件夹里面找到RedGate.Licensing.Client.dll,用Reflector打开一看,囧…果然没那么简单,被混淆了一下…这么多类,肯定不能一个个看,所以我赶紧打开软件的注册窗口,看看有没有什么切入点。

1 

这是激活窗口,既然invoice特别强调了一下,我就从它开始,嘿嘿。输入Reflector一找,果然找到了一个叫P的类,这个类明显就是上面那个窗口,接着在这里很容易就找到了Activate按钮的方法,代码如下

    private void b(object obj1, EventArgs)
    {
        string str = ((TextBox) obj1).Text.ToUpper().Trim();
        bool fEnable = o.b(str);
        this.a.Visible = fEnable;
        this.a((V.a) 2, fEnable, true);
        if (fEnable)
        {
            this.a.a.SerialNumber = str;
        }
    }

这里非常明显o.b(str)这个方法就是验证序列号正确性的,赶紧跟进去找到这么一段代码

internal static bool c(string text1)
{
    text1 = text1.ToUpper().Trim();
    Regex regex = new Regex(@"^[A-Z]{2}-[0-9A-Z]{1}-[0-9A-Z]{1}-\d{5}-[0-9A-F]{4}$");
    Regex regex2 = new Regex(@"^\d{3}-\d{3}-\d{6}-[0-9A-F]{4}$");
    if (regex.IsMatch(text1))
    {
        string str = text1.Substring(0, 12);
        string str2 = string.Format("{0:X4}", W.a(str));
        if (!text1.EndsWith(str2))
        {
            return false;
        }
    }
    else if (regex2.IsMatch(text1))
    {
        string str3 = text1.Substring(0, 14);
        string str4 = string.Format("{0:X4}", W.a(str3));
        if (!text1.EndsWith(str4))
        {
            return false;
        }
    }
    else
    {
        return false;
    }
    return true;
}

真是得来全不费功夫,竟然用正则来验证,这岂不是比ReSharper 4.0更容易破解?我心里暗爽了一把…

赶紧按照正则规则算出了一个合适的激活码,迫不及待地输进去…结果出现…Red Gate…我恨你…

2

原来一切都是幻觉…没办法…只好另找突破点…从提示来看,似乎每个真正序列号都在服务器有注册…这岂不是跟Windows的激活差不多了?难道要我一个个试?这明显不可能呀…

(To be continued)

  • 相关文章:

发表评论:

Copyright Aaron.Yi's Blog. All Rights Reserved. Powered By Z-Blog 1.8 Spirit Build 80722 & Theme Dmno by Stephen