一个.net程序的简单破解

今天同学给我发了个百度文库下载器让我看下,要注册,习惯性的先抄起OD,不过载入后没断下来程序直接跑起来了。。。看了下原来是.net程序撒,一直没搞过这玩意,网上找了下资料,发现也不是很难。

程序是这样子的,我擦CSDN传不了图片?

反正就是这样,拿Reflector打开找到关键位置

private void Button9_Click(object sender, EventArgs e)
{
    try
    {
        RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\老张百度文库下载器", true);
        key.SetValue("注册码", this.TextBox3.Text.Trim());
        Module1.code2 = this.TextBox3.Text.Trim();
        key.Close();
        key = null;
        Module1.IsCopyRight = Conversions.ToBoolean(Module1.Get_zccode(Module1.code1, Module1.code2));
        if (Module1.IsCopyRight)
        {
            this.TabPage3.Text = "软件注册(已注册)";
            this.Button9.Enabled = false;
            this.Button8.Enabled = false;
            this.Button10.Enabled = false;
            this.TextBox3.ReadOnly = true;
            Interaction.MsgBox("注册成功,感谢您使用正版软件!", MsgBoxStyle.OkOnly, null);
        }
        else
        {
            this.TabPage3.Text = "软件注册(未注册)";
            Interaction.MsgBox("注册失败,请检查您的注册码或与软件提供商联系!", MsgBoxStyle.OkOnly, null);
        }
    }
    catch (Exception exception1)
    {
        ProjectData.SetProjectError(exception1);
        Exception exception = exception1;
        Interaction.MsgBox(exception.Message, MsgBoxStyle.OkOnly, "系统提示");
        ProjectData.ClearProjectError();
    }
}

 可以看到 Module1.IsCopyRight = Conversions.ToBoolean(Module1.Get_zccode(Module1.code1, Module1.code2));
        if (Module1.IsCopyRight)
 
 

就是计算注册码然后设置IsCopyRight布尔变量的值,将判断语句条件改为!Moudle.IsCopyRight就可以了。。。懒得看算法,其实进去看了也不难。。

怎么改呢,切换到IL

   L_005d: stsfld bool 老张百度文库下载器.Module1::IsCopyRight
    L_0062: ldsfld bool 老张百度文库下载器.Module1::IsCopyRight
    L_0067: brfalse.s L_00b8

计算的值出栈到IsCopyRight,然后入栈判断是否为false来跳转,我们将brfalse.s改为brtrue.s就可以了。

打开ildasm找到对应的位置,显示字节

    IL_005d:  /* 80   | (04)00004C       */ stsfld     bool '老张百度文库下载器'.Module1::IsCopyRight
    IL_0062:  /* 7E   | (04)00004C       */ ldsfld     bool '老张百度文库下载器'.Module1::IsCopyRight
    IL_0067:  /* 2C   | 4F               */ brfalse.s  IL_00b8
    IL_0069:  /* 02   |                  */ ldarg.0

特征码2C 4F 02,本来我天真的以为,这玩意改下跳转地址也可以的,我打算是将4F(是跳转的偏移,错误跳到的标号处)改为01,但是没成功。

正确的是将2C改为2D,不懂的看下IL指令,ue中修改后保存运行,随便输入一个注册码,注册成功

你可能感兴趣的:(.net,exception,Module,百度,Microsoft,null)