安全中国首页 > 文章中心 > 其他平台
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

谈谈mac机器和Sun的解密

更新时间:2007-9-28 0:31:38
责任编辑:池天
热 点:

1、开篇
本人研究解密已经有10来年了,从未间断,可一直没有什么长进,
除了当年在DOS下脱个壳,解密个水浒1,什么三国1之类。看看
周围的人都在搞什么.net,java之类,NE,PE,PPC,asm之类,大家
都在出书,什么大全,那个秘诀之类,感觉自己已经落后了许多,
Windows已经被大家玩烂了,什么壳估计也存不了1年,什么狗2年
也要升级,关键是有系统级调试工具,而且资料也很齐全,执行文件格式
等相当齐全。我就把以前看过的一些资料整理一下,加上自己的一点
理解拿出来,让大家也熟悉其它的系统。先谈一下MAC吧,如果说错了
欢迎跟贴指正。
2、MAC就是苹果机,现在可能是昨日黄花了,没办法他是一个封闭的操作系统
熟悉他必须有苹果机,一般的新机都要1W,二手机都要5K,而且软件多数
都是正版,一套上W,这也限制了它的普及以及国内应用,如果向深入研究
当然最好有一部MAC,当然是废话了。
3、苹果机的调试工具一般都是收费的,而且还需要两台,我可没有多余$,买一台
已经让老婆骂了(//sigh)。所以就只好用那个破macsbug了,这个工具我稍后讲
先讲一下我破mac的一般流程,用我的PC(Win2K)没办法,还是Win2k的软件多,
先讲一下静态破解的吧
PC上面安装PC MACLAN,和苹果机网络共享的软件,可以方便存取MAC上的文件
比如有一个**软件(说了要被起诉的哦)
执行无狗就弹出对话框然后退出,有狗才能正常运行,(这是废话一堆)
用IDA4。30正式版本,btw demo还不行,不能反编译PPC格式,打开这个执行文件,
seg000:00010168 .ExitToShell:                           # CODE XREF: sub_128568+B0p
seg000:00010168                                         # sub_144828+80p ...
seg000:00010168 
seg000:00010168 .set arg_14,  0x14
seg000:00010168 
seg000:00010168                 lwz     r12, TC_ExitToShell # ExitToShell
seg000:0001016C                 stw     rtoc, arg_14(sp)
seg000:00010170                 lwz     r0, 0(r12)
seg000:00010174                 lwz     rtoc, 4(r12)
seg000:00010178                 mtctr   r0
seg000:0001017C                 bctr
seg000:0001017C # End of function .ExitToShell
退出一般都调用ExitToShell函数就和WIndows调用CloseWindow...只类差不多
那么看那个地方调用了呢
sub_128568
sub_144828
sub_16ea98
....
....
总共有7处,不多,一处处修改
seg000:00128618 loc_128618:                             # CODE XREF: sub_128568+84j
seg000:00128618                 bl      .ExitToShell
seg000:0012861C                 lwz     rtoc, 0x40+var_2C(sp)
找到类似上面的地方把
bl      .ExitToShell
替换成60000000 就是NOP了,当你改到001809C8这个地方,哦程序终于不退出了,但是那个
讨厌的对话框还在,

seg000:001809BC 
seg000:001809BC                 mflr    r0
seg000:001809C0                 stw     r0, arg_8(sp)
seg000:001809C4                 stwu    sp, var_38(sp)
seg000:001809C8                 bl      .ExitToShell
seg000:001809CC                 lwz     rtoc, 0x38+var_24(sp)
seg000:001809D0                 lwz     r0, 0x38+arg_8(sp)
seg000:001809D4                 addic   sp, sp, 0x38
seg000:001809D8                 mtlr    r0
seg000:001809DC                 blr
那还要检查哪里调用了001809BC,一看是下面的
-------------------------
seg000:0012CDE0                 cmplw   cr1, r29, r31
seg000:0012CDE4                 bne     cr1, loc_12CE04 # 检查狗
seg000:0012CDE4                                         # 
seg000:0012CDE8                 mr      r3, r31
seg000:0012CDEC                 li      r4, 1
seg000:0012CDF0                 bl      sub_12CB58 对话框
seg000:0012CDF4                 nop
seg000:0012CDF8                 bl      sub_1809BC 退出
seg000:0012CDFC                 nop
seg000:0012CE00                 b       loc_12CE48
seg000:0012CE04 # 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪?
seg000:0012CE04 
seg000:0012CE04 loc_12CE04:                             # CODE XREF: seg000:0012CDDCj
seg000:0012CE04                                         # seg000:0012CDE4j
seg000:0012CE04                 cmpwi   r30, 0x3E9
seg000:0012CE08                 bne     loc_12CE30
seg000:0012CE0C                 cmplw   cr1, r29, r31
seg000:0012CE10                 bne     cr1, loc_12CE30
seg000:0012CE14                 mr      r3, r31
seg000:0012CE18                 li      r4, 1
seg000:0012CE1C                 bl      sub_12CB58  对话框
seg000:0012CE20                 nop
seg000:0012CE24                 bl      sub_1809BC 退出
seg000:0012CE28                 nop
讲到这里,大家就知道了把0012CDF0,0012CDF8,0012CE1C,0012CE24都修改为NOP就OK了
现在程序能够进入并且能够执行大部分的功能了。
其实就和PC里面的断点原理差不多,而且苹果机一般都没有壳,所以作起来相对容易一些
当然也看你对系统的熟悉程度了,如果大家喜欢,我就接着写。

1 2 下一页

 
相关文章
一日一文章
 
一日一软件
一日一动画