破解了下TextMate

参考这个下面的二:

http://blog.csdn.net/xf51357/article/details/3322026

其实也没怎么用上。千辛万苦下了个IDA Pro在上十几m的文件上就工作不能, 所以还就是nm,人肉过滤,大致先找出可疑的地方,然后一点点辛辛苦苦在 gdb里面disassamber,nexti,一路下去。

我这的TextMate版本是Version 1.5.10 (1631),还是先处理上面那个链接提 到的东东,把偏移0x5deb77的两个字节89 c8改成b0 01就行了。但是这样它还 是会跳出对话框,说是序列号过期还是什么的,反正是洋文,我也没看明白。 费了九牛二虎之力大体确定在

00048e18        calll   0x002a0539      ; symbol stub for: __ZSt4findIPKiiET_S2_S2_RKT0_
00048e1d        cmpl    %eax,%esi
00048e1f        je      0x00049030
00048e25        movl    0x0024168f(%ebx),%eax
00048e2b        movl    %eax,0x04(%esp)
00048e2f        movl    0x00242f77(%ebx),%eax
00048e35        movl    %eax,(%esp)
00048e38        calll   0x002a0d0e      ; symbol stub for: _objc_msgSend
00048e3d        movl    %eax,%edi
00048e3f        leal    0x00215743(%ebx),%eax
00048e45        movl    %eax,0x08(%esp)
00048e49        movl    0x0024170f(%ebx),%eax
00048e4f        movl    %eax,0x04(%esp)
00048e53        movl    0x00242f77(%ebx),%eax
00048e59        movl    %eax,(%esp)

单步了一下,可以确定,0x48e1f这里还不会弹出对话框,并且这里也不会跳 转倒je那个参数0x00049030,在下面的某个地方,弹出对话框,声称序列号有 问题了,那么可以合理的预期,判断这个序列号是不是对的分支就在这里。试 了试:

(gdb) set $eip=0x00049030
(gdb) c

果然就可以用了。那么就考虑让它总是执行这个je跳转就行了.

(gdb) x/x 0x00048e1d
0x48e1d <-[AppDelegate applicationDidBecomeActive:]+671>:   0x840fc639

这个 39 c6(注意字节序),就是cmpl %eax,%esi了,我把它改成cmpl %eax,%eax,那么它自然就会永远执行je跳转了。这个指令的代码就是36 c0.那 么算一算,这个指令的偏移就是在0x5dee1d附近,过去一改,就行了。

Author: qingant <qingant@gmail.com>

Date: 2011-06-12 Sun

HTML generated by org-mode 6.33x in emacs 23

posted on 2011-08-06 18:28 qingant 阅读(3498) 评论(1)  编辑 收藏 引用

评论

# re: 破解了下TextMate 2011-08-08 15:53 他她女鞋

没有什么具体作用。  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


导航

<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

统计

常用链接

留言簿(3)

随笔档案

相册

最新随笔

搜索

最新随笔

最新评论

阅读排行榜

评论排行榜