Sublime Text 4 破解筆記
偶然看到Sublime已經更新到版本4了,多了許多很nice的新特性,例如:
- 船新 UI
- 感知上下文的自動補全
- 支援 TypeScript, JSX 和 TSX
- GPU 渲染
- ...
不得不說sublime是輕量化IDE效能王者,比vscode要快不少,不過vscode如今勝在生態。
於是第一時間下載體驗,網上找了個補丁。不過用了一段時間後反彈了。又顯示UNREGISTER未註冊,而且儲存檔案彈註冊視窗,可能是補丁作者沒破解到位,對比了下破解的檔案,發現破解者只是簡單的單點爆破還有去除sublime伺服器校驗的域名而已。好久沒玩win平臺的crack,索性自己動手,拿來複習練手,下面正式開始!
首先x64dbg載入sublime_text.exe主程式,shift+F9跑起來
先找個最明顯的點入手,例如點選幫助->關於
關於資訊這裡會有註冊狀態,未註冊顯示Unregistered,那首先想到字串大法!直接sublime exe模組搜尋字串
雙擊進去來到
可以看到字串上方有個jmp跳過它,那很明顯jmp下面的move ecx,228就是關於介面未註冊賦值的入口,ctrl+r找下引用
找到一處雙擊進去來到
可以看到下方是Registered to ... 註冊給某某某,那很明顯
cmp byte ptr ds:[rsi],0 je sublime_text_origin.13F7159BE
cmp為關鍵比較je為關鍵跳轉,cmp處下斷點執行,再次點選關於,斷下來到斷點處,FPU中RSI暫存器值指向了地址13FFD5ED8
我們RSI右鍵->在記憶體中轉到,檢視記憶體
很明顯這地方為0的時候標識未註冊,把值改為1,執行之驗證下結果。
果不其然Registered to Unlimited User License...
經測試,此處的修改是全域性的,應該就是某個管理類中的某個布林值來控制。改完之後ctrl+s也不再彈出提示購買彈出,視窗標題也沒有提示UNREGISTERED了。
# Sublime Text 4 破解筆記
不得不說越優秀正規大型的軟體往往採用比較優秀的架構設計模式,嚴格的面向物件風格編寫。我記得以前一位長期做QQ魔改hack的大神曾讚歎過,QQ是他見過的架構最好,結構最清晰巴拉巴拉...的軟體。翻譯成人話就是:“非常好猜測編寫的思路,非常好破解!”,哈哈哈哈哈。
好,迴歸正題,先不著急修改。如果這裡只對跳轉做爆破的話,那只是開啟關於介面顯示已註冊而已,其他功能限制或者有暗樁啥的都沒有破解繞過。網上很多對sublime的破解往往是每個限制的點爆破一下,改改跳轉,再加個域名遮蔽防止伺服器校驗。這樣可能沒破解完整導致某個條件下又反彈觸發校驗機制,或者導致功能缺陷。
那我們的思路是,既然找到全域性控制的點,那我們只需要找到一個合適的時機,對這個點強制寫入值1,實現破解!
那怎麼找到這個時機點呢?很簡單,我們對地址13FFD5ED8(重新執行後為xxxxD5ED8)下個硬體執行斷點。經過測試,有一個比較好的時機點是:每次聚焦或者切換標籤的時候都會觸發更改視窗標題,我們知道,未註冊的時候每次視窗標題變更後面都帶有(UNREGISTERED)未註冊的字樣。所以每次聚焦或切換標題的時候都會觸發校驗。所以這裡是個蠻不錯的點。果真我切換標籤的時候,硬體斷點也命中,來到這裡
cmp byte ptr ds:[rax],0
sete cl
這裡rax指向的就是全域性控制是否註冊欄位的記憶體地址。這裡和0比較了一下之後設定了ZF標誌位。那就很簡單了,直接操作這兩句強制賦值rax指向地址的值為1即可。
運氣很好,大小一致,接著第二句改下標誌位,這裡我們找一個空的沒用的暫存器比如RCX來做等價替換
改完是
改完之,執行之,沒問題完美破解,幫助->刪除註冊資訊 都沒用哈哈。ctrl+p補丁之。最後用AT4RE擼個補丁。
補丁就不放了,因為殺軟會警告。也蠻簡單的,可以自己動手破一個。