破解了下TextMate

破解了下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 <[email protected]>

Date: 2011-06-12 Sun

HTML generated by org-mode 6.33x in emacs 23

你可能感兴趣的:(破解了下TextMate)