[ 破文标题 ] 一个.NET 软件的 破解过程
[ 破文作者 ] 王者之剑(hj2008mt)
[ 作者邮箱 ] hj2008mt@163.com
[ 作者主页 ] bbs.huacolor.com
[ 破解 工具 ] UEDIT32,Reflector,DotNet Helper
[ 破解平台 ] Windows XP SP2
[ 软件名称 ] XX数学软件
[ 保护方式 ] 无壳
[ 软件简介 ] Microsoft Visual C# / Basic .NET
[ 破解声明 ] 应SCS成员小杨写的一个,高人不要看了,太简单了,不会的看一下就不要笑偶了,呵呵
-----------------------------------------------------
[ 破解过程 ]-----------------------------------------

先用PDIE查壳吧,无壳,是个Microsoft Visual C# / Basic .NET编写的家伙

先运行软件观察一下有什么限制吧,发现过期后会弹出一大堆的网页,很烦的啦,所认我们要干掉他。

此软件为一个重启 注册软件,所以看上去有点麻烦,呵呵,还好这个软件只要改到两处。

第一处:

再看一下注册方式,这时我们打开Reflector导入REG.DLL,找到我们注册的地方

public bool Check(string reg)
{
    if (reg == this.Md5())
    {
        this.Info.RegCode = reg;
        this.Info.IsReg = 3;        此位置是判断注册,如果为3就是注册成功
        this.SetReg();
        this.SetFile();
        Mail mail = new Mail(this.Info.Email);
        mail.Info.Name = this.Info.SoftName + " " + this.Ver;
        mail.Info.Subject = "软件注册成功!";                       软件注册成功
        mail.Info.Body = "用户:" + this.Info.Computer + "<br>序列号:" + this.MacCode + "<br>版本:" + this.Ver + "<br>软件号:"

+ this.Info.Soft.ToString() + "<br>总使用次数:" + this.Info.UseCount.ToString();
        mail.Send();
        return true;
    }
    return false;
}

这时我们打开先用DotNet Helper反编译成代码再打开UEDIT32将下面位置改动

IL_0000:  nop
    IL_0001:  ldarg.1
    IL_0002:  ldarg.0
    IL_0003:  call       instance string LibReg.Reg::Md5()
    IL_0008:  call       bool [mscorlib]System.String::op_Equality(string,
                                                                   string)
    IL_000d:  ldc.i4.0              改成ldc.i4.1
    IL_000e:  ceq
    IL_0010:  stloc.2
    IL_0011:  ldloc.2
    IL_0012:  brtrue     IL_0118

IL_0017:  nop
    IL_0018:  ldarg.0
    IL_0019:  ldflda     valuetype LibReg.Reg/RegInfo LibReg.Reg::Info
    IL_001e:  ldarg.1
    IL_001f:  stfld      string LibReg.Reg/RegInfo::RegCode
    IL_0024:  ldarg.0
    IL_0025:  ldflda     valuetype LibReg.Reg/RegInfo LibReg.Reg::Info

第二处:

我们再用Reflector查看哪里在比较

private void Check()
{
   Mail mail;
   Dictionary<int, string> data = new Dictionary<int, string>();
   Dictionary<int, string> dictionary2 = new Dictionary<int, string>();
   bool flag = this.CheckReg(ref data);
   bool flag2 = this.CheckFile(ref dictionary2);
   if (!(flag || flag2))
   {
       this.Info.MacCode = this.GetCode();
       mail = new Mail(this.Info.Email);
       mail.Info.Name = this.Info.SoftName + " " + this.Ver;
       mail.Info.Subject = "第一次使用";
       mail.Info.Body = "用户:" + this.Info.Computer + "<br>序列号:" + this.MacCode + "<br>版本:" + this.Ver + "<br>软件号:"

+ this.Info.Soft.ToString();
       mail.Send();
   }
   else if (flag && flag2)
   {
       for (int i = 0; i < 4; i++)
       {
           if (data != dictionary2)
           {
               this.Info.MacCode = this.GetCode();
               if (dictionary2[1] == this.Info.MacCode)
               {
                   flag = false;
               }
               else if (data[1] == this.Info.MacCode)
               {
                   flag2 = false;
               }
               else
               {
                   flag = false;
                   flag2 = false;
               }
               break;
           }
       }
   }
   if (flag)
   {
       this.Info.Computer = data[0];
       this.Info.MacCode = data[1];
       this.Info.RegCode = data[2];
       this.Info.StartDate = Convert.ToInt64(data[3]);
   }
   if (flag2)
   {
       this.Info.Computer = dictionary2[0];
       this.Info.MacCode = dictionary2[1];
       this.Info.RegCode = dictionary2[2];
       this.Info.StartDate = Convert.ToInt64(dictionary2[3]);
       this.Info.LastDate = Convert.ToInt64(dictionary2[4]);
       this.Info.UseCount = Convert.ToInt32(dictionary2[5]) + 1;
   }
   if (this.Info.RegCode == this.Md5())
   {
       this.Info.IsReg = 3;              如果ISREG为3的话就是已注册
   }
   else
   {
       if (this.Info.LastDate > this.Info.CurDate)
       {
           this.Info.IsReg = 2;         这里是最主要的判断点,我们要改的就是这里了。
       }
       long num2 = (this.Info.CurDate - this.Info.StartDate) / 0xc92a69c000L;
       int num3 = Convert.ToInt32(num2);
       if ((num3 > this.Info.Days) || (num3 < 0))
       {
           this.Info.IsReg = 2;
           mail = new Mail(this.Info.Email);
           mail.Info.Name = this.Info.SoftName + " " + this.Ver;
           mail.Info.Subject = "此用户已使用了" + num2 + "天";
           mail.Info.Body = string.Concat(new object[] { "用户:", this.Info.Computer, "<br>序列号:", this.MacCode, "<br>版

本:", this.Ver, "<br>软件号:", this.Info.Soft.ToString(), "<br>已使用天数:", num2, "<br>总使用次数:",

this.Info.UseCount.ToString() });
           mail.Send();
       }
   }
   if (!flag)
   {
       this.SetReg();
   }
   this.SetFile();
   new Thread(new ThreadStart(this.CheckNet)).Start();
}

地方我们找到了,现在再打开UEDIT32,找到些地方

IL_02ba:  ldc.i4.0               我们将这里改成ldc.i4.1那么我们也就注册成功
    IL_02bb:  ceq
    IL_02bd:  stloc.s    V_8
    IL_02bf:  ldloc.s    V_8
    IL_02c1:  brtrue.s   IL_02d6

IL_02c3:  nop
    IL_02c4:  ldarg.0
    IL_02c5:  ldflda     valuetype LibReg.Reg/RegInfo LibReg.Reg::Info
    IL_02ca:  ldc.i4.3
    IL_02cb:  stfld      int32 LibReg.Reg/RegInfo::IsReg
    IL_02d0:  nop
    IL_02d1:  br         IL_0472

IL_02d6:  nop
    IL_02d7:  ldarg.0
    IL_02d8:  ldflda     valuetype LibReg.Reg/RegInfo LibReg.Reg::Info
    IL_02dd:  ldfld      int64 LibReg.Reg/RegInfo::LastDate
    IL_02e2:  ldarg.0
    IL_02e3:  ldflda     valuetype LibReg.Reg/RegInfo LibReg.Reg::Info
    IL_02e8:  ldfld      int64 LibReg.Reg/RegInfo::CurDate
    IL_02ed:  cgt
    IL_02ef:  ldc.i4.0
    IL_02f0:  ceq
    IL_02f2:  stloc.s    V_8
    IL_02f4:  ldloc.s    V_8
    IL_02f6:  brtrue.s   IL_0306

经过上面两处地方完全搞定我们再用DotNet Helper反编译成DLL 文件就行了,我们再运行软件,这里我们可以看到已注册,再打开注册的地方

也是已注册好了,不用写注册码了,呵呵。

嘻嘻,是不是好简单的说呀!

[ 破解总结 ]-----------------------------------------

感谢一下mélochite**长期的指导,呵呵!

偶只是一只小小鸟,大鸟们就不要进来看了,呵呵,写完闪人!

-----------------------------------------------------

一个.NET软件的破解过程相关推荐

  1. 网站安全不可忽视--一个收费网站的破解过程

    某日在网上偶然打开一个网站,是有PLMM与你视频聊天的,但是要手机注册收费. 就想找找有没有漏洞可以不花钱就与MM聊天. 首先找找有没有SQL的空子可钻 打开一个带有参数的页面,http://www. ...

  2. AltiumDesigner14.3.X系列软件安装及破解过程

    https://wenku.baidu.com/view/5c3b16e4d4d8d15abe234e9b.html 破解过程可用,安装时我是一直next

  3. 实现一个项目开发团队分配管理软件思路及过程

    做一个项目之前首先要知道做什么?实现什么功能?得到什么效果?然后再理思绪以及怎么做,慢慢来,一口吃不成个胖子,切忌一上来就动手做,简单的代码还好,一旦代码更多更复杂进行到后面就很容易乱成一锅粥,所以我 ...

  4. 一卡通(M1卡)破解过程记录——准备篇

    前些日子在研究学校的一卡通安全,在此记录一下一卡通破解的全过程,仅用作学习交流,切勿用于违法用途 其他几篇: 一卡通(M1卡)破解过程记录--理论篇               获取扇区密钥      ...

  5. win7下安装ArcGIS9.3步骤与破解过程

    对于arcGIS9.3的安装,网上已经有一堆现成的文章,我参考的是http://wenku.baidu.com/view/d7e7bcc9da38376baf1fae88.html.不过因为系统和软件 ...

  6. Android破解过程-滚动的天空

    Android破解-滚动的天空 ##前言 最近看到很多学生在玩滚动的天空这个游戏,这游戏看起来还挺有趣的,于是我也去下载玩了几把.可是,坑呐,这游戏太难了,考验人的快速判断能力和手指滑动速度,玩的很渣 ...

  7. WinRAR4.01破解版破解过程

    WinRAR是我们平时最常用到的软件之一,由于它并非免费软件,试用期过后,每次打开winRAR都会提示请注册的对话框,令人烦不胜烦.于是,我一般的做法是下载低版本的被破解后的winrar使用(最新版的 ...

  8. Sublime Text 3143 Win32版本暴力破解过程

    Sublime Text是一款强大的文本编辑器,在不注册的情况下也可以使用,但标题栏的未注册字样与时不时弹出的nag窗口有时也让人感觉很不爽,于是尝试对其注册过程进行分析与破解. 截至写本篇文章时,S ...

  9. 如何防止软件被破解?

    到底是魔高一丈?还是道高一丈?破解与防破解之间就像矛与盾一样,自第一个软件上线那天起,这就是个永恒的话题. 在牛的团体也无法避免自己软件被破解,这点不是技术问题,而是信息化的时代的产物,软件基于二进制 ...

最新文章

  1. Python NumPy-快速处理数据
  2. 微众WeCross 跨链平台(2)网络拓扑
  3. Linux mkdir 命令创建多级目录
  4. 数据结构(二)--队列
  5. CNN实操记录(goal:一日一更新)
  6. jQuery基础 - 常用基本属性
  7. JavaScript-鼠标事件(鼠标点击松开移动效果)
  8. oracle使用索引和不使用索引性能分析
  9. Pod install 慢, pod update 慢, Cocoapods setup下载缓慢,手动解决方案
  10. 超强、超详细Redis入门教程
  11. Microsoft Visio 画图遇到的问题及解决办法
  12. 【语义分割】3、用mmsegmentation训练自己的分割数据集
  13. 界门纲目科属种的英文——学生物的基础
  14. 支持Micro USB安卓接口与iphone 8手机的5W无线充电芯片|无线快充芯片小封装SOP8外围简单精简
  15. Mac远程操作Ubuntu共享文件
  16. 个人理财小助手 —— 数据库(二)
  17. 24时区来源,CST,CET,UTC,DST,Unix时间戳概述、关系、转换
  18. 比较超声与临床体检检查早期关节炎患者手部屈肌腱腱鞘炎
  19. 题解洛谷1179数字统计 记录问题
  20. 上海大学电影学院计算机宿舍,上海这座电影学院,藏在一所211大学里,影响力堪比北电上戏...

热门文章

  1. 福建瑞芯微电子实习第二天
  2. c语言brr17,年末C道出位,OPPO R17新年版美不胜收
  3. 渗透测试另类利用社会工程学
  4. 笔记本电脑常见的外壳
  5. 华为质量官:质量是一种习惯,是符合要求
  6. 华为mate10科学计算机,华为mate10特殊功能
  7. 树莓派3Bgrovepi 配置 ssh登陆
  8. ArcGIS Pro栅格数据批量归一化处理
  9. mybatis WARN No appenders could be found for logger的解决方法
  10. css前端面试题(二)