吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 66138|回复: 157
收起左侧

[.NET逆向] XX Time(2019.4.9更新4.2.8)专业版 附破解教程 By tchivs

    [复制链接]
tchivs 发表于 2017-6-8 00:12
本帖最后由 zjh16529 于 2019-6-6 18:41 编辑
它是一款可以在后台无时无刻记录你操作电脑的动作,通过精致的视图向你展示当天使用最久的程序,投入最深的工作,找到那些浪费时间的“罪魁祸首”。通过简单的点击、添加标签等,就能很迅速地为任意时段生成时间统计表,让你更好地去分析过去的时间、规划未来的时间。
它更是一种态度,所有对低效率办公/学习的不妥协都来自于同一个问题“今天,我真的在想投入的事情上投入足够多的时间了吗?”官网下载地址为:http://www.manictime.com/Download/

今天是2019年的4月9日,刚好抽空更新下,看着自己当时 2017 年发的帖子感触良多。
这几年成长了很多,从一个通信专业的实习生边工作边学习,花了大约一年转行成为程序员,工资也翻了几倍。
只要你努力了就会有收获!



4.7最新版本安装包与补丁
安装软件后把破解补丁覆盖到安装路径即可
链接: https://pan.baidu.com/s/1vN5jvrte-PJkWT5kyqsuUQ 提取码: d7h4

---------------------------------------以下内容为当时破解的思路,新版本有些变动但总的步骤还是差不多的---------------------------------------------
破解补丁放在帖子最下面,你的评分就是我更新的动力哦!
自学C#第三个月了,收获很多,本教程也是我花了一天的时间破解总结出来的,希望大牛带带我。

---------------------------------------我是分割线---------------------------------------------
该软件在官网售价为67刀,可以试用专业版15天,免费版本与专业版的区别如下:

版本区别.bmp

首先查壳,为.net程序:

2.bmp

尝试用De4dot去混淆报错,由于软件为WPF程序所以不支持。
运行一下软件看看:提示选择许可类型

3.bmp

随意输入假码提示:无效的用户名或许可证
4.bmp

我们把程序使用NET Reflector9.0+Reflexil2.1(搜索字符串) :无效的用户名或许可证
5.bmp
6.bmp

什么都没有找到

猜测由于该软件是多语言版本所以默认输出的应该是英文,果然,在程序的Translations目录中找到了zh-chs.txt 翻译文件,打开它

7.bmp
InvalidLicenseDescription = 无效的用户名或许可证

InvalidLicenseDescription
搜索什么都没找到


换一个
InvalidLicenseTitle

8.bmp
[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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Finkit.ManicTime.Client.Main.Views.LicenseViewModel.OnOkCommand() : Void
 
        private void OnOkCommand()
        {
            try
            {
                Finkit.ManicTime.Common.Licensing.License license = Finkit.ManicTime.Common.Licensing.License.Current;[color=#008000]//取得当前License,这个Current属性很重要,后面会讲到[/color]
                if (license != null && license.LicenseType == this.LicenseType && this._licenseService.IsLicenseValidForThisVersion(license) && (this.LicenseType != LicenseType.Professional || !this.IsLicenseEditable))
                {
                    this.CloseWindow(true);
                }
                else if (license == null || license.LicenseType != LicenseType.Professional || ViewHelper.ShowMessage(base.WindowHost, Translation.Current["RemoveLicense"], Translation.Current["RemoveLicenseConfirmation"], new MessageButton[]
                {
                    MessageButtons.Yes,
                    MessageButtons.No
                }, MessageButtons.Yes, MessageButtons.No) != MessageButtons.No)
                {
                    if (this.LicenseType == LicenseType.Standard)
                    {
                        using (FreeLicenseWarningViewModel freeLicenseWarningViewModel = this._freeLicenseWarningViewModelFunc())
                        {
                            ViewHelper.ShowViewModelWindow(base.WindowHost, freeLicenseWarningViewModel);
                            LicenseType? selectedLicenseType = freeLicenseWarningViewModel.SelectedLicenseType;
                            if (selectedLicenseType != LicenseType.Standard)
                            {
                                if (selectedLicenseType == LicenseType.Trial)
                                {
                                    this.CloseWindow(true);
                                }
                                else if (selectedLicenseType == LicenseType.Professional)
                                {
                                    this.LicenseType = LicenseType.Professional;
                                }
                                return;
                            }
                        }
                    }
                    if (license != null && license.LicenseType == LicenseType.Professional && this.LicenseType == LicenseType.Trial && this._trialProvider.TrialDaysLeft <= 0 && this._trialProvider.CanActivateLicenseExtendedTrial(license))[color=#008000]//如果选择的是专业版,或者说专业版试用期到了,就需要验证许可证[/color]
                    {
                        this._trialProvider.ActivateLicenseExtendedTrial(license);
                    }
                    string licenseName = (this.LicenseType == LicenseType.Professional) ? this.LicenseName : null;[color=#008000]//取输入的用户名   [/color]                
                    string licenseKey = (this.LicenseType == LicenseType.Professional) ? this.LicenseKey : null;[color=#008000]//取输入的注册码[/color]
                    string text = this._licenseService.SaveLicense(this.LicenseType, licenseName, licenseKey);[color=#008000]//检测用户名或者密码是否正确,如果返回的字符串就是错误提示,要想办法让它返回空[/color]
                    if (text == null)
                    {
                        if (this.LicenseType == LicenseType.Professional)[color=#008000]//如果说当前许可证类型是专业版[/color]
                        {
                            ViewHelper.ShowMessage(base.WindowHost, Translation.Current["ThankYou"], Translation.Current["ThankYouLicense"], MessageButtons.Ok);[color=#008000]//提示注册成功[/color]
                        }
                        this.CloseWindow(true);
                    }
                    else
                    {
                        ViewHelper.ShowMessage(base.WindowHost, Translation.Current["InvalidLicenseTitle"], text, MessageButtons.Ok);[color=#008000]//提示无效的用户名或许可证[/color]
                    }
                }
            }
            catch (Exception ex)
            {
                ApplicationLog.WriteError(ex);
                ViewHelper.ShowMessage(base.WindowHost, Translation.Current["Error"], Translation.Current["ErrorCheckingLicense"], MessageButtons.Ok);
            }
        }


用Dnspy搜索方法
断点

9.bmp


运行

10.bmp


输入完用户名和注册码后果然断下来了


单步走到这里出来了


我们输入的假码和返回值text,返回值text如果不为空的话就会提示你无效的用户名或者许可证

11.bmp
下面有个判断当前LicenseType 的值为
LicenseType.Professional      
看看LicenseType的枚举类型
许可证.bmp
到这里有的人说了,直接赋值

text=null;this.LicenseType =LicenseType.Professional

不就行了
12.bmp
虽然提示成功,但还是试用版
玄机还是在这个SaveLicense接口里面
string text = this._licenseService.SaveLicense(this.LicenseType, licenseName, licenseKey);

我们看看它是怎么实现的
13.bmp
代码里面的字符串被混淆了
[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
41
42
43
44
45
46
47
48
49
public string SaveLicense(LicenseType licenseType, string licenseName, string licenseKey)
     {
         License license = this.cec92291b0d9687dc39ce93b6c4fc9a37();
         if (license != null)
         {
             for (;;)
             {
                 switch (5)
                 {
                 case 0:
                     continue;
                 }
                 break;
             }
             if (!true)
             {
                 RuntimeMethodHandle runtimeMethodHandle = methodof(c1c06b40f74d7694966226811239bfe37.SaveLicense(LicenseType, string, string)).MethodHandle;
             }
             if (cc173ca2a048daef9f136c7c3391c2222.c69ea47c25a948bdd1a6911915f05575f(license) == licenseType)
             {
                 goto IL_39;
             }
         }
         License license2 = cf7ecf53e6173a32e48f004d05dd4bb56.c6d1a0d71d406ed233f6d25fd92102834();
         c9cd6da64f4de7a63a0ef4d675a1cd88b.c69ea47c25a948bdd1a6911915f05575f(license2, licenseType);
         license = license2;
         IL_39:
         this.cf31aef1033f161ad1fc6bd81e5146647(license, licenseName, licenseKey);
         if (!this.c89b1a2b2921143955eac602c4cdaeae5(license))[color=#008000]//这里要返回true,否则就会返回无效的用户名或许可证[/color]
         {
             for (;;)
             {
                 switch (4)
                 {
                 case 0:
                     continue;
                 }
                 break;
             }
             return ccee3ade34a388c6e057acdf5e30f38b3.c69ea47c25a948bdd1a6911915f05575f(c7d41954fdbe4dbe919b2c7bb2cea7918.c6d1a0d71d406ed233f6d25fd92102834(), c2f8b0d4a4c998183db5285d993e37005.c204b18601a940f2d76b296da36b1f13e(1088));
         }
         if (!this.IsLicenseValidForThisVersion(license))
         {
             return c3b4c218e43c3aff4cbe905ce7947cb06.c6d1a0d71d406ed233f6d25fd92102834(ccee3ade34a388c6e057acdf5e30f38b3.c69ea47c25a948bdd1a6911915f05575f(c7d41954fdbe4dbe919b2c7bb2cea7918.c6d1a0d71d406ed233f6d25fd92102834(), c2f8b0d4a4c998183db5285d993e37005.c204b18601a940f2d76b296da36b1f13e(1139)), c9d61c762f2cb53548173b8d9e1cb2377.c69ea47c25a948bdd1a6911915f05575f(cbd292b01d9b89963779986f391071136.c69ea47c25a948bdd1a6911915f05575f(c79cbdec55b5580946d6a47844cd6c485.c6d1a0d71d406ed233f6d25fd92102834())));
         }
         this.c00187ae94158f0dcac47136ed0bb7b75(license);
         this.c1a74dc295b750bbd3a3e195e7e005091();
         return null;
     }

那我们再看看
c89b1a2b2921143955eac602c4cdaeae5

这个方法里面有什么
[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
private bool c89b1a2b2921143955eac602c4cdaeae5(License cfde8f00814a77b54fe5305fb3beb0533)
     {
         if (cfde8f00814a77b54fe5305fb3beb0533 != null)[color=#008000]//如果许可证为空就直接返回false,我们要的是true[/color]
         {
             for (;;)
             {
                 switch (4)
                 {
                 case 0:
                     continue;
                 }
                 break;
             }
             if (!true)
             {
                 RuntimeMethodHandle runtimeMethodHandle = methodof(c1c06b40f74d7694966226811239bfe37.c89b1a2b2921143955eac602c4cdaeae5(License)).MethodHandle;
             }
             return this.cc701712da48e6562ea357dea587edf85(cc173ca2a048daef9f136c7c3391c2222.c69ea47c25a948bdd1a6911915f05575f(cfde8f00814a77b54fe5305fb3beb0533)).IsLicenseValid(c4bfe7f62c1778d89acdea70ef09d2cc1.c69ea47c25a948bdd1a6911915f05575f(cfde8f00814a77b54fe5305fb3beb0533), ca48594fcb3c741f82781c845fc293709.c69ea47c25a948bdd1a6911915f05575f(cfde8f00814a77b54fe5305fb3beb0533));[color=#008000]//这里一大串看的头晕,一眼就发现IsLicenseValid这个方法就是验证许可证有效性[/color]
         }
         return false;

分析一下
IsLicenseValid      字面意思就是有效的许可证,明显就是它了

g.png

[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
public bool IsLicenseValid(string licenseName, string licenseKey)
     {
         cb8c3325457a40f3a37933e5339217acd cb8c3325457a40f3a37933e5339217acd = this.cd60e3cd81ece5d42cccaea06ed308929(licenseKey);
         if (cb8c3325457a40f3a37933e5339217acd == null)
         {
             for (;;)
             {
                 switch (6)
                 {
                 case 0:
                     continue;
                 }
                 break;
             }
             if (!true)
             {
                 RuntimeMethodHandle runtimeMethodHandle = methodof(c700f5930483739796d52463cf2cd5102.IsLicenseValid(string, string)).MethodHandle;
             }
             return false;
         }
         return new c700f5930483739796d52463cf2cd5102.ca407f038f4aa19c2c44d6b1b464d4505(cb8c3325457a40f3a37933e5339217acd.c8e627622045dc7d5fb1cdc8f0db36786).LicenseNameCheckSum == c8d429a059260d58dd4a1aaf2bf2945f0.cda89ef5850cb9f985a9cc2983867bd4c(licenseName).PadLeft(3, '0');

只要让
IsLicenseValid

这个方法返回真就可以了
14.bmp
貌似成功了但是重启软件还是试用版,怀疑有重启验证。
Finkit.ManicTime.Common.Licensing.License

我们简单的分析一下这个类
15.bmp
折腾找了一会儿分析了一下
Finkit.ManicTime.Common.Licensing

发现里面有一个可疑的静态属性:
Current

[C#] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
public static License Current
{
    get
    {
        return License._current;
    }
    set
    {
        if (object.Equals(License._current, value))
        {
            return;
        }
        License._current = value;
        License.CurrentChanged(null, EventArgs.Empty);
}

把它改成
[Asm] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
public static License Current
        {
            get
            {
                return default(License);
            }
            set
            {
                if (object.Equals(License._current, value))
                {
                    return;
                }
                License._current = value;
                License.CurrentChanged(null, EventArgs.Empty);
                License._current.Name = "52pojie.cn";
                License._current.LicenseType = LicenseType.Professional;
                License._current.Activated = true;
                License._current.TrialDaysLeft = 999;
                License._current.FreeUpgradeExpirationDate = new DateTime?(new DateTime(2099, 9, 25, 14, 23, 6));
}

suceful.bmp
大功告成!
困死我了,终于可以睡觉去了!!
破解补丁的免CB地址:链接:http://pan.baidu.com/s/1slUAyQx 密码:057r
提示:
软件安装完毕先不要运行,打开文件目录覆盖补丁,之后打开软件选择专业版,输入用户名和许可证(不含引号)

用户名:52pojie.cn
许可证:www.52pojie.cn

Crack By tchivs


觉得教程对你有帮助的话多多评分哟!

点评

厉害啦,跑到外面下载软件,打开key.txt竟然是52的帖子  发表于 2017-7-24 13:03

免费评分

参与人数 62威望 +2 吾爱币 +69 热心值 +61 收起 理由
duizicong + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
饭碗的彼岸 + 1 用心讨论,共获提升!
PJGeek + 1 + 1 厉害了 我也能到这个地步就好了
dibh10 + 1 + 1 用心讨论,共获提升!
wansida + 1 + 1 谢谢@Thanks!
zx255246b + 1 + 1 我很赞同!
weigang87894 + 1 + 1 谢谢@Thanks!
admax + 1 + 1 谢谢@Thanks!
风忘记了 + 1 + 1 已答复!
盗版007 + 1 + 1 我很赞同!
困祭我 + 1 + 1 我很赞同!
zhangpeter + 1 + 1 谢谢@Thanks!
sunnylds7 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
fengyu397 + 1 + 1 4.0.4复制后软件打不开
君润 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
昇陈 + 1 + 1 热心回复!
CPXOPZ + 1 + 1 用心讨论,共获提升!
junlin2016 + 1 + 1 谢谢@Thanks!
小鹰展翅 + 1 + 1 我很赞同!
minco + 1 + 1 亲测可用,感谢楼主
zhuangdavid + 1 + 1 用心讨论,共获提升!
gqdsc + 1 + 1 谢谢@Thanks!
二白 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
starh + 1 + 1 热心回复!
ly04031855 + 1 + 1 我很赞同!
mvnich + 1 + 1 谢谢@Thanks!
LiLill + 1 + 1 鼓励转贴优秀软件安全工具和文档!
GaaraZL + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
最寒 + 1 + 1 我很赞同!
dulaine + 1 谢谢@Thanks!
wuwensen123 + 1 + 1 谢谢@Thanks!
Shanks_吾爱 + 1 + 1 谢谢@Thanks!
秋风落 + 1 我很赞同!
xsj-126 + 1 + 1 谢谢@Thanks!
Hmily + 2 + 10 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
mywd + 1 + 1 膜拜
bypasshwid + 1 + 1 我很赞同!
yanglinman + 1 + 1 鼓励转贴优秀软件安全工具和文档!
ebookread + 1 + 1 谢谢@Thanks!
o651560441 + 1 + 1 谢谢@Thanks!
yabghu + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
略略略666 + 1 + 1 好人呐!好人呐!!大家来鼓励一下
610100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
commitl + 1 + 1 谢谢@Thanks!
jojo0416 + 1 + 1 谢谢@Thanks!
um.haha + 1 + 1 翻天了,棒啊!!!谢谢了
suckyou + 1 + 1 真是狠!犹如庖丁解牛!
我说耐你 + 1 + 1 我很赞同!
6767 + 1 + 1 谢谢@Thanks!
zach14c + 1 谢谢@Thanks!
怖客123 + 1 + 1 我很赞同!
孤独之悔 + 1 + 1 热心回复!
sss15 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
612731 + 1 + 1 谢谢@Thanks!
mi0070 + 1 + 1 谢谢@Thanks!
dliwj + 1 + 1 谢谢@Thanks!
Glimmer + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
雫Hao洋洋 + 1 + 1 热心回复!
huangn2008 + 1 + 1 热心回复!
兔子我是胡萝卜 + 2 + 1 用心讨论,共获提升!
林唯楚 + 1 + 1 热心回复!
jack88 + 1 + 1 好文章,谢谢分享!

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| tchivs 发表于 2019-4-9 10:37
PJGeek 发表于 2019-3-7 14:12
应该是针对特定版本的吧 新版本 运行未响应

这个帖子主要的目的是教程,因为有了思路的话就算它更新了也可以继续破解,授人以鱼不如授人以渔嘛。不过为了方便小白,今天已经更新啦!!!
至善至一 发表于 2019-4-17 22:48
本帖最后由 至善至一 于 2019-4-17 22:50 编辑

Win7x86安装不能运行!安装ManicTime之后,退出软件,结束进程,替换补丁,重启软件,报错.
问题签名:
  问题事件名称:        APPCRASH
  应用程序名:        ManicTime.exe
  应用程序版本:        4.2.8.0
  应用程序时间戳:        5c924cbd
  故障模块名称:        KERNELBASE.dll
  故障模块版本:        6.1.7601.17514
  故障模块时间戳:        4ce7b8f0
  异常代码:        e0434352
  异常偏移:        0000b760
  OS 版本:        6.1.7601.2.1.0.256.4
  区域设置 ID:        2052
  其他信息 1:        0a9e
  其他信息 2:        0a9e372d3b4ad19135b953a78882e789
  其他信息 3:        0a9e
  其他信息 4:        0a9e372d3b4ad19135b953a78882e789
jack88 发表于 2017-6-8 00:28
兔子我是胡萝卜 发表于 2017-6-8 00:54
好文章~~~学习了
6767 发表于 2017-6-8 01:13 来自手机
看起来还不错呢
hlh2518 发表于 2017-6-8 06:03 来自手机
值得学习的好例子
xiaobao26 发表于 2017-6-8 06:16
对于教程,全力支持
雫Hao洋洋 发表于 2017-6-8 07:11
谢谢分享,好文章
梦入神机 发表于 2017-6-8 07:48
大牛使用的破解软件都没见过
boyving 发表于 2017-6-8 08:22
谢谢分享使用。
xi850202 发表于 2017-6-8 08:30 来自手机
这个软件什么用处
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-4-15 15:09

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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