這段時間對南方周易系列軟件的逆向研究,發現它的大部分注冊機制大部分相同,因為那個軟件不太好找下載地址。
官網上只有排八字、起名和萬年歷的軟件。廣大的壇友又給我提供了批八字與六爻的程序,現在一并發出來。
因為有之前的按步驟操作過程截圖,這次,就只在關鍵的部分進行分析。
注冊機及軟件下載在文未,需要簡單粗暴看結果的,直接翻到結尾:)
一、機器碼處理部分
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種不同的注冊碼,一定會有一個是正確的。
|