首页 > RE > Mac OS X上用Hopper逆向Dash v3.1.1过程分析

Mac OS X上用Hopper逆向Dash v3.1.1过程分析

  版权申明:本文只作研究学习使用,建议大家支持正版,共同维护程序员兄弟的利益!
  自从玩上了Hopper之后,就一发不可收拾,昨天分析了Dash V2.2.6(详见《Mac OS X上用Hopper逆向Dash v2.2.6过程分析》),今天就拿最新版的Dash开刀啦。
  这次就不赘述去掉8s的时间等待的步骤啦,这次是轻车熟路的去掉了。因为V2.2.6有二进制的校验,相关类是NPReceiptVerification,所以这次我又小心的搜索了一下,发现这次又去掉了,所以就不用担心了。用Hopper把修改后的文件导出来覆盖回去。点击运行却出现了下面的弹窗:
弹窗
  这个弹窗的上面的意思是代码没有签名之类的,只要点击了确定之后不影响其他的功能使用,但是每次打开都点击确定,看起来也是很不爽的。不管他的内容是啥!只要是文字就可以作为一个突破口,但是我用Hopper却没有搜索到,这是怎么回事?
  我想了想只要是程序弹出的,就一定在程序里面,我就全局搜一下试试
grep搜索
  原来不在Dash执行文件中,在Sparkle.framework里面,那么就打开这个framework,进行分析吧。
  果然找到了
0000000000038380 dq ___CFConstantStringClassReference, 0x7c8, 0x27fca, 0x16 ; XREF=-[SUUpdater initForBundle:]+583, -[SUUpdater initForBundle:]+631
  原来在[SUUpdater initForBundle:]方法里面,直接定位到这儿,分析这个方法:
代码1
代码2
代码3
  经过上面的分析,发现在下面两处有跳转
000000000001eb79 jne 0x1ebba
000000000001eb7d je 0x1ebba
  但是是哪一个跳转导致了弹窗的弹出呢?我现在汇编指令除了认识je jne之外,其他还是看不懂的,不敢贸然行事,这个只能借助lldb来验证一下啦。说下思路:我分别在这两个位置都打上点,看看是不是都经过?如果都经过的话,证明我的猜想都是对的。
lldb
  根据ASLR偏移来算出内存的地址打上点
断点
  证明猜想之后,就把000000000001eb7d处的je 改成jne ,然后把库导出来,替换进去。
  打开,搞定啦!

  1. 还没有评论
评论提交中, 请稍候...

留言


可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks