MarkdownPad 是 Windows 平台下一款優秀的 Markdown 編輯器,本文簡單介紹 Markdown 以及使用一種方法破解 MarkdownPad 使其升級到專業版。該方法僅限於教育用途,我不為濫用該方法導致的商業糾紛負責!
Markdown 簡介
Markdown 是一種輕量級標記語言,有着及其簡單、易學易用的語法,任何人在幾分鍾之內都可以掌握其基本語法並用來寫作,你可以在 這里 學習markdown的基本語法。其創始人 John Gruber 下面的話高度概括了 Markdown 是什么、優點以及適合哪些人使用:
Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).
相比 Word 等富文本編輯器,你會花很大精力去排版上,還有它所寫的內容移植性、兼容性也很差,Markdown 這種純文本的標記語言,就不存在這種問題,當然還有很多其它好處,你可以閱讀下面幾篇文章:
而且當下最大的社交編程平台 Github 以及問答網站 Stackoverflow 在其有編輯框的地方,都支持的是 Markdown,這也極大地推動了 Markdown 的普及。
隨着 Markdown 在開發者中間逐漸流行,出現了很多 Markdown 編輯器,如 Mac 下的 Mou, Linux 下的 ReTex,Windows 下的 MarkdownPad 等等。當然如果你不想下載這些編輯器,也可以用在線版的,如 Dillinger 等。你可以猛戳 這篇文章 ,介紹了 78 款 Markdown 編輯預覽的工具。
破解 MarkdowPad 2
我目前已經習慣了寫博客、做筆記等都使用 Markdown,在 Linux 使用的是 Sublime Text,在 Windows 下使用的是MarkdownPad。MarkdowPad 是 Windows 下一款優秀的 Markdown 編輯器,有免費版和專業版,專業版提供了很多高級功能,如自動保存、PDF導出、GFM 語法、自定義CSS、語法高亮等等。當免費版進行一些高級設置時,如設置Markdown處理引擎為 GFM,會提示讓你升級到專業版,圖1所示。可以說專業版這些功能是非常吸引我的,但專業版需要付 $14.95!本能地去在網上找破解版的,如果百度甚至Google出的所有破解 MarkdownPad 的都讓你替換一個名為user.config 文件,其實都是用一個已注冊郵箱和密鑰進行驗證的。但是遺憾的是,目前這個帳號已經不能使用了,這里介紹的一種方法,可以真正意義上破解該軟件。
圖1 MarkdownPad 高級設置需要升級到專業版
准備
你首先需要安裝以下軟件:
- MarkdownPad 2, 你可以去 官網 下載最新版的,然后安裝好。
- .NET 反編譯器, 這里選用ILSpy, 需要.NET Framework 4.0支持, 將可執行文件反編譯成 C# 源代碼。
- 反匯編工具, 無疑選用 IDA, 能將可執行文件文件反匯編成匯編文件。
- 十六進制編輯器, 有很多種,這里選用 HxD, 可以以十六進制查看二進制文件,並且編輯。
破解步驟
1.使用 ILSpy 反編譯 MarkdownPad 出源文件,找到其驗證授權的函數。
使用 ILSpy 打開 MarkdownPad2 安裝目錄下的 MarkdownPad2.exe 文件,在 MarkdowPad2.Licensing 命名空間下找到 LicenseEngine 類的 VerifyLicense 方法,如圖2所示。
圖2 使用ILSpy 反編譯找到驗證函數
這個函數是用來驗證你所填寫的郵箱 email 和 許可證 licenseKey 是否合法,函數首先判斷 email 和 licenseKey 是否為空,若有一個為空則直接返回 false,即驗證不通過; 若均不為空,那么下面進行其它邏輯的驗證。我們並不關心它是如何驗證用戶所填的 email 和 licenseKey 是否能匹配上,我們只需要將第一步判斷若 email 或 licenseKey 為空返回 false 改為 返回 true,那么,就直接通過驗證了。下面就是要使用 IDA 工具找到該代碼片段的二進制代碼的位置。
2.使用 IDA 反匯編 Markdown,找到驗證授權函數的匯編代碼。
使用 IDA 打開 MarkdownPad2 安裝目錄下的 MarkdownPad2.exe 文件,左側點擊 Function name,按 ALT+T 鍵搜索VerifyLicense 函數名,能看到匯編代碼邏輯圖,如圖3。
圖3 通過IDA 反匯編找到驗證函數的匯編代碼
上圖中黃色標記的匯編代碼 ldc.i4.0 的意思是將 0 作為32位整型數壓到棧上,根據上面的分析,我們應該要把這條指令改成 ldc.i4.1,讓其返回 true,那么我們還需要找到這條匯編代碼對應的二進制代碼。在 IDA 中就可以以十六進制視圖查看,如圖4。
圖4 在 IDA 中以十六進制視圖查看驗證函數代碼
3.使用 HxD 修改驗證授權函數的二進制代碼,使其通過驗證。
可以看到 ldc.i4.0 對應的二進制代碼為 0x16,我們只需將其改成 0x17,這需要借助 HxD 軟件來對可執行文件進行編輯。使用 HxD 打開 MarkdownPad2 安裝目錄下的 MarkdownPad2.exe 文件,根據圖5搜索2C 02 16 2A 02 02 03,找到 16 的位置,然后將其改成 17 即可。
圖5 通過搜索找到idc.i4.0二進制代碼位置
