Dash 6.4(ARM&X86) crack

Dash 6.4(ARM&X86) crack

ARM

运行后会提示试用天数剩余,试用期为30天。

Setting中的License中可以选择打开license file激活,选择非法license file,提示“Invalid License”。

我们从license file入手。

搜索关键词License、open、file、activate、Invalid License等。

获取到关键函数:-[DHInApp processLicenseFile:]

Untitled

以 ’sub_100085ED4((__int64)v5, v6) == (void *)26’作为判断条件

sub_100085ed4函数获取全局变量qword_100344998字符串长度,若不为0则返回该字符串长度,如为0并且全局变量qword_100344990字符串不为“fail”,则解析打开的license file,但是对内容紧紧是比较判断,并没有进行任何运算。

Untitled

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

Untitled

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

1
2
3
4
5
6
7
8
9
10
11
objc_msgSend_sharedInApp(&OBJC_CLASS___DHInApp, a2);
if ( objc_msgSend_length((void *)qword_100344998, v2) )
return objc_msgSend_length((void *)qword_100344998, v3);

__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

1
2
3
4
5
6
7
8
9
qword_100344998 = objc_retain(CFSTR("com.barebones.textwrangler"));
if ( objc_msgSend_length((void *)qword_100344998, v2) )
return objc_msgSend_length((void *)qword_100344998, v3);

__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

ADRL指令:

__text:0000000100085EF4 ADRL X0, cfstr_ComBarebonesTe ; id

转换为:

__text:0000000100085EF4 ADRP x23,#0x238000

__text:0000000100085EF8 add x0, x0, #0x1a8

将pc低12位清零,加上12位清零的偏移量,再加上目标地址的低12位得到目标地址。

X86_64

思路相同

patch指令如下:

1
2
3
4
5
6
7
8
9
10
11
12
+[DHInApp sharedInApp](&OBJC_CLASS___DHInApp, "sharedInApp");
if ( objc_msgSend(qword_1003B6F08, "length") )
return objc_msgSend(qword_1003B6F08, "length");
__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
1
2
3
4
5
6
7
8
9
10
11
qword_1003B6F08 = objc_retain(CFSTR("com.barebones.textwrangler"));
if ( objc_msgSend(qword_1003B6F08, "length") )
return objc_msgSend(qword_1003B6F08, "length");
__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

下载

https://www.aliyundrive.com/s/72KoDAR9f8f

提取码:4c4i