首页 > 其他 > 详细

MarkdownPad 破解学习

时间:2014-03-09 06:06:40      阅读:631      评论:0      收藏:0      [点我收藏+]

最近学习 Markdown,从网上下载了 Windows 下的编辑器:MarkdownPad。这款软件分为免费版和专业版(收费), 对于普通用户来说免费版已经足够,专业版比免费版多了如下几个功能:

  1. 一切都是无限的
    • 无限量的打开文档
    • 无限量的自定义 CSS 样式表
    • 在专业版中,所有使用限制均被移除
  2. 新的 Markdown 处理器
    • GitHub Flavored Markdown
    • Markdown Extra
  3. 获得新的特性
    • 导出 PDF
    • 内置图片上传器
    • 自动保存
    • Session 管理
    • 可配置的自动更新
    • 提早体验新功能
    • 允许商业使用
    • 更多 ...

其实,对于专业版提供的众多功能我最看重的只有导出 PDF这一项。出于程序员的职业病,我打开了 MarkdownPad 的安装目录, 然后几乎是瞬间就看出来了这是用 C# 写的,因为我看到了 MarkdownPad2.exe.config 这个文件,这是典型的 C# 应用程序的配置文件。

于是,我又抱着试一试的心态用 Reflector 打开了 MarkdownPad2.exe 。不看不知道,一看吓一跳,居然又木有加密,又木有混淆, 这真的让生在天朝的我大开眼界。作为一款收费的商业软件(14.95 USD),居然任何防护措施都木有,这不是存心找死的节奏啊!

后面的事情就很简单了,用 Reflector + Reflexil 修改授权相关代码就可以了,在这里我就不赘述了, 直接给出我修改的地方(有很多地方都可以修改,自己看着办):

  • 命名空间:MarkdownPad2.Licensing.LicenseEngine
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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
    public bool VerifyLicense(string licenseKey, string email)
    {
        if (string.IsNullOrEmpty(licenseKey) || string.IsNullOrEmpty(email))
        {
            return false;
        }
        try
        {
            this.License = this.Decrypt(licenseKey);
            this.LicenseProcessed = true;
        }
        catch (FormatException exception)
        {
            _logger.ErrorException("Bad license format", exception);
            MessageBoxHelper.ShowWarningMessageBox(LocalizationProvider.GetLocalizedString("License_BadFormat", false, "MarkdownPadStrings") + StringUtilities.GetNewLines(2) + LocalizationProvider.GetLocalizedString("License_PleaseVerify", false, "MarkdownPadStrings"), LocalizationProvider.GetLocalizedString("License_ErrorTitle", false, "MarkdownPadStrings"));
            return false;
        }
        catch (OpenSslException exception2)
        {
            _logger.ErrorException("Error decrypting license", exception2);
            MessageBoxHelper.ShowWarningMessageBox(LocalizationProvider.GetLocalizedString("License_ErrorMessage", false, "MarkdownPadStrings") + StringUtilities.GetNewLines(2) + LocalizationProvider.GetLocalizedString("License_PleaseVerify", false, "MarkdownPadStrings"), LocalizationProvider.GetLocalizedString("License_ErrorTitle", false, "MarkdownPadStrings"));
            return false;
        }
        catch (Exception exception3)
        {
            _logger.ErrorException("Error processing license: " + licenseKey, exception3);
            MessageBoxHelper.ShowErrorMessageBox(LocalizationProvider.GetLocalizedString("License_ErrorMessage", false, "MarkdownPadStrings") + StringUtilities.GetNewLines(2) + LocalizationProvider.GetLocalizedString("License_PleaseVerify", false, "MarkdownPadStrings"), LocalizationProvider.GetLocalizedString("License_ErrorTitle", false, "MarkdownPadStrings"), exception3, "");
            return false;
        }
        if (((this.License == null) || (this.License.Email == null)) || (this.License.Product == null))
        {
            return false;
        }
        bool flag = this.License.Email == email;
        bool flag2 = this.License.Product == "MarkdownPad2";
        return (flag && flag2);
    }

这个函数就是用来判断授权是否合法的,只需要让它永远返回 true 就可以了。用 Reflexil 插件将这个函数的 IL 代码修改如下:

1
2
ldc.i4.1 // ldc.i4.0 返回 false
ret

上面的 IL 代码就相当于如下一行代码:

1
return true;

然后,保存修改过的 MarkdownPad2.exe,并替换原来的文件,重启即可。

郑重提示:

以上所述,主要出于研究学习之目的,如果经济条件允许请自己购买正版软件。

MarkdownPad 破解学习,布布扣,bubuko.com

MarkdownPad 破解学习

原文:http://www.cnblogs.com/platobeing/p/3588426.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!