首页
社区
课程
招聘
[原创]再堕落一次:破解慧源通用进销存(.net)
发表于: 2005-2-22 16:52 12208

[原创]再堕落一次:破解慧源通用进销存(.net)

2005-2-22 16:52
12208

名称:慧源通用进销存
版本:单机版1.13
编译:VB.net
网址:www.hysb.net
保护方式:模糊器(Obfuscator)

圈内人常说喜欢爆破的人比较堕落,我不是圈内人,所以不在乎,这不,又堕落了一次。
首先运行一下,弹出如下窗口,显示未注册版本还能使用几次。(图1)

用Reflector打开慧源数霸.EXE,发现经过了模糊,满眼都是毫无意义的b、h、au等等。(图2)

点击“注册”,弹出窗口中要输入用户名和密码。(图3)

这是我第一次面对模糊过的.NET程序,只能摸索自已的思路。现在首先要做的就是从茫茫代码中找出判断注册码的算法所在。用ILDASM将慧源数霸的EXE反汇编,可以得到很多资源文件。我们用Resorucer打开这些资源,发现了突破口,因为几乎每个资源中都有一张图片,表示出当前窗口。还记得我们刚才的注册窗口中的“软件注册”的图片吗,找的就是它。

找遍所有的资源,都没有发现这张图片,难道注册码判断不在主文件中?我完全有可能。于是将所有的DLL反汇编,终于,在HYSB.DLL中被发现。原来注册窗口的主代码就是HYSB.DLL-->am中的private void b(object A_0, EventArgs A_1)和private string a(string A_0, string A_1, string A_2)。(图4)

而注册窗口中的序列号刚是在.ctor()中实现的。代码如下:

public am()
{
      int num1;
      int num2;
      string text1;
      string text2;
      this.n = false;
      this.p = new au();
      this.a();
      string text3 = @"C:\";
      am.GetVolumeInformation(ref text3, ref text1, 0xff, ref this.q, ref num1, ref num2, ref text2, 0x100);
      this.r = StringType.FromInteger(this.q);
      this.r = Strings.Mid(this.r, this.r.Length - 4);
      this.l().Text = this.r;
}
public bool h()
{
      bool flag1;
      try
      {
            string text1;
            string text2;
            string text3;
            RegistryKey key1;
            if (this.d())
            {
                  this.b();
                  text2 = @"Software\HYSB\Soft\" + this.a;
                  key1 = Registry.CurrentUser.OpenSubKey(text2);
                  if (key1 == null)
                  {
                        string text5 = @"Software\Microsoft\Windows\" + this.a;
                        RegistryKey key2 = Registry.CurrentUser.OpenSubKey(text5);
                        if (key2 != null)
                        {
                              string text6 = StringType.FromObject(key2.GetValue("Code"));
                              string text7 = StringType.FromObject(key2.GetValue("NoCode"));
                              key1 = Registry.CurrentUser.CreateSubKey(text2);
                              key1 = Registry.CurrentUser.OpenSubKey(text2, true);
                              key1.SetValue("Code", this.c(text6));
                              key1.SetValue("NoCode", this.c(text7));
                              key1.Close();
                              key2.Close();
                        }
                  }
                  key1 = Registry.CurrentUser.OpenSubKey(text2);
                  if ((key1 != null) && (key1.GetValue("Code") != null))
                  {
                        text1 = this.a((byte[]) key1.GetValue("Code"));
                        text3 = this.a((byte[]) key1.GetValue("NoCode"));
                        goto Label_0152;
                  }
            }
            return false;
      Label_0152:
            key1.Close();
            text2 = @"AdmiSoft\" + this.a;
            key1 = Registry.CurrentUser.OpenSubKey(text2);
            if (key1 == null)
            {
                  return false;
            }
            string text4 = this.a((byte[]) key1.GetValue("UnitName"));
            if (StringType.StrCmp(this.a(text4, text3, this.a), text1, false) == 0)
            {
                  return true;
            }
            if (StringType.StrCmp(this.a(text4, text3), text1, false) == 0)
            {
                  Interaction.MsgBox("\u672c\u8f6f\u4ef6\u5df2\u7ecf\u66f4\u65b0\u6ce8\u518c\u53f7\u3002\u5982\u679c\u60a8\u662f\u4e00\u4e2a\u5df2\u7ecf\u6ce8\u518c\u7684\u6b63\u7248\u7528\u6237\uff0c\u8bf7\u5411\u8f6f\u4ef6\u5f00\u53d1\u5546\u7d22\u53d6\u65b0\u7684\u6ce8\u518c\u53f7\u3002", MsgBoxStyle.Information, this.i());
                  return true;
            }
            flag1 = false;
      }
      catch (Exception exception2)
      {
            ProjectData.SetProjectError(exception2);
            Exception exception1 = exception2;
            this.c(exception1);
            ProjectData.ClearProjectError();
      }
      return flag1;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (17)
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
2
郁闷,换行怎么没了
2005-2-22 16:53
0
雪    币: 161
活跃值: (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
好贴正如美女,是要 顶 弟,我顶
2005-2-22 17:02
0
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
4
小伙几天不见,原来是在忙这个。。  

顶一下!
2005-2-22 17:07
0
雪    币: 238
活跃值: (250)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
强!!
向老大学习
2005-2-22 17:38
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
6
最初由 nbw 发布
小伙几天不见,原来是在忙这个。。

顶一下!


这个搞了一晚上,主要是那个什么鸟模糊器,看的人头疼.

马上开始学驾驶,真要忙了
2005-2-22 17:41
0
雪    币: 227
活跃值: (241)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
7
表扬,不过思路还不完整,不才在下已将慧源公司所有产品的注册流程分析出来,并生成通用注册机,近日准备写个教程,与大家共同学习,
附上一图,大家看看!
2005-2-23 09:31
0
雪    币: 117
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
厉害。。。。
期待教程。。
.net,模糊是什么我都还不知道。。。
2005-2-23 09:51
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
9
期待...
2005-2-23 10:31
0
雪    币: 151
活跃值: (66)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
10
慧源通用进销存??


希望帖子地址。。我像下载试试
2005-2-23 14:35
0
雪    币: 151
活跃值: (66)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
也像,知道Reflector这个东西,如何安装???
谢谢。。指导
2005-2-23 14:52
0
雪    币: 214
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
为什么没有换行呢
2005-2-23 15:05
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
13
记事本中输入,没选自动换行,粘贴过来就没换行了,晕。
Reflector不需要安装,绿色的
慧源的下载,各大下载站以这个为关键词就可以搜到N多。

期待vipchenji兄的算法教程,嘿嘿
2005-2-23 15:57
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
惠源全系列注册机及源代码
http://www.fcgchina.com/index.php?showtopic=305
2005-2-24 20:03
0
雪    币: 5275
活跃值: (456)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
15

我刚想来帮你发一个的
2005-2-24 22:54
0
雪    币: 0
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
支持一下。
2005-2-25 01:23
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
17
2005-2-25 11:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习一下。
2005-2-25 11:30
0
游客
登录 | 注册 方可回帖
返回
//