首页
社区
课程
招聘
[原创]急速破解sublime_text所有版本(2.xx/3.xx/Win/Linux/32/64)
发表于: 2013-5-22 12:03 29052

[原创]急速破解sublime_text所有版本(2.xx/3.xx/Win/Linux/32/64)

2013-5-22 12:03
29052
[摘要]
    接上一篇文章:《Sublime_text注册码验证分析》,已经定位到关键函数004CC450
    这一篇文章是对函数004CC450的分析和实现对sublime_text所有版本的急速破解(十分钟可以把所有版本搞定)。
    这一篇首先是以sublime_text_2.0.1_Build2217进行说明,然后推广到所有版本。


[准备工具]

1.        OllyDBG(人间神器,动态调试)
2.        IDA(静态反汇编)
3.        可以进行正则表达式搜索的编辑器,如Vim, npp, sublime_text, ultra_editor等
4.        十六进制编辑器,如WinHex等

[分析过程]
用OllyDbg加载sublime_text.exe,然后Ctrl+G定位到004CC450行。
稍微往下翻到函数返回的位置:004CC775


看到上图中加阴影的那一行,把这一行改为(按空格键进行修改)
                mov         al, 0x1
然后在OllyDbg中右键>>复制到可执行文件>>所有修改>>再右键>>保存文件,随便命个名,比如sublime_text_crack.exe, 保存。
最后关闭OllyDBG,把刚才保存的sublime_text_crack.exe复制到sublime_text目录下并运行。看看是不是完美破解了。(你再也不需要wanz的注册码啦!)



[经验教训]
1.        刚才的破解是在OD中先定位到函数004CC450,然后修改返回值为1。
这个过程并不通用。但是这个函数非常漂亮。
用IDA加载到这一段,然后F5可以看到这个C函数


2.        在OD中定位到函数004CC450,稍微往下翻,看到大量的  je…cmp…je…cmp…je…cmp…je...cmp...
这就是特征了,我们下面就以这个为特征进行通用的急速破解

[通用破解过程]
1.        用OllyDBG加载sublime_text.exe,把反汇编出的文字全部复制出来,粘贴到文件st2.asm中。(在Win7-64位下,要用IDA代替这一步; 在Linux系统下,要用objdump –d sublime_text  > st2.asm)
2.        用编辑器(Vim等)打开st2.asm,搜索正则表达式(.*\<je\>.*\n.*\<cmp\>.*\n){8,}
3.        在搜到的位置稍微往下翻,找到mov al,bl语句,并记录下附近的几个二进制串:8B4C24788AC35B
4.        用WinHex打开sublime_text.exe, 搜索二进制串:8B4C24788AC35B
把8AC3改为B001
另存!
5.        再一次破解成功。
6.        上面的五步适用于所有windows32版本的sublime_text, 由于64位windows系统下不能用OllyDBG,只能转而用IDA代替第一步。
7.        Sublime_text_3xxx版本需要把函数返回值改为0(!!程序本来如此),即xor eax, eax, 即二进制代码33C0

[效果图]
ST-2217-win32

ST-3008-win32

ST-3033-Linux32


另见个人博客:Apneng.Net

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 5
支持
分享
最新回复 (29)
雪    币: 143
活跃值: (263)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
2
支持,另外 这个软件 是免费的吧
2013-5-22 12:34
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
sublime_text_2xx可以免费试用,但在保存文件的时候经常弹出邀请注册的对话框,
sublime_text_3Beta版则只对已注册用户试用,没有注册码根本打不开软件。
2013-5-22 14:04
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
概念上应该不是免费软件
2013-5-22 14:05
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
sublime_text_3033 for Linux 被爆破
没有人兴奋吗?
2013-5-23 21:15
0
雪    币: 195
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
对中文的支持实在太差、等待完善中。。。
2013-5-23 21:25
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
在ST3的开发中好像还是没考虑东亚语言的问题,
好在可以用插件弥补这个问题,ConverToUTF8基本满足要求。
2013-5-23 21:36
0
雪    币: 1491
活跃值: (975)
能力值: (RANK:860 )
在线值:
发帖
回帖
粉丝
8
确实不支持中文,很难受
2013-5-24 07:24
0
雪    币: 3341
活跃值: (1672)
能力值: ( LV6,RANK:93 )
在线值:
发帖
回帖
粉丝
9
还是少用些破解软件吧,提升版权意识,编辑器用emacs多好,终生伴侣!
2013-5-24 08:52
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
说的极是,等哪天涨工资了一定买个License
2013-5-24 09:51
0
雪    币: 1028
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
教程应该做得有知识含量,而不是教人这一步跳到哪下一步跳到哪。建议楼主下次可以把思路写出来,而不是光光写简单的步骤。
2013-5-24 10:33
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
多谢指点

在我的上一篇文章(本文开头提到了):Sublime_text注册码验证分析,有分析过程。通过对话框关键字,找到了汇编代码的关键段和提出了初步的爆破方案。

这一篇的目的重在总结上一篇的分析过程,找到通用的、适用于各个版本(Win or Linux, 32 or 64)的快速爆破方案。(我想应该可以把这里的爆破方法写成脚本,但是我现在还不知道怎么写)。
可能在这一篇里,我的分析不到位,我在下面把过程再整理一下。

多谢指点
2013-5-24 13:05
0
雪    币: 239
活跃值: (12)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
13
这个编辑器确实不错。楼主的破解思路也很犀利。学习了。
2013-5-24 17:52
0
雪    币: 1028
活跃值: (110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
加油!支持原创!
2013-5-24 23:15
0
雪    币: 437
活跃值: (78)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
楼主不错,支持一下
2013-5-25 09:01
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
16
今天重新说明一遍通用破解的思路(望版主加精啊
【通用破解思路】
1.  【原理】sublime_text程序内部校验注册码过程是计算字符串,算出来后与一系列整数做比较,如果有一个相等就不行。
反汇编出来后是这样:

用IDA反编译出来是这样:


所以这里就可以直接改这段函数的返回值,实现暴力破解。(ST2是改为mov al, 0x1, ST3是改为xor eax,eax)
2.  用OllyDBG或objdump 把源程序反汇编出来,在反汇编代码中搜索正则表达式:
      (.*\<j[ez]\>.*\n.*\<cmp\>.*\n){8,}
3. 在刚才找到的位置向下找到函数返回点,并且找到mov  al, bl。这里就是将被修改的地方。

4. 记录下mov  al, bl附近的二进制串,用编辑器打开sublime可执行程序,搜索二进制串。
  把8AC3改为B001, 保存即可。
(ST3则是,把89F0改为33C0,即xor eax, eax)

[突然想到怎么把这个过程写成脚本了,正确下周写出来]
2013-5-25 11:14
0
雪    币: 85
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
多谢分享!!!!
2013-5-26 01:44
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
感谢楼主分享,学习ING
2013-5-26 14:11
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
谢谢楼主分享
2013-6-1 16:37
0
雪    币: 238
活跃值: (196)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
感谢楼主无私分享
2013-6-1 23:08
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
21
sublime_text注册机已写成,在windows系统上可以破解32、64位的各个版本(st_v2xx, st_v3xx)。Linux上可用的注册机正在编写。
2013-6-2 09:55
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
Sublime Text 3 Win64 Stable Build 3047的特征码
XX XX 48 8B 4D 07 48 33  CC E8 22 CA 04 00 48 81
C4 D8 00 00 00 41 5F 41  5E 41 5D 41 5C 5F 5E 5B
Sublime Text 3 Win64 Dev Build 3046的特征码
XX XX 48 8B 4D 07 48 33  CC E8 6E BD 04 00 48 81
C4 D8 00 00 00 41 5F 41  5E 41 5D 41 5C 5F 5E 5B
修改XX XX为33 C0即可
2013-7-4 12:14
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
23
是的,特征码非常明显。

但是这样做不太好吧,要是出了build 3048是不是要再找一遍特征码?

目前我的程序是在二进制文件中用正则式匹配出各判断语句,然后定位到函数的返回值。
2013-7-5 17:36
0
雪    币: 93944
活跃值: (200219)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
24
Thanks for share.
2013-7-5 17:41
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
就是因为64位用ida反汇编后你那个正则在sublime里面似乎没效果所以我才把特征码放这里
一般而言如果源代码这一块没有大的改动的话汇编代码也不应该有啥变化的
2013-7-5 21:18
0
游客
登录 | 注册 方可回帖
返回
//