標籤:編輯器 破解 彙編 windows markdown
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 這種純文字的標記語言,就不存在這種問題,當然還有很多其它好處,你可以閱讀下面幾篇文章:
- 3 Reasons Why Everyone Needs to Learn Markdown
- 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
二進位代碼位置