gaocl 发表于 2023-7-27 08:35

发行商返回授权文件的方式能够脱壳吗

本帖最后由 gaocl 于 2023-7-31 15:55 编辑


大家好,我是新手+小白,在使用不少和谐版软件的过程中,遇到的破解方式一般是输入序列号、使用破解程序、或者是两者同时使用;但是第一次遇到通过网络返回授权文件的情况,步骤如下:

软件为单机版,不联网的情况下也是可以使用的,软件安装以后有一次试用机会,但是退出后就需要注册使用了,否则打不开,注册程序如下:

1、本地注册机输入序列号+用户名称+联系人,然后单击“申请”按钮,弹出文件保存对话框选择一个文件夹,用于保存本地注册机生成的注册申请文件(文件扩展名为req);

2、用户通过电子邮件等通讯工具将上一步生成的注册申请文件发送给软件发行商,向发行商申请授权文件;

3、收到发行商返回的授权文件(文件扩展名为lic)后,再次打开本地注册机,通过加载授权文件后,注册窗口出现一堆注册码,完成注册。

其他说明:如果不方便外发电子邮件,也可以通过传真、书信等方式将序列号+用户名称+联系人、联系电话、地址、邮箱等信息告知发行商,向发行商申请授权文件(这里不使用本地注册机,应该不会与本地电脑的物理地址发生关联)。每一个序列号和授权文件是唯一的、相对应的,重装系统后,只需重新加载授权文件即可。

还请各位大侠能够答疑解惑,这种授权文件能否通过什么好的工具自动生成呢?发行商应该也是使用某种算法的小程序生成的注册文件。

darksied 发表于 2023-7-31 20:29

程序把授权文件保存到sqlserver数据库里,每次启动会从数据库里读取授权,如果数据库里没有,就引发异常,CheckLicense()这个函数监测到异常就关闭程序。这个程序没加密,直接修改就行


                public object ReadLicense(int manualid)
                {
                        LicenseManager licenseManager = new LicenseManager(manualid);
                        string text = string.Empty;
                        SqlCeConnection sqlCeConnection = new SqlCeConnection(this.m_connstr);
                        sqlCeConnection.Open();
                        SqlCeCommand sqlCeCommand = new SqlCeCommand("select license from t_license", sqlCeConnection);
                        text = sqlCeCommand.ExecuteScalar().ToString();
                        Exception ex = null;
                        LicenseInfo result = null;
                        try
                        {
                                result = licenseManager.getLicenseInfo(text);
                        }
                        catch (Exception ex2)
                        {
                                ex = ex2;
                                int num = 0;
                                int.TryParse(text, out num);
                                if (num > 10)
                                {
                                        ex = new SecurityException("已经达到试用次数上限,请注册");
                                }
                                num++;
                                SqlCeCommand sqlCeCommand2 = new SqlCeCommand("update t_license set license ='" + num.ToString() + "'", sqlCeConnection);
                                sqlCeCommand2.ExecuteNonQuery();
                        }
                        sqlCeConnection.Close();
                        if (ex != null)
                        {
                                throw ex;
                        }
                        return result;
                }

private void CheckLicense()
                {
                        if (this.m_manual_id > 0)
                        {
                                try
                                {
                                        object obj = this.m_EMData.ReadLicense(this.m_manual_id);
                                }
                                catch (Exception ex)
                                {
                                        if (!(new winRegistor
                                        {
                                                Owner = this,
                                                ManualID = this.m_manual_id,
                                                ManualVersion = this.m_manual_version,
                                                emdata = this.m_EMData
                                        }.ShowDialog() == true))
                                        {
                                                if (ex.GetType() == typeof(SecurityException))
                                                {
                                                        SystemMessageBox.ShowError(ex.Message);
                                                        System.Windows.Application.Current.Shutdown();
                                                }
                                        }
                                }
                        }

3yu3 发表于 2023-7-27 16:07

注册申请文件是依据你电脑硬件及你的申请信息生成的,发行商手里肯定有相应软件算法的生成LIC的工具啊。

gaocl 发表于 2023-7-27 20:41

3yu3 发表于 2023-7-27 16:07
注册申请文件是依据你电脑硬件及你的申请信息生成的,发行商手里肯定有相应软件算法的生成LIC的工具啊。

感谢你的回答,我在本地生成的req格式文件挺简单的,机器编码我也看不出和我电脑硬件有何关系,应该是跟安装的软件有关,序列号自己输入,不明白授权文件和什么相关联?如何做到序列号和授权文件唯一对应的呢?就是通过序列号经过某种算法得到相应的授权文件吗?那该如何进行有效脱壳呢?希望你能给指点迷津。
以下为本地生成的注册申请文件,已经做了脱敏处理
<?xml version="1.0" encoding="utf-8"?>
<LicenseRequest>
<UserCode>A4055-Q6851-G3175-O5842</UserCode>
<MachineCode>TkEyMDcyODgyNA==</MachineCode>
<ManualID>621</ManualID>
<ManualVersion>1.0</ManualVersion>
<UserName>{:1_919:}{:1_919:}</UserName>
<ContactPerson>{:1_919:}{:1_919:}</ContactPerson>
<OfficePhone />
<MobilePhone>{:1_919:}{:1_919:}</MobilePhone>
<Fax />
<Email />
<QQCode />
<MailCode />
<PersonTitle />
<Address />
</LicenseRequest>

艾莉希雅 发表于 2023-7-27 21:54

啥软件哦,有一次试用机会怕不是会被人弄成重复试用版本

gaocl 发表于 2023-7-28 07:49

艾莉希雅 发表于 2023-7-27 21:54
啥软件哦,有一次试用机会怕不是会被人弄成重复试用版本

你好,按照版规要求,我不能说软件名字,是某书带的教学光盘上的软件,给的试用机会就是打开后能浏览一些内容,每次切换页面的时候都会弹出注册提示窗口,关闭提示窗口后还能继续浏览该页面,当切换页面达到一定次数时(具体多少次我没有数,应该在10次以内)再弹出注册提示窗口的时候,按照惯例关闭提示窗口,整个软件也就退出了。
安装文件夹里面有个这样名字——unpack.exe的文件,我试着将其移动到别的盘符,软件就不能打开了,与之相邻的还有个unpack.exe.config文件,打开里面的代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
   <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
</startup>
</configuration>

不知道脱壳是否能从这个文件下手,或者在安装文件夹内还有其它文件充当壳的作用,望高手指点一二。

situhaonan 发表于 2023-7-28 08:33

说的这么神乎,就是一个本地验证而已。   软件注册 分为序列号验证,注册表验证、网络验证、本地文件验证 等。

绕过注册,直到达核心。

666888tzq 发表于 2023-7-28 12:40

就是本地验证,说得那么玄乎。{:1_908:}

gaocl 发表于 2023-7-28 15:06

situhaonan 发表于 2023-7-28 08:33
说的这么神乎,就是一个本地验证而已。   软件注册 分为序列号验证,注册表验证、网络验证、本地文件验证 ...

那么我遇到的是本地文件验证了?请问如何绕过、直达核心呢?

gaocl 发表于 2023-7-28 15:08

666888tzq 发表于 2023-7-28 12:40
就是本地验证,说得那么玄乎。

我是新手小白,不懂什么是本地验证,让你见笑了,这种验证应该容易对付吧?

3yu3 发表于 2023-7-28 22:14

gaocl 发表于 2023-7-28 07:49
你好,按照版规要求,我不能说软件名字,是某书带的教学光盘上的软件,给的试用机会就是打开后能浏览一些 ...

软件发来看看,否则一切讨论都是空中楼阁
页: [1] 2 3
查看完整版本: 发行商返回授权文件的方式能够脱壳吗