破解 Windows 下Markdown 編輯器 MarkdownPad 2
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 等等。當然如果你不想下載這些編輯器,也可以用線上版的,如
破解 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
二進位制程式碼位置