首页
社区
课程
招聘
[原创]10分钟破解sublime text 3059/3061全部版本
发表于: 2013-12-24 20:17 16765

[原创]10分钟破解sublime text 3059/3061全部版本

2013-12-24 20:17
16765

1. 准备工具

* IDA :强大的反汇编工具,目前最新的可用的版本是6.1, 可以到我的共享下载IDA6.1
* winhex : 强大的十六进制编辑器,为了实现爆破必须有一个可用的十六进制编辑器。额,在这里用Vim确实不方便。可以到我的共享下载winhex 17.2
* sublime text原程序,到官网下载吧,我推荐下载Protable版,解压后即可用。对MacOS用户,道理是一样的,下载dmg镜像文件后直接解压即可得到名为Sublime Text的可执行程序

2. 体验sublime text,发现突破点

下面我的说明都是以sublime text windows 32位的程序为例进行说明,在其他平台上的表现完全一致。   

打开sublime text程序,相信你已经把准备工作做好了。打开程序后新建文件随便写一些文字,然后狂按Ctrl+S进行保存,这时就会弹出注册对话框。如下图:



看看这个对话框的标题:This is an unregistered copy,这就是我们的突破口。   

下面就开始搞。

3. 分析程序,找到关键位置

- 用IDA加载sublime text可执行程序,你应该知道自己把可执行程序放哪里了。IDA分析程序要正经花些时间,等分析完了按一下Space键,就是按一下空格键。(感觉自己很麻婆)

- 在IDA里找菜单Search-->text(Alt+t), 打开搜索文本对话框,在搜索框内输入This is an,开始搜索,如下图:



- 现在程序跳到了.text:004C3FE2位置,这是一个很关键的函数,咱们对这个函数稍微分析一下,在IDA里面按F5,把汇编程序编译为C程序。
   

   
按F5得到:


   
看到最顶上的if语句了吗?if (byte_788D90) ....     
    这个byte_788D90在源代码里叫做g_valid_license,现在知道这个全局变量有多重要了吧。
下面就要对byte_788D90下手。

- 切到IDA View-A 汇编窗口, 往上滚动屏幕,找到byte_788D90,在byte_788D90上右键,然后选X。打开byte_788D90引用窗口.
   


       看到标记为w的条目,现在我鼠标双击第6行,跳到.text:0049DE29
   


   
   这一段是什么意思呢?    按F5,看到


    这里的意思是byte_788D90的值要根据函数sub_4C35AD而重置
    byte_788D90 = sub_4C35AD() != 0 ? byte_788D90 : 0   
    我们要让这一句失效,就是把and byte_788D90, al改为nop nop nop nop nop nop .  好,现在我们记下**and byte_788D90, al**的位置:0049DE29

- 从上一步我们还看到函数sub_4C35AD也很重要,在源代码里,它的名字叫check_license_file()。   

    这一步我们就动手改函数sub_4C35AD。
    双击call sub_4C35AD,跳到函数里面。然后滚动鼠标往下拉,很快看到大片的这种执行判断的代码:      
   

    相信你已经猜到这里是干什么了。继续往下拉,一直到这个函数的返回位置:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 5
支持
分享
最新回复 (19)
雪    币: 132
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你怎么知道引用里面 是and 而不是 mov
2013-12-24 20:33
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
你是说 and byte_788D90, al 这一句吗?
2013-12-24 20:37
0
雪    币: 132
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
恩 是的  就是这
2013-12-24 20:40
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
在这一句上按F5,得到 : byte_788D90 = sub_4C35AD() != 0 ? byte_788D90 : 0

这个语句的意图就比较明显了,如果sub_4C35AD()返回0,则全局变量byte_788D90被置为0,否则保持原样。

分析Mac的程序的时候我知道了byte_788D90是g_valid_license,就是说在源代码里byte_788D90叫做bool g_valid_license; 所以它被置为0就会导致认证失败。

Edit: 这一句是我分析了很久才想明白的,不是一下就看明白了。
2013-12-24 20:45
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
直接把byte_788D90 置为 1 最好了
2013-12-24 20:48
0
雪    币: 132
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不是 按X 不是有那么多调用列表吗? 你怎么知道是 AND 那一条呢? 二不是 MOV呢,你是每条都看过去的吗?还是有规则
2013-12-24 21:08
0
雪    币: 645
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
好帖子 图文并茂 支持下
2013-12-24 21:08
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
有写操作的总是重要,通过我自己的分析知道前两个用在注册对话框,第三个写用在启动的时候check,其他的写操作基本上是初始化为0。
上面的帖子没体现出分析过程,实在不好意思。
你动手试一下就差不多知道了
2013-12-24 21:27
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
多谢〜
2013-12-24 21:30
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
先支持楼主一下.
另外,再问一下这玩意在linux下很好用吗,VIM我也不喜欢,eclipse用起来也感觉不顺手.
其实就是想找一个在linux能同时打开多个文件,并有代码自动提示的编辑器.
2013-12-24 22:08
0
雪    币: 132
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
哦对了计算文件偏移,你根本不需要手工计算呢。
EDIT-PATCH。-Change bytes
就可以看到文件偏移了 当然了你可以直接在IDA修改 换句话说 既然知道了指令HEX,根本不需要WINHEX IDA 修改下就好了

如果不知到指令HEX的 就用OD
这个偏移地址 -0x400 然后到OD里面 选择模块 接着 CTRL+G 然后 输入 基地+算出来的偏移 =IDA 汇编的地方了

你就能看到你要修改代码的地方了

这个地方 用OD 修改汇编 简单多了 直接 MOV $ ,1 得了

然后补丁下 保存下就好了

用我的方法你又能节约几分钟了
2013-12-24 22:40
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
13
sublime在Linux下也很好用,主要是对中文支持差一些,但是用了ConterToUTF8插件后就基本没问题了。

至于Vim,自从装了neocomplete,简直太爽了,代码自动补全简直能比上很好用的IDE。我还是更爱Vim,而且还不花钱。
2013-12-24 22:50
0
雪    币: 95
活跃值: (85)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
14
学习了 ,今天又长进不少。

上面说的又是计算偏移地址,又是用winhex改代码,正是让我头疼的地方。原来IDA这么强大啊!

真心感谢指点
2013-12-24 22:53
0
雪    币: 500
活跃值: (970)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
图文并茂,讲解很详细,感谢
2013-12-24 23:06
0
雪    币: 108
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
不错,明天下一个也给破了
2013-12-24 23:37
0
雪    币: 42
活跃值: (196)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
必须支持 我看的都是OD破解 总算能看到一篇IDA破解的文章了
2014-2-9 22:18
0
雪    币: 71
活跃值: (58)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
不错~~~~~
2014-2-9 22:58
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
mark,学习下楼主的方法
2014-2-14 21:25
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
谢谢分享!!学习了
2014-8-10 12:09
0
游客
登录 | 注册 方可回帖
返回
//