优化MacOS下的超级右键2.2.1

查看 129|回复 11
作者:QiuChenly   
优化MacOS下的超级右键2.2.1
Tools
[ol]
  • IDA 8.2 Free
  • 6A 01 58 C3
  • sudo cp /Users/qiuchenly/Downloads/iRightMouse /Applications/iRightMouse.app/Contents/MacOS/iRightMouse && sudo codesign -f -s - --timestamp=none /Applications/iRightMouse.app/Contents/MacOS/iRightMouse
  • jz => jnz; nop(90);
    [/ol]
    0x01 灵根育孕源流出 心性修持大道生
    从AppStore下载的版本如图所示。


    16727307240306.jpg (153.72 KB, 下载次数: 0)
    下载附件
    2023-1-3 16:24 上传

    左下角有一个订购按钮,盲猜订阅后会消失。但这并不是重点。
    0x02 悟彻汇编真妙理 断魔归本合元神
    正如上图所示,肯定要搜字符串"您的试用期还剩下xxx"啊!
    这种想法是错误的。我们看一下代码:


    16727318115160.jpg (874.28 KB, 下载次数: 0)
    下载附件
    2023-1-3 16:24 上传

    函数是顺序执行的,也就是说: 只有没有订阅的用户才会提示这个字符串,如果订阅了会直接不显示。
    这一点我们打开start函数----也就是app入口函数佐证这一点:


    16727320415899.jpg (826.93 KB, 下载次数: 0)
    下载附件
    2023-1-3 16:24 上传

    注意看伪代码228行,我来翻译一下这段代码:
    if(v37){//如果v37的值非0:意思就是v37这个寄存器内有数据
        v38=v37;//意义不明 反编译器的bug
        v39=getUserReceipt().decryptPKCS5:WithPassword(qwordxxxx);//解密用户购买的授权文件
        v42=AESEncryptUtil.dictionaryWithJsonString(v40);//转换为JSON数据给软件读取
        if(v42){//如果数据不为0:指寄存器中存在数据
            byte_10003BDD8 = sub_10001D3D4(v42) != 0;//byte_10003BDD8赋值为1表示注册成功,意思就是sub_10001D3D4()返回值要非0才行.
        }
    }
    if ( byte_10003BDD8 )//如果为1
      {
        objc_msgSend(v3, "removeObjectForKey:", "LeftTime");//删除剩余时间key对应的数据 应该是类似于取消显示
        byte_10003BAA8 = 0;
        goto LABEL_47;//这里直接跳转到启动主程序代码 而不进行后面的剩余时间计算
      }
    想必大家都看得懂了。那么我是怎么知道这里是检查授权的呢?


    16727331827649.jpg (53.56 KB, 下载次数: 0)
    下载附件
    2023-1-3 16:25 上传

    答案很简单,我直接翻开入口函数就发现这段代码了。
    做IOS开发的想必知道receipt这个单词的意思,虽然我对IOS开发一窍不通:这是表示读取Apple用户订阅的有效授权票。
    结合上面说到的跳转,我想你也能猜到这到底代表什么意思了吧!
    那么爆破点在哪里呢?
    0x03 IDA助威征正版 落叶施法灭授权
    即然知道问题在哪里,那么我们就要狠狠的Crack it。
    if ( v37 )
      {
        v38 = v37;
        v39 = objc_msgSend(&OBJC_CLASS___AESEncryptUtil, "decryptPKCS5:WithKey:", v37, qword_10003BDE8);
        v40 = objc_retainAutoreleasedReturnValue(v39);
        objc_release(v38);
        v41 = objc_msgSend(&OBJC_CLASS___AESEncryptUtil, "dictionaryWithJsonString:", v40);
        v42 = objc_retainAutoreleasedReturnValue(v41);
        v43 = v42;
        if ( v42 )
          byte_10003BDD8 = sub_10001D3D4(v42) != 0;
        objc_release(v43);
        objc_release(v40);
        v28 = v115;
      }
    改为
    if ( !v37 )
      {
        v38 = v37;
        nop;
        v40 = objc_retainAutoreleasedReturnValue(v39);
        objc_release(v38);
        nop;
        v42 = objc_retainAutoreleasedReturnValue(v41);
        v43 = v42;//由于nop了赋值函数 这里v41会变成0 也就是v42会变成0 所以要把jz改成jnz强制跳转。
        if ( !v42 )
          byte_10003BDD8 = sub_10001D3D4(v42) != 0;
        objc_release(v43);
        objc_release(v40);
        v28 = v115;
      }


    16727329919354.jpg (1.23 MB, 下载次数: 0)
    下载附件
    2023-1-3 16:25 上传

    也就是如图所示两个夺命连环Call。如果你不nop掉软件会因为null指针崩溃:因为你根本没有授权文件,读到的可不就是null?


    16727331128532.jpg (1.21 MB, 下载次数: 0)
    下载附件
    2023-1-3 16:25 上传

    黄色表示修改后的字节。
    sub_10001D3D4函数改返回值 6a 01 58 c3。


    16727329075137.jpg (1.29 MB, 下载次数: 0)
    下载附件
    2023-1-3 16:25 上传

    改为


    16727329371773.jpg (267.85 KB, 下载次数: 0)
    下载附件
    2023-1-3 16:25 上传

    即可。
    最后别忘了v37也需要反转字节哦!jz改为jnz即可。


    16727335333089.jpg (575.37 KB, 下载次数: 0)
    下载附件
    2023-1-3 16:25 上传

    最后改完之后伪代码如下:


    16727335649197.jpg (172.72 KB, 下载次数: 0)
    下载附件
    2023-1-3 16:25 上传

    最后导出文件,codesign it。


    16727333896088.jpg (120.72 KB, 下载次数: 0)
    下载附件
    2023-1-3 16:25 上传

    打开app:


    16727336102263.jpg (50.78 KB, 下载次数: 0)
    下载附件
    2023-1-3 16:25 上传

    发现左下角的订购按钮已经悄然失踪。并且应该不会有暗桩,因为上面计算时间的代码此时被我强制跳过,也就是走的正版激活版本的流程。
    0x04 九九数完魔灭尽 三三行满道归根
    最后欣赏一下成品:


    16727337749813.jpg (141.4 KB, 下载次数: 0)
    下载附件
    2023-1-3 16:25 上传

    下载次数, 下载附件

  • QiuChenly
    OP
      

    本来看版规说不允许发成品传播 我就不上传成品,但是翻了下同区的帖子都会贴上学习文件,那我也浅浅的贴一个好了:

    iRightMouse.zip
    (201.24 KB, 下载次数: 37)
    2023-1-4 01:15 上传
    点击文件名下载附件
    下载积分: 吾爱币 -1 CB

    替换原文件,然后 codesign重新签名。不会的可以百度。
    付国兵123   

    把安装也分享一个链接网盘,官方还要苹果注册才能下载。
    周爹爹   

    工具在哪下载,大佬
    hewyang   

    装个MacOS就能体验下了
    辉夜年华   

    能给我发下破后的工具么?
    broodwarcnyz   

    怎么下载这个工具,大佬
    qq882011   

    谢谢分享。。。
    suiyu586   

    感谢老哥分享
    宜城小站   

    不管哪个版本
    稳定能用就好
    关键是成品
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部