CrazyNut 发表于 2018-5-23 14:11

某大地计算软件C#.Net——简单爆破

本帖最后由 云在天 于 2019-6-7 13:09 编辑

@huangpenghyy 发出来求助的东西 0.0 不知道你研究的如何了,就做个简单教程

https://static.52pojie.cn/static/image/hrline/4.gif
首先说下软件
先运行一下试试


登录界面,出现注册号然后要打电话告诉注册号,再输入返回的激活【这都不重要】
随便输入一个,提示注册号不对。记住关键词就行

查壳

查壳,没有这就好搞了,况且还是C#.net的东西,直接上dnspy


https://static.52pojie.cn/static/image/hrline/4.gif


这个东西居然有14个窗体。。。只有从头一个一个的看了,边看边搜字符串,注册码不对

然后发现Form14就是之前的注册窗口

然后发现有关注册代码就是简单的if-else的判断= =

那我们直接把成功的代码替换到失败的地方就好




如图,顺便也换到上面 ,不能是空字符的地方= =

这样不管他怎么判断,都执行的是成功的代码,

然后改一下他的字符串什么的,完毕!

https://static.52pojie.cn/static/image/hrline/4.gif





https://static.52pojie.cn/static/image/hrline/4.gif

原版和破解版都在附件里面:

如果帖子有帮助到你,希望给个免费评分多多支持下!!谢谢各位!!



初亦泽 发表于 2018-5-23 16:32


C#注册机:

/// <summary>
      /// 获取注册码
      /// </summary>
      /// <param name="cpuID">机器码</param>
      /// <returns></returns>
      public string GetRegCode(string cpuID)
      {
            string sKey = "63011852";
            string text5 = this.Encrypt(cpuID, sKey);
            int num5 = text5.Length;
            int start = num5 / 2;
            string regPart_1 = text5.Substring(0,4);
            string regPart_2 = text5.Substring(start-1,4);
            
            string regPart_3 = text5.Substring(num5 - 8, 8);
            string regCode = regPart_1 + regPart_2 + regPart_3;
            return regCode;


      }


      /// <summary>
      /// 加密函数
      /// </summary>
      /// <param name="pToEncrypt">待加密字符</param>
      /// <param name="sKey">   一个Magic Number</param>
      /// <returns></returns>
      public string Encrypt(string pToEncrypt, string sKey)
      {
            DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
            byte[] bytes = Encoding.Default.GetBytes(pToEncrypt);
            dESCryptoServiceProvider.Key = Encoding.ASCII.GetBytes(sKey);
            dESCryptoServiceProvider.IV = Encoding.ASCII.GetBytes(sKey);
            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateEncryptor(), CryptoStreamMode.Write);
            cryptoStream.Write(bytes, 0, bytes.Length);
            cryptoStream.FlushFinalBlock();
            StringBuilder stringBuilder = new StringBuilder();
            byte[] array = memoryStream.ToArray();
            checked
            {
                for (int i = 0; i < array.Length; i++)
                {
                  byte b = array;
                  stringBuilder.AppendFormat("{0:X2}", b);
                }
                return stringBuilder.ToString();
            }
      }

wei5383079 发表于 2018-6-1 11:50

楼主这是我正在破解的第一个NET软件,不知道怎么修改,求指点下。
这是一处
private void BtonReg_Click(object sender, EventArgs e)
{
        int num;
        int num3;
        try
        {
                IL_02:
                ProjectData.ClearProjectError();
                num = -2;
                IL_0B:
                int num2 = 2;
                bool flag = Strings.Len(this.newDrv) == 2;
                if (flag)
                {
                        IL_1F:
                        num2 = 3;
                        bool flag2 = ModIniFile.WriteINI("Lic", "Code", Strings.Trim(this.TextBox2.Text), this.newDrv + "\\RoadWorks.Lic") == 1;
                        if (flag2)
                        {
                                IL_59:
                                num2 = 4;
                                Interaction.MsgBox("感谢你的注册。请重启excel,检查是否已经注册成功\r\n1.你可以把U盘作为密码狗在任意一台电脑上使用测量内业小宝\r\n2.U盘下面有个RoadWorks.Lic文件,请不要删除!为避免删除造成麻烦,备份好此注册码!以备重新注册!\r\n3.因U盘的损坏或者U盘的格式化导致的损失,作者不负责!", MsgBoxStyle.OkOnly, "注册");
                                IL_6C:;
                        }
                        else
                        {
                                IL_70:
                                num2 = 6;
                                Interaction.MsgBox("注册码写入失败!", MsgBoxStyle.OkOnly, "注册失败");
                                IL_83:;
                        }
                        IL_84:;
                }
                else
                {
                        IL_88:
                        num2 = 9;
                        Interaction.MsgBox("请在计算机上插入唯一一个有效U盘,作为软件解密狗对软件注册,确定插好了,点击确定重新检测\r\n或者请插入已经注册的解密狗U盘", MsgBoxStyle.YesNo, "错误");
                        IL_9C:;
                }
                IL_9D:
                IL_9F:
                goto IL_129;
                IL_A4:
                int arg_A9_0 = num3 + 1;
                num3 = 0;
                @switch(ICSharpCode.Decompiler.ILAst.ILLabel[], arg_A9_0);
                IL_E2:
                goto IL_11E;
                num3 = num2;
                @switch(ICSharpCode.Decompiler.ILAst.ILLabel[], (num > -2) ? num : 1);
                IL_FC:
                goto IL_11E;
        }
        object arg_FE_0;
        endfilter(arg_FE_0 is Exception & num > 0 & num3 == 0);
        IL_11E:
        throw ProjectData.CreateProjectError(-2146828237);
        IL_129:
        if (num3 != 0)
        {
                ProjectData.ClearProjectError();
        }
}

这是二处
private void Form6_Load(object sender, EventArgs e)
{
        this.Text = string.Concat(new string[]
        {
                "RoadWorks V",
                Conversions.ToString(MyProject.Application.Info.Version.Major),
                ".",
                Conversions.ToString(MyProject.Application.Info.Version.Minor),
                " Build",
                Conversions.ToString(MyProject.Application.Info.Version.Revision)
        });
        bool flag = !Module1.GrandpaSayNO;
        if (flag)
        {
                this.TextBox2.ReadOnly = true;
                this.TextBox2.Text = "已注册";
                this.ButtonReg.Text = "已注册";
                this.ButtonReg.Enabled = false;
        }
        else
        {
                this.newDrv = CodeDiskRMB.GetRemoveDriver();
                bool flag2 = Strings.Len(this.newDrv) == 2;
                if (flag2)
                {
                        this.Label1.Text = this.newDrv.Substring(0, 1) + "盘硬件码:";
                        this.TextBox1.Text = Conversions.ToString(CodeDiskRMB.GetDiskNumber(this.newDrv));
                }
                else
                {
                        this.TextBox1.Text = "请在计算机上插入唯一一个有效U盘";
                        Interaction.MsgBox("请在计算机上插入唯一一个有效U盘,作为软件解密狗对软件注册,确定插好之后,重新启动Excel检测\r\n或者请插入已经注册的解密狗U盘", MsgBoxStyle.OkOnly, "错误");
                }
        }
}

小权666 发表于 2018-5-23 14:22

大神大佬厉害啊。果断收听!!!

zz100179 发表于 2018-5-23 14:29

这个方法很牛,感谢分享,net软件太容易破解了

duoduomiwu48 发表于 2018-5-23 14:41

感谢分享,用心提升

与泪拥抱 发表于 2018-5-23 14:54

厉害了,感谢楼主,下载了

871704459 发表于 2018-5-23 15:06

这个是干嘛用的?

青春丿易逝 发表于 2018-5-23 15:38

那个text6就是真码啊...

fst10 发表于 2018-5-23 15:44

是个什么软件,下下来试试。

yjn866y 发表于 2018-5-23 15:53

软件,下下来试试。

霍霍小金 发表于 2018-5-23 15:56

页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 某大地计算软件C#.Net——简单爆破