锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务,锦州广厦维修电脑,公司IT外包服务
topFlag1 设为首页
topFlag3 收藏本站
 
maojin003 首 页 公司介绍 服务项目 服务报价 维修流程 IT外包服务 服务器维护 技术文章 常见故障
锦州市广厦电脑维修|上门维修电脑|上门做系统|0416-3905144热诚服务技术文章
.NET逆向南方周易系列注册机分析

作者: 佚名  日期:2017-04-27 23:02:20   来源: 本站整理

 这段时间对南方周易系列软件的逆向研究,发现它的大部分注册机制大部分相同,因为那个软件不太好找下载地址。
官网上只有排八字、起名和万年历的软件。广大的坛友又给我提供了批八字与六爻的程序,现在一并发出来。
因为有之前的按步骤操作过程截图,这次,就只在关键的部分进行分析。

注册机及软件下载在文未,需要简单粗暴看结果的,直接翻到结尾:)

一、机器码处理部分
1.1、MD5运算部分
南方系列的软件在机器码的处理部分,分为两种情况。一种是直接取机器码去掉"-"后的字符串的前10位与后5位。不进行任何处理
直接MD5计算。
见下面代码

[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
text = "";
text = Strings.Replace(A_0, " ", "", 1, -1, CompareMethod.Binary);
text = Strings.Replace(text, "-", "", 1, -1, CompareMethod.Binary);
text = Strings.Replace(text, "-", "", 1, -1, CompareMethod.Binary);
text = Strings.Replace(text, ",", "", 1, -1, CompareMethod.Binary);
text = Strings.Replace(text, "\u3000", "", 1, -1, CompareMethod.Binary);
bool flag = text.Length > 10;
if (true)
{
}
int num = 2;
while (true)
{
        switch (num)
        {
        case 0:
                text = Strings.Left(text, 10) + Strings.Right(text, 5);


另一种情况是,在进行了上面的前10位与后5位拼接后,还进行了如下的处理:即每位进行移位、与或运算,(主要是在排八字软件上。)
该步骤后,在进行MD5运算。

[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
string result;
if (flag)
{
        int num2 = length - 1;
        for (int i = 0; i <= num2; i++)
        {
                int num3 = Strings.Asc(A_0.Substring(i, 1));
                int a_ = num3 + 7;
                int a_2 = num3 * 5;
                num += unchecked((long)y.d(num3, a_, a_2));
                num += unchecked((long)y.c(num3, a_, a_2));
                num += unchecked((long)y.b(num3, a_, a_2));
                num *= unchecked((long)y.a(num3, a_, a_2)) + 12L;
                bool flag2 = num > 100000000L;
                if (flag2)
                {
                        num = Conversions.ToLong(Strings.Right(num.ToString(), 7));
                }
        }
        string text = num.ToString();
        bool flag3 = text.Length >= 6;
        if (flag3)
        {
                result = Strings.Right(text, 6);
        }
        else
        {
                result = (num + 523109L).ToString();
        }
}
return result;


1.2、字符串运算
在经过上面的MD5运算后,该系列软件这部分的注册过程还分两种情况,分别如下:
1.2.1、对MD5运算后截取位置为11、1、15、22、7、5,每位置截取2字符长度,拼接出一个12位长度字符串,
进行12次循环,每次循环判断是字母还是数字,如果是数字,那么直接与2进行异或,与结果串进行拼接,如果
是字母,那么取ASC码+20-循环的次数再转成字符串,如果转换后的字符是字母O,那么替换成数字0,再完成
所有的计算后,将生成的拼接字符串里面的数字0替换成数字4。完成替换后,从9、5、7、11这4个位置,每位置
取2位,拼接出注册码的第1-4位与9-12位。

代码如下:

[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public static string b(ref string A_0)
{
        string text = Strings.Replace(text, "0", "4", 1, -1, CompareMethod.Binary);
        result = Strings.Mid(text, 9, 2) + Strings.Mid(text, 5, 2) + Strings.Mid(text, 11, 2) + Strings.Mid(text, 7, 2);
        num = 13;
        continue;
}
case 6:
        {
                text2,
                Strings.Mid(A_0, 11, 2),
                Strings.Mid(A_0, 1, 2),
                Strings.Mid(A_0, 15, 2),
                Strings.Mid(A_0, 22, 2),
                Strings.Mid(A_0, 7, 2),
                Strings.Mid(A_0, 5, 2)
        });
        }
        string text3 = Conversions.ToString(Strings.Chr(Strings.Asc(Strings.Mid(text2, num2, 1)) + 20 - num2));
        flag = (Operators.CompareString(text3, "O", false) == 0);
        num = 10;
        continue;
}
case 9:
{
        int arg_121_0 = num2;
        int num3 = 12;
        if (arg_121_0 > num3)
        {
                num = 5;
                continue;
        }
        goto IL_295;
}
case 10:
 
flag = Versioned.IsNumeric(Strings.Mid(text2, num2, 1));
 
                }
        }



1.2.2
第2种情况,
总体流程是一样的,惟一不同的就是截取的位置变化了一下,MD5计算完之后,是从6、8、14、12、17、9的
位置来进行读取拼接,然后计算的时候,数字是与数字5进行异或计算,然后字符部分是把字母O替换成了数字8,
最后抽取注册码的位置变成了,7、5、11、9这4个位置。
代码如下:
 

[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
        string text = "";
        string text2 = "";
        text = string.Concat(new string[]
        {
                text,
                Strings.Mid(A_0, 6, 2),
                Strings.Mid(A_0, 8, 2),
                Strings.Mid(A_0, 14, 2),
                Strings.Mid(A_0, 12, 2),
                Strings.Mid(A_0, 17, 2),
                Strings.Mid(A_0, 9, 2)
        });
        int num = 1;
        do
        {
                bool flag2 = Versioned.IsNumeric(Strings.Mid(text, num, 1));
                if (flag2)
                {
                        text2 += Conversions.ToString(Conversions.ToInteger(Strings.Mid(text, num, 1)) ^ 5);
                }
                else
                {
                        string text3 = Conversions.ToString(Strings.Chr(Strings.Asc(Strings.Mid(text, num, 1)) + 20 - num));
                        bool flag3 = Operators.CompareString(text3, "O", true) == 0;
                        if (flag3)
                        {
                                text2 += "0";
                        }
                        else
                        {
                                text2 += text3;
                        }
                }
                num++;
        }
        while (num <= 12);
        text2 = Strings.Replace(text2, "0", "8", 1, -1, CompareMethod.Text);
        result = Strings.Mid(text2, 7, 2) + Strings.Mid(text2, 5, 2) + Strings.Mid(text2, 11, 2) + Strings.Mid(text2, 9, 2);
}
return result;



二、授权日期计算部分
授权日期这部分计算,没有变化,略过。详见我上一篇帖子。
南方排八字专业程序 V7.30 .net破解追码注册教程及爆破版

三、注册机及部分周易程序下载地址
由于官网和坛友提供的周易程序,可能存在版本不一致的情况,在注册的时候,从程序列表里面,
多选几个来计算注册码,基本上能覆盖到所有情况。


周易系列下载地址:链接: http://pan.baidu.com/s/1mi2Ymow 密码: 8nce
注册机下载地址:  注册机.zip (12.38 KB, 下载次数: 82) 


 

计算注册码的时候,如果发现有注册码不对的,就换一个软件名称来计算一下,应该会
计算出2种不同的注册码,一定会有一个是正确的。


 


 

 

 



热门文章
  • 机械革命S1 PRO-02 开机不显示 黑...
  • 联想ThinkPad NM-C641上电掉电点不...
  • 三星一体激光打印机SCX-4521F维修...
  • 通过串口命令查看EMMC擦写次数和判...
  • IIS 8 开启 GZIP压缩来减少网络请求...
  • 索尼kd-49x7500e背光一半暗且闪烁 ...
  • 楼宇对讲门禁读卡异常维修,读卡芯...
  • 新款海信电视机始终停留在开机界面...
  • 常见打印机清零步骤
  • 安装驱动时提示不包含数字签名的解...
  • 共享打印机需要密码的解决方法
  • 图解Windows 7系统快速共享打印机的...
  • 锦州广厦电脑上门维修

    报修电话:13840665804  QQ:174984393 (联系人:毛先生)   
    E-Mail:174984393@qq.com
    维修中心地址:锦州广厦电脑城
    ICP备案/许可证号:辽ICP备2023002984号-1
    上门服务区域: 辽宁锦州市区
    主要业务: 修电脑,电脑修理,电脑维护,上门维修电脑,黑屏蓝屏死机故障排除,无线上网设置,IT服务外包,局域网组建,ADSL共享上网,路由器设置,数据恢复,密码破解,光盘刻录制作等服务

    技术支持:微软等