首页
社区
课程
招聘
[原创]分析一个.NET程序
发表于: 2006-6-13 00:09 5549

[原创]分析一个.NET程序

2006-6-13 00:09
5549
【文章标题】: 分析一个.NET程序
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  分析一个.NET程序
  
  我不懂.NET,也不懂什么程序语言。只知道用Reflector查看了以后有个SoftwareRegistration,我想就是在这里找注册的吧!
  
  下面的是SoftwareRegistration.button1_Click(Object, EventArgs) : Void,里面的内容:
  
  
  
  private void button1_Click (object sender, EventArgs e)
  {
       if (((this.textBox2.Text.Trim().Length < 5) || (this.textBox3.Text.Trim().Length < 5)) || (((this.textBox4.Text.Trim().Length < 5) || (this.textBox5.Text.Trim().Length < 5)) || (this.textBox6.Text.Trim().Length < 5)))
       {
            MessageBox.Show("\u8BF7\u8F93\u5165\u5B8C\u6574\u7684\u8F6F\u4EF6\u6CE8\u518C\u7801\uFF01");
       }
       else
       {
            string text1 = string.Concat(new string[]{this.textBox2.Text.Trim(), "-", this.textBox3.Text.Trim(), "-", this.textBox4.Text.Trim(), "-", this.textBox5.Text.Trim(), "-", this.textBox6.Text.Trim()});
            if ((text1.Substring(6, 5) + text1.Substring(0x18, 5)) == SoftwareRegistration.strTruecode)
            {
                 using(StreamWriter writer1 = new StreamWriter("sn.txt"))
                 {
                      writer1.Write(text1);
                      writer1.Close();
                 }
                 MessageBox.Show("\u6CE8\u518C\u6210\u529F\uFF01");
                 base.Close();
            }
            else
            {
                 MessageBox.Show("\u7528\u6237\u5E8F\u5217\u53F7\u6216\u8F6F\u4EF6\u6CE8\u518C\u7801\u65E0\u6548\uFF01");
            }
       }
  }
   
  
  
  
  
  
  ----------------------------------------------
  
  
  
  
  MessageBox.Show("\u8BF7\u8F93\u5165\u5B8C\u6574\u7684\u8F6F\u4EF6\u6CE8\u518C\u7801\uFF01")
  
  显示内容为:请输入完整的软件注册码!
  
  MessageBox.Show("\u6CE8\u518C\u6210\u529F\uFF01")
  
  显示内容为:注册成功!
  
  MessageBox.Show("\u7528\u6237\u5E8F\u5217\u53F7\u6216\u8F6F\u4EF6\u6CE8\u518C\u7801\u65E0\u6548\uFF01");
  
  显示内容为:用户序列号或软件注册码无效!
  
  以上的都是我一个一个词查找出来的,我想应该是判断注册的地方
  
  原程序的注册方式是自己生成机器码,10个字,FS开头+你硬盘的序列号,例如我的就是:FS295012D6
  
  然后让你填写注册码,注册码分成5段,每段5个字。
  
  首先判断每段注册码是否小于5,是的话就是提示信息:请输入完整的软件注册码!不是的话就往下。
  
  中间是关键,它先把那5段注册码用-合并,然后再从里面取出10个,也就是第二段的全部和第五段的全部,一共10个。然后再给那个SoftwareRegistration.strTruecode比较,如果相等就提示成功。不等的话就提示:用户序列号或软件注册码无效!
  
  我想这应该是比较简单的,请大家看看我分析的对不对!
  
  
  疑问:
  
  
  1  this.textBox2.Text.Trim() + "-" + this.textBox3.Text.Trim() 中间的+用Reflector看的时候有,用Xenocode Fox 2006 Evaluation看的时候没有是什么原因?
  
  2  就是不明白SoftwareRegistration.strTruecode是什么,怎么给它比较?
  
  3  分析的对吗,请大家指教!
  
  
  
  -----------------------------------------------
  
  
  
  下面的是我认为还可能有用的地方,但是我就看不懂了!
  
  
  SoftwareRegistration.GetRegistrationCode(String) : String
  
  private string GetRegistrationCode(string strUserCode)
  {
        string text1 = strUserCode;
        string text2 = "F2INES0UN6";
        string text3 = "";
        for (int num4 = 0; num4 < text1.Length; num4++)
        {
              int num1 = text1[num4];
              if (num1 < 0x41)
              {
                    num1 -= 0x30;
              }
              else
              {
                    num1 -= 0x37;
              }
              int num2 = text2[num4];
              if (num2 < 0x41)
              {
                    num2 -= 0x30;
              }
              else
              {
                    num2 -= 0x37;
              }
              int num3 = num1 + num2;
              if (num3 > 0x23)
              {
                    num3 = num3 % 0x23;
              }
              if (num3 < 10)
              {
                    num3 += 0x30;
              }
              else
              {
                    num3 += 0x37;
              }
              text3 = text3 + ((char) ((ushort) num3)).ToString();
        }
        return text3;
  }
  
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2006年06月13日 00:08:15

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错,谢谢。
2006-6-13 12:59
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
strTruecode应该是这个类里定义的,作注册码有效与否比较用的,再找找看。
2006-6-13 16:20
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我真的对这方面不太懂,我想注册码的比较是和这个strTruecode比较的,但是又找不到strTruecode的内容是什么!

下面是这样的:

SoftwareRegistration.strTruecode : String
内容是:
public static string strTruecode;

我不知道怎么比较了!

1 请问一下:SoftwareRegistration.GetRegistrationCode(String) : String

是干什么用的?

2 和那个strTruecode有关系吗?
2006-6-13 20:34
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
本人来学习的,不是很懂,但很有兴趣
2006-6-13 21:38
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
谢谢大家的支持,我也从来不搞这东西,但是现在遇到这个问题了,就临时来学习学习,希望能跟上.

虚心请教大家.
2006-6-13 22:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
请大家帮我分析一下吧,哪怕指点一下也行啊.
2006-6-14 07:48
0
雪    币: 259
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
你看看SoftwareRegistration的构造函数里面.肯定有对strTruecode赋值的语句

Reflector看到得完全是源码,花点时间就搞定了.
2006-6-14 08:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢大家了,我还要去翻翻书,对这方面也是刚起步,麻烦大家了.

我会关注这个帖的,大家有好的意见就给我回复,谢谢了.
2006-6-14 09:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10

1 请问一下:SoftwareRegistration.GetRegistrationCode(String) : String

是干什么用的?

在你斤的片段彦面,??有看到呃?function被引用,所以?法催定是?什?用的,只能知道呃段code是在做什?


2 和那个strTruecode有关系吗?

既然比?的?候是直接和strTruecode去比?
所以,我猜和?生strTruecode是相晷的
2006-6-14 10:23
0
雪    币: 259
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
最好把程序发上来
2006-6-14 13:08
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
真不好意思,中午没回来看.

大家想看程序的话就自己去下吧.

http://www.31home.net/soft.rar

我感觉这个是一个很入门的小程序,但是由于我对语言一点都不了解,以至于这点小问题也要麻烦大家.

学无止境,努力学习.
2006-6-14 14:07
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
public SoftwareRegistration()
{
      this.components = null;
      this.InitializeComponent();
      this.textBox1.Text = "FS" + SoftwareRegistration.GetVolOf("C");
      SoftwareRegistration.strTruecode = this.GetRegistrationCode(this.textBox1.Text.Trim());
      this.textBox7.Text = SoftwareRegistration.strTruecode;
      this.strRC = this.GetRegistrationCode(this.textBox1.Text.Trim());
}
2006-6-14 15:22
0
雪    币: 259
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
14

你看看SoftwareRegistration的构造函数里面.肯定有对strTruecode赋值的语句

Reflector看到得完全是源码,花点时间就搞定了.


最初由 memxie 发布
public SoftwareRegistration()
{
this.components = null;
this.InitializeComponent();
this.textBox1.Text = "FS" + SoftwareRegistration.GetVolOf("C");
........


已经有人写出来了.跟我猜得不错,的确是在构造函数里面赋得值.
2006-6-14 19:24
0
雪    币: 146
活跃值: (33)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
15
Reflector?看来是个好东西....去下载!!!
2006-6-14 20:33
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
虽然了解不多,但是觉得Reflector这个东西真的不错.

谢谢大家的解释,现在有点眉目了.
2006-6-15 23:30
0
雪    币: 269
活跃值: (51)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
现在用net编的软件变得都了起来,再不学习,就要落伍了。
2006-6-16 11:54
0
游客
登录 | 注册 方可回帖
返回
//