吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3860|回复: 17
上一主题 下一主题
收起左侧

[MacOS逆向] Dash for mac v6.4.0破解

  [复制链接]
跳转到指定楼层
楼主
FancySX 发表于 2023-1-18 15:55 回帖奖励
本帖最后由 FancySX 于 2023-1-18 16:00 编辑

运行后会提示试用天数剩余,试用期为30天。
Setting中的License中可以选择打开license file激活,选择非法license file,提示“Invalid License”。
我们从license file入手。搜索关键词License、open、file、activate、Invalid License等。获取到关键函数:-[DHInApp processLicenseFile:]

以 ’sub_100085ED4((__int64)v5, v6) == (void *)26’作为判断条件sub_100085ed4函数获取全局变量qword_100344998字符串长度,若不为0则返回该字符串长度,如为0并且全局变量qword_100344990字符串不为“fail”,则解析打开的license file,但是对内容紧紧是比较判断,并没有进行任何运算。

最终,版本≥6后,将全局变量qword_100344998赋值为"com.barebones.textwrangler”,并返回字符串长度,我们发现正好是26。

查看对sub_100085ed4函数的引用,基本都是判断结果是否为26,这里想法就是将sub_100085ed4函数永远返回26。



ARM
原代码:
[Objective-C] 纯文本查看 复制代码
objc_msgSend_sharedInApp(&OBJC_CLASS___DHInApp, a2);
if ( objc_msgSend_length((void *)qword_100344998, v2) )
    return objc_msgSend_length((void *)qword_100344998, v3);

[Asm] 纯文本查看 复制代码
__text:0000000100085EF0                 ADRP            X21, #classRef_DHInApp@PAGE
__text:0000000100085EF4                 LDR             X0, [X21,#classRef_DHInApp@PAGEOFF]
__text:0000000100085EF8                 BL              _objc_msgSend$sharedInApp
__text:0000000100085EFC                 ADRP            X23, #qword_100344998@PAGE
__text:0000000100085F00                 LDR             X0, [X23,#qword_100344998@PAGEOFF]
__text:0000000100085F04                 BL              _objc_msgSend$length

patch后代码:
[Objective-C] 纯文本查看 复制代码
qword_100344998 = objc_retain(CFSTR("com.barebones.textwrangler"));
if ( objc_msgSend_length((void *)qword_100344998, v2) )
    return objc_msgSend_length((void *)qword_100344998, v3);

[Asm] 纯文本查看 复制代码
__text:0000000100085EF0                 ADRP            X23, #qword_100344998@PAGE
__text:0000000100085EF4                 ADRL            X0, cfstr_ComBarebonesTe ; id
__text:0000000100085EFC                 BL              _objc_retain
__text:0000000100085F00                 STR             X0, [X23,#qword_100344998@PAGEOFF]
__text:0000000100085F04                 BL              _objc_msgSend$length


关于ADRP指令:
ADRL指令:
__text:0000000100085EF4 ADRL X0, cfstr_ComBarebonesTe ; id
等价为:
__text:0000000100085EF4 ADRP x23,#0x238000
__text:0000000100085EF8 add x0, x0, #0x1a8
将pc低12位清零,加上12位清零的偏移量,再加上目标地址的低12位得到目标地址。

X86

思路相同,直接放patch:

[Objective-C] 纯文本查看 复制代码
+[DHInApp sharedInApp](&OBJC_CLASS___DHInApp, "sharedInApp");
if ( objc_msgSend(qword_1003B6F08, "length") )
    return objc_msgSend(qword_1003B6F08, "length");


[Asm] 纯文本查看 复制代码
__text:00000001000BAB9A                 mov     rdi, cs:classRef_DHInApp ; id
__text:00000001000BABA1                 mov     r13, cs:selRef_sharedInApp
__text:00000001000BABA8                 mov     r14, cs:_objc_msgSend_ptr
__text:00000001000BABAF                 mov     rsi, r13        ; SEL
__text:00000001000BABB2                 call    r14 ; _objc_msgSend
__text:00000001000BABB5                 mov     rdi, cs:qword_1003B6F08 ; id
__text:00000001000BABBC                 mov     r15, cs:selRef_length
__text:00000001000BABC3                 mov     rsi, r15        ; SEL
__text:00000001000BABC6                 call    r14 ; _objc_msgSend


[Asm] 纯文本查看 复制代码
qword_1003B6F08 = objc_retain(CFSTR("com.barebones.textwrangler"));
if ( objc_msgSend(qword_1003B6F08, "length") )
    return objc_msgSend(qword_1003B6F08, "length");

[Asm] 纯文本查看 复制代码
__text:00000001000BAB9A                 lea     rdi, cfstr_ComBarebonesTe ; id
__text:00000001000BABA1                 call    cs:_objc_retain_ptr
__text:00000001000BABA7                 mov     cs:qword_1003B6F08, rax
__text:00000001000BABAE                 mov     r14, cs:_objc_msgSend_ptr
__text:00000001000BABB5                 mov     rdi, cs:qword_1003B6F08 ; id
__text:00000001000BABBC                 mov     r15, cs:selRef_length
__text:00000001000BABC3                 mov     rsi, r15        ; SEL
__text:00000001000BABC6                 call    r14 ; _objc_msgSend



免费评分

参与人数 3威望 +1 吾爱币 +22 热心值 +3 收起 理由
geruger + 1 + 1 谢谢@Thanks!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lingyun011 + 1 + 1 热心回复!

查看全部评分

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

推荐
fenginsc 发表于 2023-1-21 07:04
cn2jp 发表于 2023-1-18 21:37
我听说MacOS的程序一般都不加壳,不知真假,因为到现在我也没有MacPC,555……

macOS平台没有壳这种说法,一般叫固化运行时,混淆校验,暗桩一个不少
推荐
cn2jp 发表于 2023-1-21 09:19
fenginsc 发表于 2023-1-21 07:04
macOS平台没有壳这种说法,一般叫固化运行时,混淆校验,暗桩一个不少

哈哈哈,看来都挺阴的啊
沙发
wikiyc 发表于 2023-1-18 18:52
3#
wzg01 发表于 2023-1-18 21:11
感谢楼主的分享
4#
xjlws555 发表于 2023-1-18 21:14
感谢楼主的分享
5#
jijijiwwwww 发表于 2023-1-18 21:19
感谢楼主的分享
6#
cn2jp 发表于 2023-1-18 21:37
我听说MacOS的程序一般都不加壳,不知真假,因为到现在我也没有MacPC,555……
7#
netpeng 发表于 2023-1-19 00:11
哪天弄个黑苹果玩一玩,感谢分享。
8#
wangfc 发表于 2023-1-19 00:19

感谢楼主的分享
9#
CrushIndex 发表于 2023-1-19 01:14
正好需要,感谢楼主
10#
photocs 发表于 2023-1-19 08:52
谢谢提供思路
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-25 13:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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