[摘要]
Sublime_text作为新一代编辑器,在很多方面都非常出色,而且作者开发非常勤奋,不久的将来必是人间神器。我最喜欢的是sublime_text的可配置性极高,用Python编写插件非常方便。要是哪天我的工资翻倍了,我一定买个License支持一下作者(毕竟大家都是搞软件的)。
Sublime_text_2.0.1可供大家免费试用,即使没有注册也可以无限制试用;但是
sublime_text_3_Beta版却只对已注册用户可用。这一点实在可惜,所以才下定决心琢磨sublime_text的License。
在很早的时候hiwanz放出来一个破解Sublime_text的比较通用的方法:改两处二进制文件,再加上一个hiwanz提供的序列号。(wanz到底是怎么把序列号算出来的??)大家有兴趣的话可以到wanz的博客上看看他的破解方法:
Sublime Text2破解
但是我感觉wanz的方法不够好。
下面的分析过程以最常见的正式版sublime_text_2.0.1_build2217为例,分析sublime_text的License验证过程,以期找到一个通用的破解方法。
[准备工具]
1. OllyDBG(几乎是必须的),可用WinDBG替代,但某些方面还是OllyDBG好用
2. PEiD(可选)
[分析过程]
1. 先用PEiD看看可执行程序的概况吧。(可以跳过)
可以看到Sublime_text是用VS2008编译的。
而且sublime_text目录下就放着一个msvcr90.dll,所以肯定是用VS2008编译的。
进一步阅读反汇编代码可以发现:
1. sublime_text内部使用了Boost::Python库进行开发。
所以才可以方便的用Python开发插件
2. sublime_text内部贯彻使用了unicode。
所以sublime_text对中文支持差就有道理了,但已有插件实现中文显示:ConvertToUTF8
上面的分析其实用处不大。
2. 用OllyDbg加载运行sublime_text.exe
首先用OllyDbg加载并运行(F9) sublime_text.exe,在ST的Help目录下找到Enter License,随便输入几个字母,点确定。然后弹出注册失败对话框:
看到关键字了吗:
“That license key doesn’t apper to be valid”
然后在OllyDBG里用超级字符串查找ASCII,Ctrl+F搜索That license key,(兴奋吧!)
在有红色方框的行上用键盘Enter,来到代码区:004CCE61
看看是从哪里跳到这一行的?004CCD50
往上翻到004CCD50行,
程序是在检查AL,并且咱们知道AL应该是上面一行Call sublime_.004CC450的返回值(你可以到这个函数里看看,文章都在这个函数中!)
现在,在004CCD49位置下断点,再次输入注册码后程序中断到这一行。
然后修改AL的值为1,按F9 ………
怎么样?很简单吧。
[总结]
1. 通过上面修改AL为1就可以实现暴力破解
所以可以编个内存补丁了。
2. AL是函数004CC450的返回值,如果能够把函数004CC450的返回值写死为1,那么就一举成功了。
3. 更多精彩请看下一篇文章:《
急速破解所有版本Sublime_text(Win/Linux/32/64)》,敬请期待!
各位要是等不及的话,就先到个人的博客上看这篇文件:
ST急速破解(Win/Linux)
[课程]Android-CTF解题方法汇总!