首页
社区
课程
招聘
[求助]NET编译的要怎么破解
发表于: 2013-12-25 23:43 11578

[求助]NET编译的要怎么破解

2013-12-25 23:43
11578
个人没有语言基础
我只会用OD做个简单调试
现在遇到一个小软件,是用.NET编译的
这要怎么破解它

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (21)
雪    币: 3305
活跃值: (2027)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
.net reflector 配上用场了。
2013-12-25 23:52
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
软件我下了,我会再百度怎么用
有高人能帮我先破解个软件给用用吗
2013-12-26 00:03
0
雪    币: 56
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
http://blog.csdn.net/u010561359/article/details/8986660

这篇文章把破解软件的过程总结成三步。非常精辟,通过本文的方法我破解了好几个.net程序。

原来破解.net这么简单。
2013-12-26 10:14
0
雪    币: 303
活跃值: (476)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
给个连接看看
2013-12-26 10:25
0
雪    币: 221
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
reflector + Reflexil插件:静态分析+程式修改

ilspy:静态分析+动态调试

de4dot:反混淆,包括很多主流的保护方式
2013-12-26 15:03
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这软件是无注册部份功能限制
2013-12-26 16:34
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢各位高人的指点
今晚有活可忙了
2013-12-26 16:35
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
没有高手要帮忙
那可以给些.net.NET Framework SDK的调试教程吗
2013-12-31 09:30
0
雪    币: 132
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
首先反编译.NET,一看是混搅过的。
不过用的 混搅软件垃圾的可以。应该可以破掉

找到比对的方法 原来是通过 EMAIL +一个算法生产的序列号。这里是 反运算一次,然后和EMAIL 进行比对如果OK 那么 去  http://www.mysoft.idv.tw/mymoneymail.txt 查找有没有这个邮箱
如果有就是注册成功。

好的我们继续

找到 反运算的 方法

通过我整理 得到
        static string a(string A_0)
        {
            
            string str5 = "";       
       

            StringType.MidStmtStr(ref A_0, 1, 1, " ");
       
           
            StringType.MidStmtStr(ref A_0, 2, 1, " ");
       
            
            StringType.MidStmtStr(ref A_0, 3, 1, " ");
      
            
            A_0 = A_0.Trim();
       
            
            if ((A_0.Length % 5) == 0)
            {
                if (A_0.Length >= 20)
                {
                    if (A_0.Trim() != "")
                    {
                        int num8 = A_0.Length;
                        int start = 1;

                    Re:
                        if (start <= num8)
                        {
                            string str = Strings.Mid(A_0, start, 5);


                            int num4 = Strings.Asc(Strings.Mid(str, 1, 1));


                            int num5 = Strings.Asc(Strings.Mid(str, 4, 1));


                            string str2 = Strings.Mid(str, 2, 1);


                            string str3 = Strings.Mid(str, 3, 1);


                            string str4 = Strings.Mid(str, 5, 1);


                            int num6 = 0;

                            if (num4 <= num5)
                            {
                                num6 = num5 - num4;
                            }

                            num6 = num4 - num5;

                            int num = (Strings.Asc(str2) - num6) - 0x41;


                            int num2 = (Strings.Asc(str3) - num6) - 0x41;


                            int num3 = (Strings.Asc(str4) - num6) - 0x41;

                            string am1 = Conversions.ToString(num);
                            string am2 = Conversions.ToString(num2);
                            string am3 = Conversions.ToString(num3);
                            double zm = Conversion.Val( am1+am2+am3);

                            str5 = str5 + Conversions.ToString(Strings.Chr((int)Math.Round(zm)));

                            start += 5;

                            goto Re;
                        }
                    }

                }
            }      
           
          
            
            return str5;

        }


这样的代码

然后 根据这个代码的规则 写出 序列号算法: (搞笑的是C#在调用VB的库。算了为了方便嘛。我也不管了。直接用了)

        static string DE(string a)
        {
            string re = "";

            foreach (char c in a)
            {
                int m = Strings.Asc(c);

                int am1 = 51;
                int am2 = 50;



                string zm = m.ToString();



                int x1 = 0;
                int x2 = 0;
                int x3 = 0;
                

                x1 = 0;
                x2 = Convert.ToInt32(zm[0].ToString());
                x3 = Convert.ToInt32(zm[1].ToString());

                
                x1 += 1;
                x2 += 1;
                x3 += 1;
                x1 += 0x41;
                x2 += 0x41;
                x3 += 0x41;

                string mr = "";
                mr += Strings.Chr(am1);
                mr += Strings.Chr(x1);
                mr += Strings.Chr(x2);
                mr += Strings.Chr(am2);
                mr += Strings.Chr(x3);

                re += mr;
            }

            re = "abc" + re;

            int mxxx = re.Length;

            return re;
        }


最后 随便选个邮箱: 国内这个地址打不开哦。我选了个香港的服务器开的


注册成功:

你看人家卖 200块钱的东西又被我破掉了~台湾人写软件真不咋的。你看连窗口图标都不改。
上传的附件:
2013-12-31 21:22
0
雪    币: 132
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
你看多简单嘛
2013-12-31 21:27
0
雪    币: 132
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
如果用SA 混搅的话。 那我也没办法了~
2013-12-31 21:29
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
@.@~~~
高人....
我看的眼花了
我只会用OD暴破
2014-1-2 08:07
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
请问.NET软件您是用什么调试器破解的
我想找找教程
以前学OD是看天草和黑鹰
现在教程不好找啊
2014-1-2 08:10
0
雪    币: 132
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
.NET 不需要调试,看看代码就知道他干嘛了。 对付JAVA 和.NET 我一般都不调试的。
2014-1-2 19:18
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
那能不能给个序号用用
2014-1-2 21:32
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
无需调用VB库的C#代码
        static string MMZ_RegCode(string email)
        {
            string regcode = "";
            Random random = new Random(); //随机种子
            foreach (char email_char in email)
            {
                //电子邮箱的每个字符演算成5个字符组成注册码的主体部分。
                string email_char_ascii = string.Format("{0:D3}", (UInt16)email_char); //电子邮箱字符串的每个字符取ASCII值,格式化成3位10进制数值;

                int regcodepart_1 = random.Next(65, 90); // 随机产生一个A..Z之间的随机字母,产生第一位字符的ASCII值。
                int regcodepart_4 = random.Next(65, 90); // 随机产生一个A..Z之间的随机字母,产生第四位字符的ASCII值。


                int regcodepart_2 = Convert.ToUInt16(email_char_ascii[0].ToString()); //电子邮箱字符串得到的3位10进制数值,百位。
                int regcodepart_3 = Convert.ToUInt16(email_char_ascii[1].ToString()); //电子邮箱字符串得到的3位10进制数值,十位。
                int regcodepart_5 = Convert.ToUInt16(email_char_ascii[2].ToString()); //电子邮箱字符串得到的3位10进制数值,个位。

                regcodepart_2 += Math.Abs(regcodepart_1 - regcodepart_4); //加上第一位字符与第四位字符ASCII值的差的绝对值。
                regcodepart_3 += Math.Abs(regcodepart_1 - regcodepart_4); //加上第一位字符与第四位字符ASCII值的差的绝对值。
                regcodepart_5 += Math.Abs(regcodepart_1 - regcodepart_4); //加上第一位字符与第四位字符ASCII值的差的绝对值。

                regcodepart_2 += 0x41; //加上65,产生第二位字符的ASCII值。
                regcodepart_3 += 0x41; //加上65,产生第三位字符的ASCII值。
                regcodepart_5 += 0x41; //加上65,产生第五位字符的ASCII值。

                string regcodemain = "";
                regcodemain += (char)regcodepart_1; // 得到第一位字符。
                regcodemain += (char)regcodepart_2; // 得到第二位字符。
                regcodemain += (char)regcodepart_3; // 得到第三位字符。
                regcodemain += (char)regcodepart_4; // 得到第四位字符。
                regcodemain += (char)regcodepart_5; // 得到第五位字符。

                regcode += regcodemain; //得到主体部分。
            }

            regcode = "MMZ" + regcode; //前面再加上程序的简称。
            return regcode;
        }


有可能更加接近作者的原意。
上传的附件:
2014-1-4 17:13
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
没有语言基础,只会爆破
求个序号机啊
2014-1-6 12:43
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
注册机是用Excel做的,实际上口算都能得到结果。
2014-1-6 21:37
0
雪    币: 189
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
真的能用了
太感谢了
EXCEL也能做出注册机
真神啊
2014-1-7 12:43
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
楼主可以放对应的版本上来么?学习一下
2014-2-19 10:30
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
.net reflector8.3
2014-5-7 17:47
0
游客
登录 | 注册 方可回帖
返回
//