yuqiu 发表于 2025-4-6 12:54

Listary激活~

# Listary激活

## 第一阶段:打开软件dnSpy

1.使用dnSpy继续反编译,下载地址自行百度。。。。

## 第二阶段:将 EXE 文件拖入 dnSpy

2. 打开Listary的安装目录,将Listary.EXE 文件直接拖拽到 dnSpy 窗口中。


## 第三阶段:找到 Listary.Core.Pro

3. 在 dnSpy 窗口中,导航到 `Listary.Core.Pro` 类。


## 第四阶段:找到 LicenseChecker 类,定位到 CheckLicense 函数

4. 找到 `LicenseChecker` 类,并且定位到 `CheckLicense` 函数。
   
   `CheckLicense` 函数是验证许可证的核心函数,通常会调用其他函数并最终返回一个 `bool` 值。在这个函数内,我们的目标是将返回值直接设为 `true`,以跳过验证。


## 第五阶段:编辑类,修改返回值

5. 对着右侧的 `LicenseChecker` 类,右键点击并选择“编辑类”。

   在弹出的编辑窗口中,将 `CheckLicense` 函数中的返回值改为 `true`,并删除其他无关代码。修改完成后,点击“编译”按钮。



## 第六阶段:保存代码并替换 EXE 文件

6. 修改完成后,保存代码,并将修改后的代码重新打包到原始 EXE 文件中。


## 第七阶段:完成

7. 操作完成,over~

云在天 发表于 2025-4-7 14:59



公开一下Hook的函数, 可以参考一下

Vvvvvoid 发表于 2025-4-6 22:26

本帖最后由 Vvvvvoid 于 2025-4-7 14:01 编辑

有一个定时校验的 task 也需要处理

## patch 2

// Listary.Core.Pro.ProService
// Token: 0x06000CB1 RID: 3249 RVA: 0x000307B4 File Offset: 0x0002E9B4
public Task ScheduleAutoCheck()
{
   
}

何西烛 发表于 2025-4-7 15:54

本帖最后由 何西烛 于 2025-4-7 20:14 编辑

Vvvvvoid 发表于 2025-4-6 22:26
有一个定时校验的 task 也需要处理

## patch 2

这里要用修改IL指令?

HuskyHappy 发表于 2025-4-6 22:37


过一会这个玩意就出来了

489496 发表于 2025-4-6 21:59

感谢分享

Patches 发表于 2025-4-6 20:40

本帖最后由 Patches 于 2025-4-16 23:26 编辑

我用的6.2.0.42版本,貌似这个旧版本是最后能直接计算注册码的版本了.

补充一下,楼主的教程最好使用IL指令修改,编辑类有的编译时会提示错误.

// Listary.Core.Pro.LicenseChecker
// Token: 0x06000CA4 RID: 3236 RVA: 0x00030610 File Offset: 0x0002E810

public static bool CheckLicense(string email, string license)
{
      return true;
}

                // Token: 0x06000CB1 RID: 3249 RVA: 0x00030600 File Offset: 0x0002E800
                public async Task ScheduleAutoCheck()
                {
                        TaskAwaiter taskAwaiter = Task.Delay(TimeSpan.FromMinutes((double)15f)).GetAwaiter();
                        if (!taskAwaiter.IsCompleted)
                        {
                                await taskAwaiter;
                                TaskAwaiter taskAwaiter2;
                                taskAwaiter = taskAwaiter2;
                                taskAwaiter2 = default(TaskAwaiter);
                        }
                        taskAwaiter.GetResult();
                        if (this.\uE001())
                        {
                                TaskAwaiter<ProService.ActivationResult> taskAwaiter3 = this.\uE002(this.\uE001.Listary5LicenseEmail, this.\uE001.Listary5LicenseKey).GetAwaiter();
                                if (!taskAwaiter3.IsCompleted)
                                {
                                        await taskAwaiter3;
                                        TaskAwaiter<ProService.ActivationResult> taskAwaiter4;
                                        taskAwaiter3 = taskAwaiter4;
                                        taskAwaiter4 = default(TaskAwaiter<ProService.ActivationResult>);
                                }
                                ProService.ActivationResult result = taskAwaiter3.GetResult();
                                if (result == ProService.ActivationResult.Success)
                                {
                                }
                                if (result == ProService.ActivationResult.InvalidLicense || result == ProService.ActivationResult.NoActivationsLeft)
                                {
                                        if (this.\uE001.LastProCheckFailDate == DateTime.MinValue)
                                        {
                                        }
                                        if (DateTime.Now - this.\uE001.LastProCheckFailDate > TimeSpan.FromDays(7.0))
                                        {
                                                this.\uE001.Listary5LicenseName = null;
                                                this.\uE001.Listary5LicenseEmail = null;
                                                this.\uE001.Listary5LicenseKey = null;
                                                ProPageType proPageType = ((result == ProService.ActivationResult.InvalidLicense) ? ProPageType.InvalidLicense : ProPageType.DeviceLimitExceeded);
                                                this.\uE002.Show(proPageType, \uE190.\uE070(7732));
                                        }
                                }
                        }
                }

xzf 发表于 2025-4-6 20:48

这个不错,已经搞定了,

icode_isky 发表于 2025-4-6 21:36

感谢分享!学习了!

wyqzm 发表于 2025-4-6 22:06

应该没有这么简单,如此处理了,可能功能仍无法使用。

昆局水段 发表于 2025-4-6 22:10

已成功,非常感谢楼主!学习了!

qd1377 发表于 2025-4-6 22:14

感谢分享!!!

trypk 发表于 2025-4-6 22:17

这个软件暗桩太多了!想剥干净很难!

zngray 发表于 2025-4-6 22:18

感谢分享 学习了
页: [1] 2 3 4 5 6 7
查看完整版本: Listary激活~