吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 38822|回复: 137
收起左侧

[.NET逆向] xxx系列注册机分析

    [复制链接]
lmze2000 发表于 2017-4-27 19:35
本帖最后由 H夜 于 2019-6-6 18:23 编辑

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

因为有之前的按步骤操作过程截图,这次,就只在关键的部分进行分析。

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

一、机器码处理部分
1.1、MD5运算部分

南方系列的软件在机器码的处理部分,分为两种情况。一种是直接取机器码去掉"-"后的字符串的前10位与后5位。不进行任何处理
直接MD5计算。
见下面代码
[C#] 纯文本查看 复制代码
                                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#] 纯文本查看 复制代码
                        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#] 纯文本查看 复制代码
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#] 纯文本查看 复制代码
                                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, 下载次数: 1659)


注册机.PNG

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


六爻界面.PNG


六爻注册.PNG

批八字.PNG

起名注册.PNG










免费评分

参与人数 47威望 +1 吾爱币 +59 热心值 +41 收起 理由
mingtao + 1 我来晚了,下载不了,呃呃
朔子哥哥 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
敏常乐 + 1 热心回复!
anmyah + 1 + 1 谢谢@Thanks!
zhyp888 + 1 + 1 谢谢@Thanks!
辕驰玄 + 1 + 1 热心回复!
春夏之际 + 1 + 1 谢谢@Thanks!
乐天骥 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wezve + 1 + 1 666
freeness2006 + 1 + 1 谢谢@Thanks!
wangchongqqq + 1 + 1 23704-31334-61760-42330 大神看到我,我运行不了程序,帮忙算下。。谢谢 .
ludidi + 1 + 1 我很赞同!
TC王者 + 1 鼓励转贴优秀软件安全工具和文档!
postgis + 1 谢谢@Thanks!
在生命的时光里 + 1 + 1 厉害了
yo44444 + 1 我很赞同!
左岸麦田 + 3 + 1 已答复!
gewei521 + 1 + 1 谢谢@Thanks!
qwerttqqaz + 1 + 1 我很赞同!
a5606495 + 1 + 1 我很赞同!
占卜士 + 1 + 1 我很赞同!
ypddd + 1 谢谢@Thanks!
fhangong + 1 + 1 鼓励转贴优秀软件安全工具和文档!
mod009 + 1 我很赞同!
lin295693097 + 1 + 1 谢谢@Thanks!
yywyf0001 + 1 + 1 谢谢@Thanks!
14848 + 1 + 1 谢谢@Thanks!
kuan99118 + 2 + 1 楼主厉害!
1455018613 + 1 已答复!
wangjf + 1 + 1 我很赞同!
jlm1071 + 1 + 1 我很赞同!
雫Hao洋洋 + 1 + 1 谢谢@Thanks!
易邪 + 1 + 1 谢谢@Thanks!
tjdx + 1 + 1 谢谢@Thanks!
heihei1314 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
l1280 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
my1229 + 2 + 1 多谢楼主的算法注册机,辛苦了!
wenxiaoya + 1 + 1 谢谢@Thanks!
akinet + 2 + 1 谢谢@Thanks!原程序确实下不了,除非购买了...
残叶cy + 1 + 1 热心回复!
吾爱装B + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
仙峰涯 + 1 + 1 谢谢@Thanks!
haoren + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
pendan2001 + 1 谢谢@Thanks!
Hmily + 1 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
wanghai123 + 1 + 1 我很赞同!
pyj521 + 1 + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

hdwlx 发表于 2017-4-29 20:06
lmze2000 发表于 2017-4-28 16:19
你用的是不是xp环境,,
我刚才试了一下,在虚拟机的xp环境下,报不是有效32位程序,你换个win7在看看

的确是XP系统,可能楼主的是64位程序,因为图标都是空白的那种。
YoungBai 发表于 2017-4-30 15:53
潇洒浪子 发表于 2017-4-27 20:37
注册机下载后还是提示 出现问题"不是有效的win32应用程序“  我的系统是xp

应该是你电脑上安装的.net版本低了.估计要.net 4.0及以上才行.
pyj521 发表于 2017-4-27 19:39
lovemft 发表于 2017-4-27 19:51
谢谢楼主分享 看到了
任雨洒 发表于 2017-4-27 19:54
感谢分享
头像被屏蔽
wanghai123 发表于 2017-4-27 19:55
提示: 作者被禁止或删除 内容自动屏蔽
壊丶壊 发表于 2017-4-27 20:10
楼主辛苦了
3yu3 发表于 2017-4-27 20:15
2年前也研究过,就是原版程序 太不好找。啥时候程序齐全了再研究一下。
xmtt2008 发表于 2017-4-27 20:27

感谢分享
潇洒浪子 发表于 2017-4-27 20:37
注册机下载后还是提示 出现问题"不是有效的win32应用程序“  我的系统是xp  
QQ图片20170427203705.png
胖子哦 发表于 2017-4-27 20:47
路过看看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 14:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表