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