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

Mac OS X上用Hopper逆向Dash v2.2.6过程分析

  版权申明1:本文只作研究学习使用,建议大家支持正版,共同维护程序员兄弟的利益!
  版权申明2:纯粹是个笔记,参考教程在这儿《Mac OS X上逆向Dash v2.2.0过程分析》,娱乐为主。

寻找突破口

  在每次用Dash的时候不定时的会有个8s的时间等待。
寻找突破口
  发现这个延迟界面出现的时机有:
1. 刚启动Dash会出这个
2. 搜索几次以后定期就会出这个
3. new 一个新的tab时

分析程序找到关键位置

  那个教程找了好久,我来找的话,就直接拿来了,以看为主。
  搜索“the page will load” search,发现找到 DHPinKy 其api有 +showPinky , +waitTick 这两个地方使用。

00000001002a4eb0         dq         ___CFConstantStringClassReference, 0x7c8, 0x10020872d, 0x1c ; 
XREF=-[DHPinky showPinky]+417, 
-[DHPinky waitTick]+175

  分析showPinky函数:


  在汇编代码中找到对应的这段代码:
找到的代码
mov edx, 0x8 对应的机器码为:BA 08 00 00 00 ,记下,偏移为 000dbdd9 ,我们把 mov edx, 0x8 改为 mov edx, 0x0 ,也就是机器码为 BA 00 00 00 00。
  我是用经典的UltraEdit来修改二进制的,打开直接找到行数,修改就好。

二进制的校验的坑

  Dash使用了二进制的校验,相关类是NPReceiptVerification,我是直接顺手牵羊找到的,不知道楼主花了多长的时间。
NPReceiptVerification有4个api:
+load
+appleRootCertificateData
+systemMACAddress
+appStoreReceiptDictionaryForFile:

看下+load的反编译代码

1.检查 Contents/_MASReceipt/receipt文件是否存在
2.代码检查
SecStaticCodeCreateWithPath()
SecRequirementCreateWithString()
SecStaticCodeCheckValidity()
3.appReceipt,systemMACAddress check
4.bundle id, version ,hash check

教程上说是要改SecStaticCodeCheckValidity() 绕过二进制修改校验

把这里的jne改为je 也就是:在偏移0013aa6a地方把机器码 0F 85 BD 01 00 00 改为 0F 84 BD 01 00 00
试了一下,成功了。
最后就是签名啦,修改binary导致签名不一致导致无法在系统上运行。解决办法是使用自签名证书重新对Dash签名。
不过有点坑的是,这个只能在本机运行,或者是信任签名证书的机器运行。
娱乐结束。

  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