Sublime Text 破解


引言

放假三天,呆家里把win7換成了win8.1,接着玩起了hyperv,試着裝了個windows xp虛擬機,體驗很不錯Smile。不過對linux系統的支持不怎么樣,裝了個ubuntu,體驗相當差!閑着無聊,在虛擬機里用od調試Sublime Text,探索了一下它的注冊流程,於是有了這篇博文,與大家一起分享一些逆向思路,共同學習。

初探——運行環境和初步分析

windows xp(32位)系統  + ollydbg + sublime text(32位)。三個工具請自行去官網下載Open-mouthed smile。首先嘗試在Sublime Text(下面以ST替代)注冊界面隨意輸入字符,結果如下:

image

image

將ST拖入OD調試運行,以“That license key”作為線索,搜索字符串:

image

點擊后,在出現的窗口里繼續右鍵,選擇查找文本:

image

雙擊該行,跳轉到指令處並按f2下斷點:

image

我們可以再嘗試注冊一下ST,觀察其是否在這斷下。嘗試過程我在這略去,可以證實,其驗證過程確實會經過這。我們用鼠標往上一行一行代碼點擊一下,可以看到代碼的流程:

image

image

可以看到,通過004c43E0處 TEST EAX,EAX,來判斷, 當EAX不為0時,跳轉至下面的代碼處。我們來驗證一下流程是否真的是這樣。將其跳轉指令改一下,由JNZ改為JZ,然后再去注冊,看看彈出什么:

image

image

哈哈,注冊成功。太簡單了吧,只是改了一下跳轉,隨意輸入字符就可以通過注冊了。但是,不知道大家注意到沒,ST主窗口上依然顯示的UNREGISTERED……看起來、、、似乎、、、好像、、、改個跳轉的作用僅僅是欺騙下我們自己。。。。。

進一步分析——關鍵是EAX寄存器的值

從上面的分析可以看到,它是根據EAX的值來決定跳轉的,我們可以嘗試從此處向上跟一下EAX的值在哪處改變了。一般來說,call都是用eax來返回值的,那么eax的值是否是上面004C43CF那個call的返回值呢?我們雙擊該行:

image

image

如上圖,我們猜測EAX是在這里被賦值的。那么將此處代碼改一下,讓EAX為0,再注冊試試:

image

image

點擊注冊,可以看到,彈窗直接消失了,然后主窗口處的“UNEEGISTERED”字樣也不見了。這次,看起來我們真的破解了ST。我們右鍵保存該修改,並覆蓋當前的Sublime Text.exe(如果怕恢復不了,可以先弄一份副本),如下所示:

image

image

直接全部覆蓋掉即可。然后我們再雙擊打開ST,蛋疼的一幕出現了:

image

不過,我們可以點擊注冊試試。可以看到,只要隨意輸入字符注冊,那個”UNREGISTERED”字符便會去掉,我們再看看”About Sublime Text“:

image

可以看到,只要我們每次打開ST,然后注冊,ST便認為我們已注冊。

但是,這樣我們能滿足嗎?作為一個追求完美的程序員,每次打開軟件,還要再點擊注冊!!!這你能忍嗎?如果不能忍,請以留言或者點擊右下角贊的形式告知我Open-mouthed smile

注:以上所有內容,僅是為了交流,請大家支持正版。

如果有對后續感興趣的同學,請點擊這里,我在這里分享了后面的分析內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM