吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 24141|回复: 173
收起左侧

[MacOS逆向] 超级右键家族系列软件激活(iRightMouse、iShot)

    [复制链接]
Soft98 发表于 2023-2-19 16:50
本帖最后由 Soft98 于 2023-7-27 07:12 编辑

超级右键家族系列软件激活

0x00 前言

Better365官网:https://www.better365.cn/

该系列软件目前有两个付费软件是超级右键(iRightMouse)和iShot,两款软件都很好用,希望大家有条件的可以去支持正版。

0x01 定位关键点

软件默认会在界面有订购的字样,已经购买的用户可以进行恢复购买,我们可以通过这个地方抓取恢复购买的链接,也就是关键请求。

image-20230216174740996.png

image-20230216175322483.png

获取到关键请求之后就用hopper打开iRightMouse,在字符串中搜索

image-20230216175505724.png

查看引用,可以定位到[ApplePurchaseManager verifyPurchaseWithPaymentTransaction:isTestServer:Compl:]方法

image-20230216175655283.png

这个里面就是发送请求验证的逻辑了,一般下面这种情况,红框中的就是对请求返回值处理的回调函数,这里是函数名符号应该是被去掉了,所以是sub_100002aa4

image-20230216175952062.png

双击进去之后看到函数内容,就可以看到重点,一个是对status进行判断,一个是取receipt的内容进行了一些操作和判断

image-20230216180143424.png

关键就在于receipt的内容,而判断的关键在于rax的值,可以看到rax判断过了之后直接就加密写入本地了,那么关键就在于sub_10001e4ec函数了。

image-20230216180546928.png

双击进去可以看到这个函数又取了in_appexpires_date_ms

image-20230216180923939.png

结合请求的返回值看,可以得出上面的关键字的所属位置关系,当然你要是从逆向伪代码中分析也能分析出来.

{
  "status":0,
  "receipt":{
    "in_app":[
      "expires_date_ms":"1672000000000"
    ]
  }
}

0x02 激活思路

  • 直接在抓包时修改返回值,将expires_date_ms修改为你想要的到期时间戳即可
  • hook软件将json数据转换为Objective-C对象的函数,对返回数据进行修改
    • 直接将自己的json数据转换为objc对象返回(可以参考Typora Crack中的hook代码)
    • 或者修改部分关键值(此文章采取该方法)

0x03 iShot不同点

iShot在激活判断时有一些不同,可能是加了新老软件的兼容,如果expires_date_ms不存在时,会去判断product_idpurchase_date_ms

image-20230216182810394.png

iShot的关键参数如下:

{
  "status":0,
  "receipt":{
    "in_app":[
      "expires_date_ms":"1672000000000",
      "product_id":"ishotfeixuqidingyue20220212",
      "purchase_date_ms":"1672000000000"
    ]
  }
}

0x04 hook

这里有一些坑就是Objective-C中有些对象是只读形式,需要先转换为可读写的对象,才能进行替换,大家在编写时可以通过在网上搜索找到答案。

const objectForKeyedSubscript1 = ObjC.classes.NSJSONSerialization['+ JSONObjectWithData:options:error:'];
var flag1;
Interceptor.attach(objectForKeyedSubscript1.implementation,{
    onLeave(retval){
        let data = ObjC.Object(retval);
        let key_receipt = ObjC.classes.NSString.stringWithString_('receipt'); 
        let receipt = data.objectForKeyedSubscript_(key_receipt);
        let key_in_app = ObjC.classes.NSString.stringWithString_('in_app'); 
        let key_expires_date_ms = ObjC.classes.NSString.stringWithString_('expires_date_ms');
        let key_product_id = ObjC.classes.NSString.stringWithString_('product_id');
        let data_product_id = ObjC.classes.NSString.stringWithString_('ishotfeixuqidingyue20220212');
        let key_purchase_date_ms = ObjC.classes.NSString.stringWithString_('purchase_date_ms');
        let dict = ObjC.classes.NSMutableDictionary.alloc().init();
        dict.setObject_forKey_(9999999999999,key_expires_date_ms);
        dict.setObject_forKey_(9999999999999,key_purchase_date_ms);
        dict.setObject_forKey_(data_product_id,key_product_id);
        let info_array = ObjC.classes.NSMutableArray.alloc().init();
        info_array.addObject_(dict);
        let receipt1 = receipt.mutableCopy();
        receipt1.setObject_forKey_(info_array,key_in_app);
        let replace_data = data.mutableCopy();
        replace_data.setObject_forKey_(receipt1,key_receipt);
        retval.replace(replace_data);
        console.log("Crack Success!")
    }
})

0x05 参考

免费评分

参与人数 51威望 +2 吾爱币 +144 热心值 +42 收起 理由
舞飞凌风 + 1 + 1 技术贴,点赞!不过很早就入正了他们家几乎所以软件,确实很好用
eric + 1 + 1 谢谢@Thanks!
深呼吸啊 + 1 + 1 我很赞同!
b12312312 + 1 + 1 热心回复!
gao204 + 1 + 1 用心讨论,共获提升!
imnear + 1 + 1 用心讨论,共获提升!
MemorySky + 1 谢谢@Thanks!
leaf0125 + 1 + 1 谢谢@Thanks!
lpcboss123 + 1 + 1 谢谢@Thanks!
austinfree + 1 + 1 谢谢@Thanks!
mafei3709 + 1 + 1 我很赞同!
xiaominga + 1 谢谢@Thanks!
wuyangrong + 1 + 1 谢谢@Thanks!
Qweicai + 1 我很赞同!
yinee + 1 我很赞同!
DawnBoy02 + 1 谢谢@Thanks!
ruiw170 + 1 热心回复!
a22488 + 1 + 1 我很赞同!
4nfu + 1 谢谢@Thanks!
w516258928 + 1 热心回复!
obitosec + 1 热心回复!
yanecc + 1 + 1 热心回复!
Ouyang520 + 1 用心讨论,共获提升!
Sucan + 1 + 1 我很赞同!
叹丶 + 1 + 1 谢谢@Thanks!
starh + 1 谢谢@Thanks!
WAPJ_0214 + 1 + 1 我很赞同!
zk0017 + 1 + 1 我很赞同!
bj201809 + 1 谢谢分享
小泊公 + 1 谢谢@Thanks!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
m1n9yu3 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gjdjjwzx + 1 + 1 热心回复!
1MajorTom1 + 1 热心回复!
zhengsg5 + 1 谢谢@Thanks!
Hmily + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
吾恋兮不知 + 1 + 1 用心讨论,共获提升!
hucger + 1 + 1 热心回复!
yp17792351859 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
crazy1989 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
qiangq233 + 1 + 1 谢谢@Thanks!
ysy2001 + 1 + 1 谢谢@Thanks!
zhangxiaoxiao + 1 用心讨论,共获提升!
lfm333 + 1 + 1 谢谢@Thanks!
xxxlsy + 1 + 1 热心回复!
tunis + 1 + 1 用心讨论,共获提升!
odmin + 1 我很赞同!
唐小样儿 + 1 + 1 我很赞同!
prince_cool + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
suko + 1 + 1 我很赞同!
zz08808 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Soft98 发表于 2023-2-19 17:30
我是一只小小 发表于 2023-2-19 17:23
我天,虽然没成品,但也点一个,这个我在tnt好像见过破解得

因为我使用的是frida hook的方式,所以没有成品这一说,hook代码某种意义上也算是“成品”了,只要会点点frida脚本在macos上的注入就可以了。
imosx 发表于 2023-2-20 14:40
odmin 发表于 2023-2-19 18:11
我是一只小小 发表于 2023-2-19 17:23
我天,虽然没成品,但也点一个,这个我在tnt好像见过破解得
lyc0 发表于 2023-2-19 18:59
感谢分享!
gcode 发表于 2023-2-19 17:56
感谢楼主分享
 楼主| Soft98 发表于 2023-2-19 17:47
我是一只小小 发表于 2023-2-19 17:35
,https://postimg.cc/9R6DT3L4,没事我就是说说,我有破解的

嗯嗯,这个破解不难,当时也是担心破解版后门啥的,就自己搞了一下。
 楼主| Soft98 发表于 2023-2-19 18:36
odmin 发表于 2023-2-19 18:11
由于未知原因出错,需要从App Store重新下载

App Store下载就行,选择不付费的那个
我是一只小小 发表于 2023-2-19 17:35
Soft98 发表于 2023-2-19 17:30
因为我使用的是frida hook的方式,所以没有成品这一说,hook代码某种意义上也算是“成品”了,只要会点点 ...

,https://postimg.cc/9R6DT3L4,没事我就是说说,我有破解的
God-暗影月狐 发表于 2023-2-19 18:58
有成品打包吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-22 10:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表