这段时间对南方周易系列软件的逆向研究,发现它的大部分注册机制大部分相同,因为那个软件不太好找下载地址。
官网上只有排八字、起名和万年历的软件。广大的坛友又给我提供了批八字与六爻的程序,现在一并发出来。
因为有之前的按步骤操作过程截图,这次,就只在关键的部分进行分析。
注册机及软件下载在文未,需要简单粗暴看结果的,直接翻到结尾:)
一、机器码处理部分
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种不同的注册码,一定会有一个是正确的。
|