【文章标题】: 分析一个.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
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法