吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 56977|回复: 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#] 纯文本查看 复制代码
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#] 纯文本查看 复制代码
   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#] 纯文本查看 复制代码
   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#] 纯文本查看 复制代码
   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#] 纯文本查看 复制代码
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] 纯文本查看 复制代码
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!
2220209876 + 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 膜拜
朱朱你堕落了 + 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, 2020-12-3 08:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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